Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r62853 - in sandbox/xint: boost/xint boost/xint/detail dev dev-ms libs/xint/doc libs/xint/doc/dox libs/xint/example libs/xint/test
From: chad.thecomfychair_at_[hidden]
Date: 2010-06-12 11:54:41


Author: chadnelson
Date: 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
New Revision: 62853
URL: http://svn.boost.org/trac/boost/changeset/62853

Log:
Fifth Boost release. All types are consolidated into a single integer_t
template type. Added Boost.Parameter options to the integer_t type.
Added:
   sandbox/xint/boost/xint/detail/addsubtract.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/addsubtract.cpp
   sandbox/xint/boost/xint/detail/andorxor.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/andorxor.cpp
   sandbox/xint/boost/xint/detail/basic_types_and_includes.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/bitfunctions.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/bitfunctions.cpp
   sandbox/xint/boost/xint/detail/compare.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/compare.cpp
   sandbox/xint/boost/xint/detail/convert.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/convert.cpp
   sandbox/xint/boost/xint/detail/divide.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/gcd.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/gcd.cpp
   sandbox/xint/boost/xint/detail/log2.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/magnitude_manager.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/modular.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/modular.cpp
   sandbox/xint/boost/xint/detail/multiply.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/multiply.cpp
   sandbox/xint/boost/xint/detail/options.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/policies.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/powers.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/powers.cpp
   sandbox/xint/boost/xint/detail/prime.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/prime.cpp
   sandbox/xint/boost/xint/detail/random_by_size.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/randomgen.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/random.cpp
   sandbox/xint/boost/xint/detail/raw_integer.hpp (contents, props changed)
   sandbox/xint/boost/xint/detail/roots.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/roots.cpp
   sandbox/xint/boost/xint/detail/shift.hpp (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/boost/xint/detail/shift.cpp
   sandbox/xint/libs/xint/doc/addsubtract_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/addsubtract_8cpp.html
   sandbox/xint/libs/xint/doc/addsubtract_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/andorxor_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/andorxor_8cpp.html
   sandbox/xint/libs/xint/doc/andorxor_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/basic__types__and__includes_8hpp.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/internals_8hpp.html
   sandbox/xint/libs/xint/doc/basic__types__and__includes_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/bitfunctions_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/bitfunctions_8cpp.html
   sandbox/xint/libs/xint/doc/bitfunctions_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/compare_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/compare_8cpp.html
   sandbox/xint/libs/xint/doc/compare_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/convert_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/convert_8cpp.html
   sandbox/xint/libs/xint/doc/convert_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/divide_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/divide_8cpp.html
   sandbox/xint/libs/xint/doc/divide_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/dox/fixedlength.dox (contents, props changed)
   sandbox/xint/libs/xint/doc/dox/r_whynotx.dox (contents, props changed)
   sandbox/xint/libs/xint/doc/fixedlength.html (contents, props changed)
   sandbox/xint/libs/xint/doc/fixedlength_8dox.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/r__interface_8dox.html
   sandbox/xint/libs/xint/doc/gcd_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/gcd_8cpp.html
   sandbox/xint/libs/xint/doc/gcd_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/log2_8hpp.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html
   sandbox/xint/libs/xint/doc/log2_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/magnitude__manager_8hpp.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html
   sandbox/xint/libs/xint/doc/magnitude__manager_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/modular_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/modular_8cpp.html
   sandbox/xint/libs/xint/doc/modular_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/multiply_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/multiply_8cpp.html
   sandbox/xint/libs/xint/doc/multiply_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1options.html (contents, props changed)
   sandbox/xint/libs/xint/doc/options_8hpp.html (contents, props changed)
   sandbox/xint/libs/xint/doc/options_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/policies_8hpp.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html
   sandbox/xint/libs/xint/doc/policies_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/powers_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/powers_8cpp.html
   sandbox/xint/libs/xint/doc/powers_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/prime_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/prime_8cpp.html
   sandbox/xint/libs/xint/doc/prime_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/r__whynotx.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/r__interface.html
   sandbox/xint/libs/xint/doc/r__whynotx_8dox.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/r__negzero_8dox.html
   sandbox/xint/libs/xint/doc/random__by__size_8hpp.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html
   sandbox/xint/libs/xint/doc/random__by__size_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/randomgen_8hpp.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/bitqueue_8hpp.html
   sandbox/xint/libs/xint/doc/randomgen_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/raw__integer_8hpp.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html
   sandbox/xint/libs/xint/doc/raw__integer_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/roots_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/roots_8cpp.html
   sandbox/xint/libs/xint/doc/roots_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/shift_8hpp.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/shift_8cpp.html
   sandbox/xint/libs/xint/doc/shift_8hpp_source.html (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength.png (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength__base.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength__base.png (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow.png (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow__base.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow__base.png (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure.png (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure__base.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure__base.png (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe.html
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe.png (contents, props changed)
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe__base.html (contents, props changed)
      - copied, changed from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe__base.png (contents, props changed)
Removed:
   sandbox/xint/boost/xint/detail/addsubtract.cpp
   sandbox/xint/boost/xint/detail/andorxor.cpp
   sandbox/xint/boost/xint/detail/bitfunctions.cpp
   sandbox/xint/boost/xint/detail/compare.cpp
   sandbox/xint/boost/xint/detail/convert.cpp
   sandbox/xint/boost/xint/detail/data_t.cpp
   sandbox/xint/boost/xint/detail/divide.cpp
   sandbox/xint/boost/xint/detail/gcd.cpp
   sandbox/xint/boost/xint/detail/modular.cpp
   sandbox/xint/boost/xint/detail/monty.cpp
   sandbox/xint/boost/xint/detail/multiply.cpp
   sandbox/xint/boost/xint/detail/powers.cpp
   sandbox/xint/boost/xint/detail/prime.cpp
   sandbox/xint/boost/xint/detail/random.cpp
   sandbox/xint/boost/xint/detail/roots.cpp
   sandbox/xint/boost/xint/detail/shift.cpp
   sandbox/xint/boost/xint/fixed_integer.hpp
   sandbox/xint/boost/xint/nothrow_integer.hpp
   sandbox/xint/libs/xint/doc/addsubtract_8cpp.html
   sandbox/xint/libs/xint/doc/addsubtract_8cpp_source.html
   sandbox/xint/libs/xint/doc/andorxor_8cpp.html
   sandbox/xint/libs/xint/doc/andorxor_8cpp_source.html
   sandbox/xint/libs/xint/doc/bitfunctions_8cpp.html
   sandbox/xint/libs/xint/doc/bitfunctions_8cpp_source.html
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.png
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer-members.html
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer.html
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer.png
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t.png
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t-members.html
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t.html
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t.png
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4-members.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threc5961e8032f57408bb0726e8442647e9.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4-members.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4-members.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4-members.html
   sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html
   sandbox/xint/libs/xint/doc/compare_8cpp.html
   sandbox/xint/libs/xint/doc/compare_8cpp_source.html
   sandbox/xint/libs/xint/doc/convert_8cpp.html
   sandbox/xint/libs/xint/doc/convert_8cpp_source.html
   sandbox/xint/libs/xint/doc/data__t_8cpp.html
   sandbox/xint/libs/xint/doc/data__t_8cpp_source.html
   sandbox/xint/libs/xint/doc/different__types.html
   sandbox/xint/libs/xint/doc/divide_8cpp.html
   sandbox/xint/libs/xint/doc/divide_8cpp_source.html
   sandbox/xint/libs/xint/doc/dox/fixed_and_variable.dox
   sandbox/xint/libs/xint/doc/fixed__and__variable_8dox.html
   sandbox/xint/libs/xint/doc/fixed__integer_8hpp.html
   sandbox/xint/libs/xint/doc/fixed__integer_8hpp_source.html
   sandbox/xint/libs/xint/doc/functions_0x62.html
   sandbox/xint/libs/xint/doc/functions_0x63.html
   sandbox/xint/libs/xint/doc/functions_0x64.html
   sandbox/xint/libs/xint/doc/functions_0x65.html
   sandbox/xint/libs/xint/doc/functions_0x66.html
   sandbox/xint/libs/xint/doc/functions_0x68.html
   sandbox/xint/libs/xint/doc/functions_0x69.html
   sandbox/xint/libs/xint/doc/functions_0x6d.html
   sandbox/xint/libs/xint/doc/functions_0x6e.html
   sandbox/xint/libs/xint/doc/functions_0x6f.html
   sandbox/xint/libs/xint/doc/functions_0x70.html
   sandbox/xint/libs/xint/doc/functions_0x71.html
   sandbox/xint/libs/xint/doc/functions_0x72.html
   sandbox/xint/libs/xint/doc/functions_0x73.html
   sandbox/xint/libs/xint/doc/functions_0x74.html
   sandbox/xint/libs/xint/doc/gcd_8cpp.html
   sandbox/xint/libs/xint/doc/gcd_8cpp_source.html
   sandbox/xint/libs/xint/doc/modular_8cpp.html
   sandbox/xint/libs/xint/doc/modular_8cpp_source.html
   sandbox/xint/libs/xint/doc/monty_8cpp.html
   sandbox/xint/libs/xint/doc/monty_8cpp_source.html
   sandbox/xint/libs/xint/doc/multiply_8cpp.html
   sandbox/xint/libs/xint/doc/multiply_8cpp_source.html
   sandbox/xint/libs/xint/doc/namespacestd.html
   sandbox/xint/libs/xint/doc/nothrow__integer_8hpp.html
   sandbox/xint/libs/xint/doc/nothrow__integer_8hpp_source.html
   sandbox/xint/libs/xint/doc/pages.html
   sandbox/xint/libs/xint/doc/powers_8cpp.html
   sandbox/xint/libs/xint/doc/powers_8cpp_source.html
   sandbox/xint/libs/xint/doc/prime_8cpp.html
   sandbox/xint/libs/xint/doc/prime_8cpp_source.html
   sandbox/xint/libs/xint/doc/random_8cpp.html
   sandbox/xint/libs/xint/doc/random_8cpp_source.html
   sandbox/xint/libs/xint/doc/roots_8cpp.html
   sandbox/xint/libs/xint/doc/roots_8cpp_source.html
   sandbox/xint/libs/xint/doc/shift_8cpp.html
   sandbox/xint/libs/xint/doc/shift_8cpp_source.html
Text files modified:
   sandbox/xint/boost/xint/detail/addsubtract.hpp | 115
   sandbox/xint/boost/xint/detail/andorxor.hpp | 72
   sandbox/xint/boost/xint/detail/bitfunctions.hpp | 59
   sandbox/xint/boost/xint/detail/compare.hpp | 39
   sandbox/xint/boost/xint/detail/convert.hpp | 151
   sandbox/xint/boost/xint/detail/gcd.hpp | 84
   sandbox/xint/boost/xint/detail/internals.hpp | 675 -----
   sandbox/xint/boost/xint/detail/modular.hpp | 52
   sandbox/xint/boost/xint/detail/monty.hpp | 239 +
   sandbox/xint/boost/xint/detail/multiply.hpp | 65
   sandbox/xint/boost/xint/detail/powers.hpp | 53
   sandbox/xint/boost/xint/detail/prime.hpp | 53
   sandbox/xint/boost/xint/detail/randomgen.hpp | 69
   sandbox/xint/boost/xint/detail/roots.hpp | 27
   sandbox/xint/boost/xint/detail/shift.hpp | 32
   sandbox/xint/boost/xint/integer.hpp | 1639 +++++++++++--
   sandbox/xint/boost/xint/random.hpp | 6
   sandbox/xint/boost/xint/xint.hpp | 6
   sandbox/xint/dev-ms/XInt.vcproj | 186
   sandbox/xint/dev/Docs.project | 3
   sandbox/xint/dev/Example-Exceptions.project | 19
   sandbox/xint/dev/Example-Fibonacci.project | 19
   sandbox/xint/dev/Example-GenPrime.project | 19
   sandbox/xint/dev/XInt.project | 103
   sandbox/xint/libs/xint/doc/acknowledgements.html | 5
   sandbox/xint/libs/xint/doc/acknowledgements_8dox.html | 2
   sandbox/xint/libs/xint/doc/addsubtract_8hpp.html | 10
   sandbox/xint/libs/xint/doc/andorxor_8hpp.html | 10
   sandbox/xint/libs/xint/doc/annotated.html | 16
   sandbox/xint/libs/xint/doc/basic__types__and__includes_8hpp.html | 82
   sandbox/xint/libs/xint/doc/bitfunctions_8hpp.html | 10
   sandbox/xint/libs/xint/doc/bitqueue_8hpp.html | 2
   sandbox/xint/libs/xint/doc/bitqueue_8hpp_source.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1base__divide__t-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1base__divide__t.html | 22
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1default__random__generator-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1default__random__generator.html | 6
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big.html | 2
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t-members.html | 9
   sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t.html | 303 +-
   sandbox/xint/libs/xint/doc/classdisable__boost__rv__ref.html | 6
   sandbox/xint/libs/xint/doc/classes.html | 20
   sandbox/xint/libs/xint/doc/compare_8hpp.html | 10
   sandbox/xint/libs/xint/doc/complexity.html | 2
   sandbox/xint/libs/xint/doc/complexity_8dox.html | 2
   sandbox/xint/libs/xint/doc/convert_8hpp.html | 10
   sandbox/xint/libs/xint/doc/copyonwrite_8dox.html | 2
   sandbox/xint/libs/xint/doc/cow.html | 6
   sandbox/xint/libs/xint/doc/dependencies.html | 3
   sandbox/xint/libs/xint/doc/dependencies_8dox.html | 2
   sandbox/xint/libs/xint/doc/divide_8hpp.html | 10
   sandbox/xint/libs/xint/doc/dox/Doxyfile | 6
   sandbox/xint/libs/xint/doc/dox/acknowledgements.dox | 4
   sandbox/xint/libs/xint/doc/dox/copyonwrite.dox | 14
   sandbox/xint/libs/xint/doc/dox/dependencies.dox | 1
   sandbox/xint/libs/xint/doc/dox/exceptions.dox | 7
   sandbox/xint/libs/xint/doc/dox/history.dox | 10
   sandbox/xint/libs/xint/doc/dox/index.dox | 2
   sandbox/xint/libs/xint/doc/dox/nan.dox | 21
   sandbox/xint/libs/xint/doc/dox/r_shared_ptr.dox | 2
   sandbox/xint/libs/xint/doc/dox/r_toobig.dox | 4
   sandbox/xint/libs/xint/doc/dox/random.dox | 6
   sandbox/xint/libs/xint/doc/dox/rationale.dox | 1
   sandbox/xint/libs/xint/doc/dox/testing.dox | 6
   sandbox/xint/libs/xint/doc/dox/threadsafe.dox | 17
   sandbox/xint/libs/xint/doc/ex__fibonacci.html | 4
   sandbox/xint/libs/xint/doc/ex__fibonacci_8dox.html | 2
   sandbox/xint/libs/xint/doc/exceptions.html | 8
   sandbox/xint/libs/xint/doc/exceptions_8dox.html | 2
   sandbox/xint/libs/xint/doc/exceptions_8hpp.html | 2
   sandbox/xint/libs/xint/doc/exceptions_8hpp_source.html | 2
   sandbox/xint/libs/xint/doc/files.html | 43
   sandbox/xint/libs/xint/doc/fixedlength_8dox.html | 6
   sandbox/xint/libs/xint/doc/functions.html | 223 +
   sandbox/xint/libs/xint/doc/functions_func.html | 186 -
   sandbox/xint/libs/xint/doc/functions_type.html | 11
   sandbox/xint/libs/xint/doc/functions_vars.html | 151 -
   sandbox/xint/libs/xint/doc/gcd_8hpp.html | 10
   sandbox/xint/libs/xint/doc/globals.html | 48
   sandbox/xint/libs/xint/doc/globals_defs.html | 48
   sandbox/xint/libs/xint/doc/hierarchy.html | 28
   sandbox/xint/libs/xint/doc/history.html | 11
   sandbox/xint/libs/xint/doc/history_8dox.html | 2
   sandbox/xint/libs/xint/doc/index.html | 6
   sandbox/xint/libs/xint/doc/index_8dox.html | 2
   sandbox/xint/libs/xint/doc/integer_8hpp.html | 134
   sandbox/xint/libs/xint/doc/integer_8hpp_source.html | 2466 +++++++++++++++------
   sandbox/xint/libs/xint/doc/internals_8hpp.html | 164 -
   sandbox/xint/libs/xint/doc/internals_8hpp_source.html | 647 -----
   sandbox/xint/libs/xint/doc/log2_8hpp.html | 22
   sandbox/xint/libs/xint/doc/magnitude__manager_8hpp.html | 22
   sandbox/xint/libs/xint/doc/modular_8hpp.html | 10
   sandbox/xint/libs/xint/doc/monty_8hpp.html | 8
   sandbox/xint/libs/xint/doc/monty_8hpp_source.html | 250 ++
   sandbox/xint/libs/xint/doc/multiply_8hpp.html | 10
   sandbox/xint/libs/xint/doc/namespaceboost.html | 2
   sandbox/xint/libs/xint/doc/namespaceboost_1_1xint.html | 4504 +++++----------------------------------
   sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1detail.html | 2
   sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1exceptions.html | 2
   sandbox/xint/libs/xint/doc/namespacemembers.html | 80
   sandbox/xint/libs/xint/doc/namespacemembers_func.html | 82
   sandbox/xint/libs/xint/doc/namespacemembers_type.html | 7
   sandbox/xint/libs/xint/doc/namespacemembers_vars.html | 2
   sandbox/xint/libs/xint/doc/namespaces.html | 4
   sandbox/xint/libs/xint/doc/nan.html | 15
   sandbox/xint/libs/xint/doc/nan_8dox.html | 2
   sandbox/xint/libs/xint/doc/policies_8hpp.html | 22
   sandbox/xint/libs/xint/doc/powers_8hpp.html | 22
   sandbox/xint/libs/xint/doc/prime_8hpp.html | 10
   sandbox/xint/libs/xint/doc/primes.html | 6
   sandbox/xint/libs/xint/doc/primes_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__core.html | 2
   sandbox/xint/libs/xint/doc/r__core_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__cow.html | 2
   sandbox/xint/libs/xint/doc/r__cow_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__exception__blocking.html | 2
   sandbox/xint/libs/xint/doc/r__exception__blocking_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__insecure__default.html | 2
   sandbox/xint/libs/xint/doc/r__insecure__default_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__interface.html | 2
   sandbox/xint/libs/xint/doc/r__interface_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__interface__design__only.html | 2
   sandbox/xint/libs/xint/doc/r__interface__design__only_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__nan.html | 2
   sandbox/xint/libs/xint/doc/r__nan_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__negzero.html | 2
   sandbox/xint/libs/xint/doc/r__negzero_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__no__floats.html | 2
   sandbox/xint/libs/xint/doc/r__nofloats_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__random.html | 2
   sandbox/xint/libs/xint/doc/r__random_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__shared__ptr.html | 4
   sandbox/xint/libs/xint/doc/r__shared__ptr_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__too__big.html | 4
   sandbox/xint/libs/xint/doc/r__toobig_8dox.html | 2
   sandbox/xint/libs/xint/doc/r__whynotx.html | 14
   sandbox/xint/libs/xint/doc/r__whynotx_8dox.html | 6
   sandbox/xint/libs/xint/doc/random.html | 4
   sandbox/xint/libs/xint/doc/random_8dox.html | 2
   sandbox/xint/libs/xint/doc/random_8hpp.html | 2
   sandbox/xint/libs/xint/doc/random_8hpp_source.html | 134
   sandbox/xint/libs/xint/doc/random__by__size_8hpp.html | 22
   sandbox/xint/libs/xint/doc/randomgen_8hpp.html | 14
   sandbox/xint/libs/xint/doc/rationale.html | 5
   sandbox/xint/libs/xint/doc/rationale_8dox.html | 2
   sandbox/xint/libs/xint/doc/raw__integer_8hpp.html | 22
   sandbox/xint/libs/xint/doc/roots_8hpp.html | 10
   sandbox/xint/libs/xint/doc/shift_8hpp.html | 10
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength.html | 31
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength__base.html | 28
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow.html | 31
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow__base.html | 28
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure.html | 31
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure__base.html | 28
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe.html | 31
   sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe__base.html | 28
   sandbox/xint/libs/xint/doc/testing.html | 4
   sandbox/xint/libs/xint/doc/testing_8dox.html | 2
   sandbox/xint/libs/xint/doc/threadsafe.html | 10
   sandbox/xint/libs/xint/doc/threadsafe_8dox.html | 2
   sandbox/xint/libs/xint/doc/xint_8hpp.html | 2
   sandbox/xint/libs/xint/doc/xint_8hpp_source.html | 14
   sandbox/xint/libs/xint/doc/zero.html | 2
   sandbox/xint/libs/xint/doc/zero_8dox.html | 2
   sandbox/xint/libs/xint/example/exceptions.cpp | 2
   sandbox/xint/libs/xint/example/fibonacci.cpp | 2
   sandbox/xint/libs/xint/example/genprime.cpp | 4
   sandbox/xint/libs/xint/test/Jamfile | 2
   sandbox/xint/libs/xint/test/test_add.cpp | 16
   sandbox/xint/libs/xint/test/test_bit_manipulations.cpp | 8
   sandbox/xint/libs/xint/test/test_compare.cpp | 19
   sandbox/xint/libs/xint/test/test_convert.cpp | 24
   sandbox/xint/libs/xint/test/test_fixed.cpp | 111
   sandbox/xint/libs/xint/test/test_main.cpp | 11
   sandbox/xint/libs/xint/test/test_misc.cpp | 69
   sandbox/xint/libs/xint/test/test_monty.cpp | 4
   sandbox/xint/libs/xint/test/test_multiply.cpp | 35
   sandbox/xint/libs/xint/test/test_nothrow.cpp | 11
   sandbox/xint/libs/xint/test/test_powers.cpp | 12
   sandbox/xint/libs/xint/test/test_streams.cpp | 17
   199 files changed, 6244 insertions(+), 8450 deletions(-)

Deleted: sandbox/xint/boost/xint/detail/addsubtract.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/addsubtract.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,227 +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 of the addition and subtraction functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-void sub_increment(data_t& n, bool absolute_value = false);
-void sub_decrement(data_t& n, bool absolute_value = false);
-
-BOOST_XINT_INLINE void sub_add(data_t& n, const data_t n2) {
- n.beginmod((std::max)(n.length, n2.length) + 1, true);
-
- digit_t *ndig = n.digits(), *t = ndig, *te = t + n.max_length();
- const digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length,
- n.max_length());
-
- digit_t carry = 0;
- while (p != pe) {
- doubledigit_t tmp = doubledigit_t(*t) + *p++ + carry;
- if (tmp >= digit_overflowbit) {
- carry = 1;
- *t++ = static_cast<digit_t>(tmp - digit_overflowbit);
- } else {
- carry = 0;
- *t++ = static_cast<digit_t>(tmp);
- }
- }
-
- if (carry) {
- while (t != te) {
- if (*t == digit_mask) *t++ = 0;
- else { *t++ += 1; break; }
- }
- }
-
- n.length = (std::max)(n.length, size_t(t - ndig));
- n.endmod();
-}
-
-BOOST_XINT_INLINE void sub_subtract(data_t& n, const data_t n2) {
- bool swap = (compare(n, n2, true) < 0);
-
- n.beginmod((std::max)(n.length, n2.length), true);
- digit_t *ndig = n.digits(), *t = ndig, *te = t + n.length;
- const digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length, n.length);
-
- // Now subtract the digits, starting at the least-significant one.
- digit_t borrow = 0;
- if (swap) {
- // abs(n2) is greater than abs(n). Requires slightly different handling.
- while (p != pe) {
- doubledigit_t tmp = digit_overflowbit + *p++ - *t - borrow;
- if (tmp < digit_overflowbit) {
- borrow = 1;
- *t++ = static_cast<digit_t>(tmp);
- } else {
- borrow = 0;
- *t++ = static_cast<digit_t>(tmp - digit_overflowbit);
- }
- }
-
- n.length = size_t(t - ndig);
- n.negative = !n.negative;
- } else {
- while (p != pe) {
- doubledigit_t tmp = digit_overflowbit + *t - *p++ - borrow;
- if (tmp < digit_overflowbit) {
- borrow = 1;
- *t++ = static_cast<digit_t>(tmp);
- } else {
- borrow = 0;
- *t++ = static_cast<digit_t>(tmp - digit_overflowbit);
- }
- }
-
- if (borrow) {
- while (t != te) {
- if (*t == 0) *t++ = digit_mask;
- else { *t++ -= 1; borrow = 0; break; }
- }
- }
- n.length = (std::max)(n.length, size_t(t - ndig));
- }
-
- assert(borrow == 0);
- n.endmod();
-}
-
-BOOST_XINT_INLINE void sub_increment(data_t& n, bool absolute_value) {
- if (n.is_zero()) {
- n.set(1);
- } else if (!absolute_value && n.negative) {
- sub_decrement(n, true);
- } else {
- n.beginmod(n.length + 1, true);
- digit_t *p = n.digits(), *pe = p + n.length;
-
- while (p < pe) {
- if (*p == digit_mask) *p++ = 0;
- else { *p++ += 1; break; }
- }
- n.endmod();
- }
-}
-
-BOOST_XINT_INLINE void sub_decrement(data_t& n, bool absolute_value) {
- if (n.is_zero()) {
- n.set(-1);
- } else if (!absolute_value && n.negative) {
- sub_increment(n, true);
- } else {
- n.beginmod(n.length);
- digit_t *p = n.digits(), *pe = p + n.length;
-
- while (p < pe) {
- if (*p == 0) *p++ = digit_mask;
- else { *p++ -= 1; break; }
- }
- n.endmod();
- }
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator++() {
- sub_increment(*this);
- return *this;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator--() {
- sub_decrement(*this);
- return *this;
-}
-
-BOOST_XINT_INLINE data_t data_t::operator++(int) {
- data_t r(*this);
- sub_increment(*this);
- return r;
-}
-
-BOOST_XINT_INLINE data_t data_t::operator--(int) {
- data_t r(*this);
- sub_decrement(*this);
- return r;
-}
-
-BOOST_XINT_INLINE data_t data_t::operator-() const {
- data_t r(negate());
- r.beginmod();
- r.endmod(true);
- return r;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator+=(const data_t n) {
- if (!n.is_zero()) {
- beginmod();
-
- if (is_zero()) {
- duplicate_data(n);
- } else if (negative != n.negative) {
- sub_subtract(*this, n.negate());
- } else {
- sub_add(*this, n);
- }
-
- endmod();
- }
- return *this;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator-=(const data_t n) {
- if (!n.is_zero()) {
- beginmod();
-
- if (is_zero()) {
- duplicate_data(n.negate());
- } else if (negative != n.negative) {
- sub_add(*this, n.negate());
- } else {
- sub_subtract(*this, n);
- }
-
- endmod();
- }
- return *this;
-}
-
-BOOST_XINT_INLINE data_t operator+(const data_t n1, const data_t n2) {
- data_t r(n1);
- r+=n2;
- return r;
-}
-
-BOOST_XINT_INLINE data_t operator-(const data_t n1, const data_t n2) {
- data_t r(n1);
- r-=n2;
- return r;
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/addsubtract.hpp (from r62397, /sandbox/xint/boost/xint/detail/addsubtract.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/addsubtract.cpp (original)
+++ sandbox/xint/boost/xint/detail/addsubtract.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,26 +17,24 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_ADDSUBTRACT_HPP
+#define BOOST_INCLUDED_XINT_ADDSUBTRACT_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-void sub_increment(data_t& n, bool absolute_value = false);
-void sub_decrement(data_t& n, bool absolute_value = false);
-
-BOOST_XINT_INLINE void sub_add(data_t& n, const data_t n2) {
- n.beginmod((std::max)(n.length, n2.length) + 1, true);
-
- digit_t *ndig = n.digits(), *t = ndig, *te = t + n.max_length();
- const digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length,
- n.max_length());
+BOOST_XINT_RAWINT_TPL
+void sub_increment(BOOST_XINT_RAWINT& n, bool absolute_value = false);
+BOOST_XINT_RAWINT_TPL
+void sub_decrement(BOOST_XINT_RAWINT& n, bool absolute_value = false);
+
+BOOST_XINT_RAWINT_TPL
+void sub_add(BOOST_XINT_RAWINT& n, const BOOST_XINT_RAWINT n2) {
+ digit_t *ndig = n.digits((std::max)(n.length, n2.length) + 1,
+ realloc::extend), *t = ndig, *te = t + n.length;
+ const digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length, n.length);
 
     digit_t carry = 0;
     while (p != pe) {
@@ -58,14 +56,15 @@
     }
 
     n.length = (std::max)(n.length, size_t(t - ndig));
- n.endmod();
+ n.trim();
 }
 
-BOOST_XINT_INLINE void sub_subtract(data_t& n, const data_t n2) {
+BOOST_XINT_RAWINT_TPL
+void sub_subtract(BOOST_XINT_RAWINT& n, const BOOST_XINT_RAWINT n2) {
     bool swap = (compare(n, n2, true) < 0);
 
- n.beginmod((std::max)(n.length, n2.length), true);
- digit_t *ndig = n.digits(), *t = ndig, *te = t + n.length;
+ digit_t *ndig = n.digits((std::max)(n.length, n2.length), realloc::extend),
+ *t = ndig, *te = t + n.length;
     const digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length, n.length);
 
     // Now subtract the digits, starting at the least-significant one.
@@ -107,121 +106,121 @@
     }
 
     assert(borrow == 0);
- n.endmod();
+ n.trim();
 }
 
-BOOST_XINT_INLINE void sub_increment(data_t& n, bool absolute_value) {
+BOOST_XINT_RAWINT_TPL
+void sub_increment(BOOST_XINT_RAWINT& n, bool absolute_value) {
     if (n.is_zero()) {
         n.set(1);
     } else if (!absolute_value && n.negative) {
         sub_decrement(n, true);
     } else {
- n.beginmod(n.length + 1, true);
- digit_t *p = n.digits(), *pe = p + n.length;
-
+ size_t overflow = (n.digits()[n.length - 1] == digit_mask ? 1 : 0);
+ digit_t *d = n.digits(n.length + overflow, realloc::extend), *p = d, *pe
+ = p + n.length;
         while (p < pe) {
             if (*p == digit_mask) *p++ = 0;
             else { *p++ += 1; break; }
         }
- n.endmod();
+ n.trim();
     }
 }
 
-BOOST_XINT_INLINE void sub_decrement(data_t& n, bool absolute_value) {
+BOOST_XINT_RAWINT_TPL
+void sub_decrement(BOOST_XINT_RAWINT& n, bool absolute_value) {
     if (n.is_zero()) {
         n.set(-1);
     } else if (!absolute_value && n.negative) {
         sub_increment(n, true);
     } else {
- n.beginmod(n.length);
- digit_t *p = n.digits(), *pe = p + n.length;
+ digit_t *p = n.digits(0), *pe = p + n.length;
 
         while (p < pe) {
             if (*p == 0) *p++ = digit_mask;
             else { *p++ -= 1; break; }
         }
- n.endmod();
+ n.trim();
     }
 }
 
-BOOST_XINT_INLINE data_t& data_t::operator++() {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator++() {
     sub_increment(*this);
     return *this;
 }
 
-BOOST_XINT_INLINE data_t& data_t::operator--() {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator--() {
     sub_decrement(*this);
     return *this;
 }
 
-BOOST_XINT_INLINE data_t data_t::operator++(int) {
- data_t r(*this);
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT BOOST_XINT_RAWINT::operator++(int) {
+ BOOST_XINT_RAWINT r(*this);
     sub_increment(*this);
     return r;
 }
 
-BOOST_XINT_INLINE data_t data_t::operator--(int) {
- data_t r(*this);
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT BOOST_XINT_RAWINT::operator--(int) {
+ BOOST_XINT_RAWINT r(*this);
     sub_decrement(*this);
     return r;
 }
 
-BOOST_XINT_INLINE data_t data_t::operator-() const {
- data_t r(negate());
- r.beginmod();
- r.endmod(true);
- return r;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator+=(const data_t n) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator+=(const BOOST_XINT_RAWINT n) {
     if (!n.is_zero()) {
- beginmod();
-
         if (is_zero()) {
- duplicate_data(n);
+ *this = n;
         } else if (negative != n.negative) {
             sub_subtract(*this, n.negate());
         } else {
             sub_add(*this, n);
         }
-
- endmod();
     }
     return *this;
 }
 
-BOOST_XINT_INLINE data_t& data_t::operator-=(const data_t n) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator-=(const BOOST_XINT_RAWINT n) {
     if (!n.is_zero()) {
- beginmod();
-
         if (is_zero()) {
- duplicate_data(n.negate());
+ *this = n.negate();
         } else if (negative != n.negative) {
             sub_add(*this, n.negate());
         } else {
             sub_subtract(*this, n);
         }
-
- endmod();
     }
     return *this;
 }
 
-BOOST_XINT_INLINE data_t operator+(const data_t n1, const data_t n2) {
- data_t r(n1);
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator+(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ BOOST_XINT_RAWINT r(n1);
     r+=n2;
     return r;
 }
 
-BOOST_XINT_INLINE data_t operator-(const data_t n1, const data_t n2) {
- data_t r(n1);
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator-(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ BOOST_XINT_RAWINT r(n1);
     r-=n2;
     return r;
 }
 
+// note: once the test system is up and running, rewrite add/subtract code to write to a separate raw_integer & return it, for greater efficiency.
+
 } // namespace detail
 } // namespace xint
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_ADDSUBTRACT_HPP

Deleted: sandbox/xint/boost/xint/detail/andorxor.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/andorxor.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,101 +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 functions for ANDing, ORing, and XORing.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE data_t& data_t::operator&=(const data_t n) {
- size_t len = (std::min)(length, n.length);
- beginmod(len);
-
- const digit_t *ns = n.digits(), *nse = ns + len;
- digit_t *t = digits();
- while (ns != nse) *t++ &= *ns++;
- length = len;
-
- endmod();
- return *this;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator|=(const data_t n) {
- size_t len = (std::max)(length, n.length);
- beginmod(len);
-
- if (length > n.length) {
- const digit_t *ns = n.digits(), *nse = ns + n.length;
- digit_t *t = digits();
- while (ns != nse) *t++ |= *ns++;
- } else {
- const digit_t *ns = n.digits(), *nse = ns + len;
- digit_t *t = digits(), *te = t + length;
- while (t != te) *t++ |= *ns++;
- while (ns != nse) *t++ = *ns++;
- length = len;
- }
-
- endmod();
- return *this;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator^=(const data_t n) {
- size_t len = (std::max)(length, n.length);
- beginmod(len);
-
- if (length > n.length) {
- const digit_t *ns = n.digits(), *nse = ns + n.length;
- digit_t *t = digits();
- while (ns != nse) *t++ ^= *ns++;
- } else {
- const digit_t *ns = n.digits(), *nse = ns + len;
- digit_t *t = digits(), *te = t + length;
- while (t != te) *t++ ^= *ns++;
- while (ns != nse) *t++ = *ns++;
- length = len;
- }
-
- endmod();
- return *this;
-}
-
-BOOST_XINT_INLINE data_t operator&(const data_t n1, const data_t n2) {
- return data_t(n1) &= n2;
-}
-
-BOOST_XINT_INLINE data_t operator|(const data_t n1, const data_t n2) {
- return data_t(n1) |= n2;
-}
-
-BOOST_XINT_INLINE data_t operator^(const data_t n1, const data_t n2) {
- return data_t(n1) ^= n2;
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/andorxor.hpp (from r62397, /sandbox/xint/boost/xint/detail/andorxor.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/andorxor.cpp (original)
+++ sandbox/xint/boost/xint/detail/andorxor.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,80 +17,80 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_ANDORXOR_HPP
+#define BOOST_INCLUDED_XINT_ANDORXOR_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE data_t& data_t::operator&=(const data_t n) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator&=(const BOOST_XINT_RAWINT n) {
     size_t len = (std::min)(length, n.length);
- beginmod(len);
-
     const digit_t *ns = n.digits(), *nse = ns + len;
- digit_t *t = digits();
+ digit_t *t = digits(len, realloc::extend);
     while (ns != nse) *t++ &= *ns++;
     length = len;
-
- endmod();
+ trim();
     return *this;
 }
 
-BOOST_XINT_INLINE data_t& data_t::operator|=(const data_t n) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator|=(const BOOST_XINT_RAWINT n) {
     size_t len = (std::max)(length, n.length);
- beginmod(len);
-
     if (length > n.length) {
         const digit_t *ns = n.digits(), *nse = ns + n.length;
- digit_t *t = digits();
+ digit_t *t = digits(len, realloc::extend);
         while (ns != nse) *t++ |= *ns++;
     } else {
         const digit_t *ns = n.digits(), *nse = ns + len;
- digit_t *t = digits(), *te = t + length;
+ digit_t *t = digits(len, realloc::extend), *te = t + length;
         while (t != te) *t++ |= *ns++;
         while (ns != nse) *t++ = *ns++;
         length = len;
     }
-
- endmod();
+ trim();
     return *this;
 }
 
-BOOST_XINT_INLINE data_t& data_t::operator^=(const data_t n) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator^=(const BOOST_XINT_RAWINT n) {
     size_t len = (std::max)(length, n.length);
- beginmod(len);
-
     if (length > n.length) {
         const digit_t *ns = n.digits(), *nse = ns + n.length;
- digit_t *t = digits();
+ digit_t *t = digits(len, realloc::extend);
         while (ns != nse) *t++ ^= *ns++;
     } else {
         const digit_t *ns = n.digits(), *nse = ns + len;
- digit_t *t = digits(), *te = t + length;
+ digit_t *t = digits(len, realloc::extend), *te = t + length;
         while (t != te) *t++ ^= *ns++;
         while (ns != nse) *t++ = *ns++;
         length = len;
     }
-
- endmod();
+ trim();
     return *this;
 }
 
-BOOST_XINT_INLINE data_t operator&(const data_t n1, const data_t n2) {
- return data_t(n1) &= n2;
-}
-
-BOOST_XINT_INLINE data_t operator|(const data_t n1, const data_t n2) {
- return data_t(n1) |= n2;
-}
-
-BOOST_XINT_INLINE data_t operator^(const data_t n1, const data_t n2) {
- return data_t(n1) ^= n2;
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator&(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ return BOOST_XINT_RAWINT(n1) &= n2;
+}
+
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator|(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ return BOOST_XINT_RAWINT(n1) |= n2;
+}
+
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator^(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ return BOOST_XINT_RAWINT(n1) ^= n2;
 }
 
 } // namespace detail
@@ -98,4 +98,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_ANDORXOR_HPP

Added: sandbox/xint/boost/xint/detail/basic_types_and_includes.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/basic_types_and_includes.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,176 @@
+
+/*
+ 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 most basic types, constants, and includes.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_BASIC_TYPES_HPP
+#define BOOST_INCLUDED_XINT_BASIC_TYPES_HPP
+
+#ifdef _WIN32
+ // Solely for the strong random number generator.
+ #define STRICT
+ #define WIN32_LEAN_AND_MEAN
+ #include <windows.h>
+#endif
+
+#include <string>
+#include <vector>
+#include <queue>
+#include <limits>
+#include <cstddef> // for size_t
+#include <cassert>
+#include <sstream>
+#include <fstream>
+#include <ctime>
+#include <boost/integer.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/function.hpp>
+#include <boost/parameter.hpp>
+#include <boost/type_traits.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/static_assert.hpp>
+
+// Uncomment this to use Boost.Move, which can improve the speed when using
+// extremely large numbers.
+//#define BOOST_XINT_USE_MOVE
+
+#ifdef BOOST_XINT_USE_MOVE
+ #include <boost/move/move.hpp>
+ #define BOOST_XINT_COPY_ASSIGN_REF(type) BOOST_COPY_ASSIGN_REF(type)
+ #define BOOST_XINT_COPYABLE_AND_MOVABLE(type) BOOST_COPYABLE_AND_MOVABLE(type)
+ #define BOOST_XINT_RV_REF(type) BOOST_RV_REF(type)
+ #define BOOST_XINT_MOVE(value) boost::move(value)
+ #define BOOST_XINT_FORWARD(type, value) boost::forward<type>(value)
+#else
+ template <typename T> class disable_boost_rv_ref: public T { };
+ #define BOOST_XINT_COPY_ASSIGN_REF(type) const type&
+ #define BOOST_XINT_COPYABLE_AND_MOVABLE(type)
+ #define BOOST_XINT_RV_REF(type) disable_boost_rv_ref<type>
+ #define BOOST_XINT_MOVE(value) value
+ #define BOOST_XINT_FORWARD(type, value) value
+#endif
+
+namespace boost {
+namespace xint {
+
+//! \brief A callback function takes no parameters and returns a bool.
+typedef boost::function<bool ()> callback_t;
+
+//! \brief An empty callback_t, used as a default parameter for some functions.
+const callback_t no_callback;
+
+//! \brief The format for the binary representations of %integers.
+typedef std::vector<unsigned char> binary_t;
+
+//! \brief A value that can be used for the 'base' parameter of the
+//! string-to-integer constructor functions.
+const size_t autobase = (std::numeric_limits<size_t>::max)();
+
+//! \brief This makes it easier to tell when an item is measured in bits.
+typedef size_t bitsize_t;
+
+//! \brief This is the string representation of the Not-a-Number value.
+const std::string nan_text("#NaN#");
+
+//! \brief Holds the results from a division-with-remainder call.
+template <class T>
+class base_divide_t {
+ public:
+ base_divide_t() { }
+ base_divide_t(const T& q, const T& r): quotient(q), remainder(r) { }
+ base_divide_t(const base_divide_t<T>& copy):
+ quotient(copy.quotient), remainder(copy.remainder) { }
+ base_divide_t(BOOST_XINT_RV_REF(base_divide_t) move) {
+ quotient._swap(move.quotient); remainder._swap(move.remainder); }
+
+ base_divide_t& operator=(BOOST_XINT_COPY_ASSIGN_REF(base_divide_t) copy)
+ { quotient = copy.quotient; remainder = copy.remainder; return *this; }
+ base_divide_t& operator=(BOOST_XINT_RV_REF(base_divide_t) move) {
+ using std::swap;
+ swap(quotient, move.quotient);
+ swap(remainder, move.remainder);
+ return *this; }
+
+ T quotient, remainder;
+
+ private:
+ BOOST_XINT_COPYABLE_AND_MOVABLE(base_divide_t)
+};
+
+namespace detail {
+//! @cond 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 minimum_digits = 1;
+const size_t bits_per_digit = std::numeric_limits<digit_t>::digits;
+const size_t digits_in_uintmax =
+ (std::numeric_limits<boost::uintmax_t>::digits + bits_per_digit - 1) /
+ bits_per_digit;
+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 magnitude digits of an integer. Uses the "struct hack" -- look it
+//! up if you're not familiar with it.
+struct magnitude_t {
+ private:
+ size_t copy_count;
+
+ public:
+ const bool readonly;
+ const size_t max_length;
+ digit_t digits[minimum_digits]; // Must be last data item, see "struct hack"
+
+ magnitude_t(size_t max_len = minimum_digits, bool ro = false):
+ copy_count(0), readonly(ro), max_length(max_len) { }
+ magnitude_t(size_t max_len, bool ro, digit_t init): copy_count(0),
+ readonly(ro), max_length(max_len) { digits[0] = init; }
+ size_t copies() const { return copy_count; }
+
+ void inc() { ++copy_count; }
+ bool dec() { return (--copy_count == 0); }
+};
+
+inline size_t bits_to_digits(size_t bits) { return (bits + bits_per_digit - 1) /
+ bits_per_digit; }
+
+//! @endcond detail
+} // namespace detail
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_BASIC_TYPES_HPP

Deleted: sandbox/xint/boost/xint/detail/bitfunctions.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/bitfunctions.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,85 +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 bit-manipulation functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE bool getbit(const data_t n, size_t bit_index) {
- size_t index = bit_index / bits_per_digit;
- if (index < n.length) {
- digit_t mask=(digit_t(1) << (bit_index % bits_per_digit));
- return ((n[index] & mask) != 0);
- } else return false;
-}
-
-BOOST_XINT_INLINE void setbit(data_t& n, size_t bit_index) {
- if (n.is_fixed_length() && bit_index >= (n.max_length() * bits_per_digit))
- return;
-
- size_t index = (bit_index / bits_per_digit);
- digit_t mask = (digit_t(1) << (bit_index % bits_per_digit));
-
- n.beginmod(index + 1, true);
- n.digits()[index] |= mask;
- if (n.length < index + 1) n.length = index + 1;
- n.endmod();
-}
-
-BOOST_XINT_INLINE void clearbit(data_t& n, size_t bit_index) {
- size_t index = (bit_index / bits_per_digit);
- if (index >= n.length) return; // Bit can't be set, no need to clear it.
- digit_t mask = (digit_t(1) << (bit_index % bits_per_digit));
-
- n.beginmod();
- n.digits()[index] &= ~mask;
- n.endmod();
-}
-
-BOOST_XINT_INLINE size_t lowestbit(const data_t n, size_t valueIfZero) {
- if (n.is_zero()) return valueIfZero;
-
- const digit_t *d = n.digits(), *p = d, *pe = p + n.length;
- while (p != pe && *p == 0) ++p;
- size_t r = (bits_per_digit * (p - d));
-
- digit_t digit = *p;
- while ((digit & 0x01)==0) { digit >>= 1; ++r; }
-
- return r;
-}
-
-BOOST_XINT_INLINE size_t highestbit(const data_t n, size_t valueIfZero) {
- if (n.is_zero()) return valueIfZero;
- return ((n.length - 1) * bits_per_digit) + log2(n[n.length - 1]);
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/bitfunctions.hpp (from r62397, /sandbox/xint/boost/xint/detail/bitfunctions.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/bitfunctions.cpp (original)
+++ sandbox/xint/boost/xint/detail/bitfunctions.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,49 +17,44 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_BITFUNCTIONS_HPP
+#define BOOST_INCLUDED_XINT_BITFUNCTIONS_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE bool getbit(const data_t n, size_t bit_index) {
+BOOST_XINT_RAWINT_TPL
+bool getbit(const BOOST_XINT_RAWINT n, size_t bit_index) {
     size_t index = bit_index / bits_per_digit;
     if (index < n.length) {
- digit_t mask=(digit_t(1) << (bit_index % bits_per_digit));
+ digit_t mask = (digit_t(1) << (bit_index % bits_per_digit));
         return ((n[index] & mask) != 0);
     } else return false;
 }
 
-BOOST_XINT_INLINE void setbit(data_t& n, size_t bit_index) {
- if (n.is_fixed_length() && bit_index >= (n.max_length() * bits_per_digit))
- return;
-
+BOOST_XINT_RAWINT_TPL
+void setbit(BOOST_XINT_RAWINT& n, size_t bit_index) {
+ if (Bits != 0 && bit_index >= (n.max_length() * bits_per_digit)) return;
     size_t index = (bit_index / bits_per_digit);
     digit_t mask = (digit_t(1) << (bit_index % bits_per_digit));
-
- n.beginmod(index + 1, true);
- n.digits()[index] |= mask;
+ n.digits(index + 1, realloc::extend)[index] |= mask;
     if (n.length < index + 1) n.length = index + 1;
- n.endmod();
+ n.trim();
 }
 
-BOOST_XINT_INLINE void clearbit(data_t& n, size_t bit_index) {
+BOOST_XINT_RAWINT_TPL
+void clearbit(BOOST_XINT_RAWINT& n, size_t bit_index) {
     size_t index = (bit_index / bits_per_digit);
     if (index >= n.length) return; // Bit can't be set, no need to clear it.
     digit_t mask = (digit_t(1) << (bit_index % bits_per_digit));
-
- n.beginmod();
- n.digits()[index] &= ~mask;
- n.endmod();
+ n.digits(0)[index] &= ~mask;
+ n.trim();
 }
 
-BOOST_XINT_INLINE size_t lowestbit(const data_t n, size_t valueIfZero) {
+BOOST_XINT_RAWINT_TPL
+size_t lowestbit(const BOOST_XINT_RAWINT n, size_t valueIfZero) {
     if (n.is_zero()) return valueIfZero;
 
     const digit_t *d = n.digits(), *p = d, *pe = p + n.length;
@@ -72,14 +67,32 @@
     return r;
 }
 
-BOOST_XINT_INLINE size_t highestbit(const data_t n, size_t valueIfZero) {
+BOOST_XINT_RAWINT_TPL
+size_t highestbit(const BOOST_XINT_RAWINT n, size_t valueIfZero) {
     if (n.is_zero()) return valueIfZero;
     return ((n.length - 1) * bits_per_digit) + log2(n[n.length - 1]);
 }
 
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT BOOST_XINT_RAWINT::operator~() const {
+ if (Bits == 0) {
+ throw exceptions::too_big("operator~ on unlimited integers results in "
+ "an infinitely long number.");
+ } else {
+ BOOST_XINT_RAWINT r;
+ const digit_t *s = digits(), *se = s + length;
+ digit_t *t = r.digits(r.max_length(), realloc::extend), *te = t +
+ r.max_length();
+ while (s != se) *t++ = ~(*s++);
+ while (t != te) *t++ = ~0;
+ r.trim();
+ return r;
+ }
+}
+
 } // namespace detail
 } // namespace xint
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_BITFUNCTIONS_HPP

Deleted: sandbox/xint/boost/xint/detail/compare.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/compare.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,104 +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 comparison functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-//! Compares equal-length sets of digits.
-BOOST_XINT_INLINE int compare(const digit_t *b1, const digit_t *b2, size_t len,
- bool equal_only)
-{
- const detail::digit_t *b1i = b1 + len, *b2i = b2 + len;
- if (equal_only) {
- // If we only care whether it's equal or not, we'll start from the
- // lowest digit instead of the highest, on the assumption that it's more
- // likely to be different.
- while (b1 < b1i) if (*b1++ != *b2++) return 1;
- } else {
- while (b1i > b1)
- if (*(--b1i) != *(--b2i))
- return ((*b1i < *b2i) ? -1 : 1);
- }
- return 0; // They're identical.
-}
-
-//! The full-fat comparison function.
-BOOST_XINT_INLINE int compare(const data_t b1, const data_t b2, bool ignoresign)
-{
- bool invert_answer=false;
- if (!ignoresign) {
- if (b1.is_zero()) {
- if (b2.is_zero()) return 0;
- return (b2.negative ? 1 : -1);
- } else if (b2.is_zero()) {
- return (b1.negative ? -1 : 1);
- } else {
- if (b1.negative != b2.negative) return (b1.negative ? -1 : 1);
- if (b1.negative) invert_answer=true;
- }
- }
-
- int answer = 0;
- if (b1.length != b2.length) {
- answer = ((b1.length < b2.length) ? -1 : 1);
- } else {
- answer = compare(b1.digits(), b2.digits(), b1.length, false);
- }
-
- return (invert_answer ? -answer : answer);
-}
-
-//! Just compares for equality, returns non-zero if different.
-BOOST_XINT_INLINE int compare_eq(const data_t b1, const data_t b2) {
- if (b1.negative != b2.negative) {
- // Have to test for is_zero here, because in some rare cases, negative
- // zero is allowed, and negative zero is equal to zero.
- return (!b1.is_zero() || !b2.is_zero() ? 1 : 0);
- }
- if (b1.length != b2.length) return 1;
- return compare(b1.digits(), b2.digits(), b1.length, true);
-}
-
-BOOST_XINT_INLINE bool operator==(const data_t num1, const data_t num2) {
- return compare_eq(num1, num2)==0; }
-BOOST_XINT_INLINE bool operator!=(const data_t num1, const data_t num2) {
- return compare_eq(num1, num2)!=0; }
-BOOST_XINT_INLINE bool operator<(const data_t num1, const data_t num2) {
- return compare(num1, num2)<0; }
-BOOST_XINT_INLINE bool operator>(const data_t num1, const data_t num2) {
- return compare(num1, num2)>0; }
-BOOST_XINT_INLINE bool operator<=(const data_t num1, const data_t num2) {
- return compare(num1, num2)<=0; }
-BOOST_XINT_INLINE bool operator>=(const data_t num1, const data_t num2) {
- return compare(num1, num2)>=0; }
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/compare.hpp (from r62397, /sandbox/xint/boost/xint/detail/compare.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/compare.cpp (original)
+++ sandbox/xint/boost/xint/detail/compare.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,11 +17,8 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_COMPARE_HPP
+#define BOOST_INCLUDED_XINT_COMPARE_HPP
 
 //! @cond detail
 namespace boost {
@@ -29,8 +26,8 @@
 namespace detail {
 
 //! Compares equal-length sets of digits.
-BOOST_XINT_INLINE int compare(const digit_t *b1, const digit_t *b2, size_t len,
- bool equal_only)
+inline int compare(const digit_t *b1, const digit_t *b2, size_t len, bool
+ equal_only)
 {
     const detail::digit_t *b1i = b1 + len, *b2i = b2 + len;
     if (equal_only) {
@@ -47,7 +44,9 @@
 }
 
 //! The full-fat comparison function.
-BOOST_XINT_INLINE int compare(const data_t b1, const data_t b2, bool ignoresign)
+BOOST_XINT_RAWINT_TPL
+int compare(const BOOST_XINT_RAWINT b1, const BOOST_XINT_RAWINT b2, bool
+ ignoresign = false)
 {
     bool invert_answer=false;
     if (!ignoresign) {
@@ -68,12 +67,12 @@
     } else {
         answer = compare(b1.digits(), b2.digits(), b1.length, false);
     }
-
     return (invert_answer ? -answer : answer);
 }
 
 //! Just compares for equality, returns non-zero if different.
-BOOST_XINT_INLINE int compare_eq(const data_t b1, const data_t b2) {
+BOOST_XINT_RAWINT_TPL
+int compare_eq(const BOOST_XINT_RAWINT b1, const BOOST_XINT_RAWINT b2) {
     if (b1.negative != b2.negative) {
         // Have to test for is_zero here, because in some rare cases, negative
         // zero is allowed, and negative zero is equal to zero.
@@ -83,17 +82,23 @@
     return compare(b1.digits(), b2.digits(), b1.length, true);
 }
 
-BOOST_XINT_INLINE bool operator==(const data_t num1, const data_t num2) {
+BOOST_XINT_RAWINT_TPL
+bool operator==(const BOOST_XINT_RAWINT num1, const BOOST_XINT_RAWINT num2) {
     return compare_eq(num1, num2)==0; }
-BOOST_XINT_INLINE bool operator!=(const data_t num1, const data_t num2) {
+BOOST_XINT_RAWINT_TPL
+bool operator!=(const BOOST_XINT_RAWINT num1, const BOOST_XINT_RAWINT num2) {
     return compare_eq(num1, num2)!=0; }
-BOOST_XINT_INLINE bool operator<(const data_t num1, const data_t num2) {
+BOOST_XINT_RAWINT_TPL
+bool operator<(const BOOST_XINT_RAWINT num1, const BOOST_XINT_RAWINT num2) {
     return compare(num1, num2)<0; }
-BOOST_XINT_INLINE bool operator>(const data_t num1, const data_t num2) {
+BOOST_XINT_RAWINT_TPL
+bool operator>(const BOOST_XINT_RAWINT num1, const BOOST_XINT_RAWINT num2) {
     return compare(num1, num2)>0; }
-BOOST_XINT_INLINE bool operator<=(const data_t num1, const data_t num2) {
+BOOST_XINT_RAWINT_TPL
+bool operator<=(const BOOST_XINT_RAWINT num1, const BOOST_XINT_RAWINT num2) {
     return compare(num1, num2)<=0; }
-BOOST_XINT_INLINE bool operator>=(const data_t num1, const data_t num2) {
+BOOST_XINT_RAWINT_TPL
+bool operator>=(const BOOST_XINT_RAWINT num1, const BOOST_XINT_RAWINT num2) {
     return compare(num1, num2)>=0; }
 
 } // namespace detail
@@ -101,4 +106,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_COMPARE_HPP

Deleted: sandbox/xint/boost/xint/detail/convert.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/convert.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,251 +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.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "bitqueue.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE char nToChar(int n, bool upperCase) {
- if (n < 10) return char(n+'0');
- else if (upperCase) return char((n - 10) + 'A');
- else return char((n - 10) + 'a');
-}
-
-BOOST_XINT_INLINE std::string to_string(const data_t n, size_t base, bool
- uppercase)
-{
- if (base<2 || base>36) throw exceptions::invalid_base();
-
- if (n.is_zero()) return "0";
-
- std::ostringstream out;
- if (base == 2 || base == 4 || base == 16) {
- // Fast no-division version, useful for debugging division and for cases
- // where maximum speed is necessary.
- const digit_t *firstDigit = n.digits(),
- *lastDigit = firstDigit + n.length - 1;
-
- if (n.negative) out << '-';
-
- int bits_per_base_b_digit = 0;
- while (base > 1) { base = base >> 1; ++bits_per_base_b_digit; }
- const digit_t mask = (doubledigit_t(1) << bits_per_base_b_digit) - 1;
-
- // Skip any leading zeros
- const digit_t *d = lastDigit;
- int digitShift = (bits_per_digit - bits_per_base_b_digit);
- while (digitShift >= 0 && ((*d >> digitShift) & mask) == 0)
- digitShift -= bits_per_base_b_digit;
-
- do {
- while (digitShift >= 0) {
- out << nToChar((*d >> digitShift) & mask, uppercase);
- digitShift -= bits_per_base_b_digit;
- }
-
- digitShift=(bits_per_digit - bits_per_base_b_digit);
- } while (d-- != firstDigit);
-
- return out.str();
- } else {
- // ATTN: for when there's nothing more pressing to do
- // This could be made a lot more efficient for very large numbers, by
- // dividing n by base raised to whatever number of digits will fit into
- // a doubledigit_t, then just doing single-digit divides for that many
- // digits before going back to n for another chunk. That would be
- // premature optimization though, so I'm just making this note instead.
- // If someone can show me a use-case where more efficiency is needed in
- // this function, I'll add it later.
-
- const data_t shift(n.new_holder(), base);
- data_t::divide_t a(divide(n.abs(), shift));
- do {
- out << nToChar(a.remainder[0], uppercase);
- a = divide(a.quotient, shift);
- } while (!a.quotient.is_zero());
- if (!a.remainder.is_zero()) out << nToChar(a.remainder[0], uppercase);
-
- if (n.negative) out << '-';
-
- std::string rval = out.str();
- std::reverse(rval.begin(), rval.end());
- return rval;
- }
-}
-
-BOOST_XINT_INLINE void data_t::from_string(const char *str, char **endptr,
- size_t base)
-{
- bool negate=false;
- const char *c = str;
-
- while (isspace(*c)) ++c;
-
- if (*c=='+') ++c;
- else if (*c=='-') { negate=true; ++c; }
-
- if (base==autobase) {
- if (*c=='0') {
- ++c;
- if (*c=='x' || *c=='X') {
- ++c;
- base=16;
- } else base=8;
- } else base=10;
- }
-
- if (base<2 || base>36) throw exceptions::invalid_base();
- if (*c==0) throw exceptions::invalid_digit("No valid digits");
-
- std::string tstr;
- if (negate) tstr.push_back('-');
- if (base <= 10) {
- const char p = char('0' + base);
- while (*c >= '0' && *c < p)
- tstr.push_back(*c++);
- } else {
- const char lower = char('a' + base - 10),
- upper = char('A' + base - 10);
- while ((*c >= '0' && *c <= '9')
- || (*c >= 'a' && *c < lower)
- || (*c >= 'A' && *c < upper))
- tstr.push_back(*c++);
- }
- *endptr = const_cast<char*>(c);
-
- from_string(tstr, base);
-}
-
-BOOST_XINT_INLINE void data_t::from_string(const char *str, size_t slen, size_t
- base)
-{
- bool negate=false;
- const char *c = str;
- if (*c=='+') ++c;
- else if (*c=='-') { negate=true; ++c; }
-
- if (base==autobase) {
- if (*c=='0') {
- ++c;
- if (*c=='x' || *c=='X') {
- ++c;
- base=16;
- } else base=8;
- } else base=10;
- }
-
- if (base<2 || base>36) throw exceptions::invalid_base();
- if (*c==0) throw exceptions::invalid_digit("No valid digits");
-
- size_t max_bits_per_char = 1;
- while (max_bits_per_char < 6 && base > (1u << max_bits_per_char))
- ++max_bits_per_char;
-
- if (slen == 0) slen = strlen(str);
- size_t len = bits_to_digits(slen);
-
- const data_t shift(new_holder(), base);
-
- // ATTN: for when there's nothing more pressing to do
- // This function could use the same efficiency improvements that to_string
- // uses, but there's even less need for them here. Show me a use-case where
- // they're needed and I'll add them; until then, this will suffice.
-
- data_t digit(new_holder(), 0);
-
- beginmod(len);
- set(0);
-
- while (*c) {
- if (*c>='0' && *c<='9') digit.set(*c-'0');
- else if (*c>='A' && *c<='Z') digit.set(*c-'A'+10);
- else if (*c>='a' && *c<='z') digit.set(*c-'a'+10);
- else
- throw exceptions::invalid_digit("encountered non-alphanumeric "
- "character in string");
-
- if (digit >= shift) throw exceptions::invalid_digit("encountered digit "
- "greater than base allows");
-
- *this *= shift;
- *this += digit;
- ++c;
- }
-
- negative = negate;
- endmod();
-}
-
-BOOST_XINT_INLINE void data_t::from_string(const std::string& str, size_t base) {
- from_string(str.c_str(), str.length(), base);
-}
-
-BOOST_XINT_INLINE xint::binary_t to_binary(const data_t n, size_t bits) {
- if (bits > size_t(std::numeric_limits<unsigned char>::digits)) throw
- exceptions::invalid_argument("can't fit that many bits into an "
- "unsigned character on this system");
- if (bits == 0) bits = std::numeric_limits<unsigned char>::digits;
-
- bitqueue_t bitqueue;
- const digit_t *s = n.digits(), *se = s + n.length;
- while (s != se) bitqueue.push(*s++, bits_per_digit);
-
- xint::binary_t target;
- while (!bitqueue.empty()) target.push_back(static_cast<unsigned char>
- (bitqueue.pop(bits)));
- while (!target.empty() && target.back()==0) target.pop_back();
- return target;
-}
-
-BOOST_XINT_INLINE void data_t::from_binary(xint::binary_t b, size_t bits) {
- if (bits > size_t(std::numeric_limits<unsigned char>::digits)) throw
- exceptions::invalid_argument("can't fit that many bits into an "
- "unsigned character on this system");
- if (bits == 0) bits = std::numeric_limits<unsigned char>::digits;
-
- size_t len = bits_to_digits(b.size() * bits);
- beginmod(len);
-
- bitqueue_t bitqueue;
- for (xint::binary_t::const_iterator s = b.begin(), se = b.end(); s != se;
- ++s) bitqueue.push(*s, bits);
-
- digit_t *d = digits(), *t = d, *te = t + max_length();
- while (t != te && !bitqueue.empty())
- *t++ = static_cast<digit_t>(bitqueue.pop(bits_per_digit));
-
- length = (t - d);
-
- endmod();
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/convert.hpp (from r62397, /sandbox/xint/boost/xint/detail/convert.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/convert.cpp (original)
+++ sandbox/xint/boost/xint/detail/convert.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,37 +17,33 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "bitqueue.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_CONVERT_HPP
+#define BOOST_INCLUDED_XINT_CONVERT_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE char nToChar(int n, bool upperCase) {
- if (n < 10) return char(n+'0');
+inline char nToChar(int n, bool upperCase) {
+ if (n < 10) return char(n + '0');
     else if (upperCase) return char((n - 10) + 'A');
     else return char((n - 10) + 'a');
 }
 
-BOOST_XINT_INLINE std::string to_string(const data_t n, size_t base, bool
- uppercase)
+BOOST_XINT_RAWINT_TPL
+std::string to_string(const BOOST_XINT_RAWINT n, size_t base = 10, bool
+ uppercase = false)
 {
- if (base<2 || base>36) throw exceptions::invalid_base();
-
+ if (base < 2 || base > 36) throw exceptions::invalid_base();
     if (n.is_zero()) return "0";
 
     std::ostringstream out;
     if (base == 2 || base == 4 || base == 16) {
         // Fast no-division version, useful for debugging division and for cases
         // where maximum speed is necessary.
- const digit_t *firstDigit = n.digits(),
- *lastDigit = firstDigit + n.length - 1;
+ const digit_t *firstDigit = n.digits(), *lastDigit = firstDigit +
+ n.length - 1;
 
         if (n.negative) out << '-';
 
@@ -81,8 +77,9 @@
         // If someone can show me a use-case where more efficiency is needed in
         // this function, I'll add it later.
 
- const data_t shift(n.new_holder(), base);
- data_t::divide_t a(divide(n.abs(), shift));
+ BOOST_XINT_RAWINT shift;
+ shift.set_unsigned(base);
+ typename BOOST_XINT_RAWINT::divide_t a(divide(n.abs(), shift));
         do {
             out << nToChar(a.remainder[0], uppercase);
             a = divide(a.quotient, shift);
@@ -97,29 +94,28 @@
     }
 }
 
-BOOST_XINT_INLINE void data_t::from_string(const char *str, char **endptr,
- size_t base)
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::from_string(const char *str, char **endptr, size_t base)
 {
- bool negate=false;
+ bool negate = false;
     const char *c = str;
-
     while (isspace(*c)) ++c;
 
- if (*c=='+') ++c;
- else if (*c=='-') { negate=true; ++c; }
+ if (*c == '+') ++c;
+ else if (*c == '-') { negate = true; ++c; }
 
- if (base==autobase) {
- if (*c=='0') {
+ if (base == autobase) {
+ if (*c == '0') {
             ++c;
- if (*c=='x' || *c=='X') {
+ if (*c == 'x' || *c == 'X') {
                 ++c;
- base=16;
- } else base=8;
- } else base=10;
+ base = 16;
+ } else base = 8;
+ } else base = 10;
     }
 
- if (base<2 || base>36) throw exceptions::invalid_base();
- if (*c==0) throw exceptions::invalid_digit("No valid digits");
+ if (base < 2 || base > 36) throw exceptions::invalid_base();
+ if (*c == 0) throw exceptions::invalid_digit("No valid digits");
 
     std::string tstr;
     if (negate) tstr.push_back('-');
@@ -128,8 +124,7 @@
         while (*c >= '0' && *c < p)
             tstr.push_back(*c++);
     } else {
- const char lower = char('a' + base - 10),
- upper = char('A' + base - 10);
+ const char lower = char('a' + base - 10), upper = char('A' + base - 10);
         while ((*c >= '0' && *c <= '9')
             || (*c >= 'a' && *c < lower)
             || (*c >= 'A' && *c < upper))
@@ -140,53 +135,42 @@
     from_string(tstr, base);
 }
 
-BOOST_XINT_INLINE void data_t::from_string(const char *str, size_t slen, size_t
- base)
-{
- bool negate=false;
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::from_string(const char *str, size_t base) {
+ bool negate = false;
     const char *c = str;
- if (*c=='+') ++c;
- else if (*c=='-') { negate=true; ++c; }
+ if (*c == '+') ++c;
+ else if (*c == '-') { negate = true; ++c; }
 
- if (base==autobase) {
- if (*c=='0') {
+ if (base == autobase) {
+ if (*c == '0') {
             ++c;
- if (*c=='x' || *c=='X') {
+ if (*c == 'x' || *c == 'X') {
                 ++c;
- base=16;
- } else base=8;
- } else base=10;
+ base = 16;
+ } else base = 8;
+ } else base = 10;
     }
 
- if (base<2 || base>36) throw exceptions::invalid_base();
- if (*c==0) throw exceptions::invalid_digit("No valid digits");
-
- size_t max_bits_per_char = 1;
- while (max_bits_per_char < 6 && base > (1u << max_bits_per_char))
- ++max_bits_per_char;
-
- if (slen == 0) slen = strlen(str);
- size_t len = bits_to_digits(slen);
-
- const data_t shift(new_holder(), base);
+ if (base < 2 || base > 36) throw exceptions::invalid_base();
+ if (*c == 0) throw exceptions::invalid_digit("No valid digits");
 
     // ATTN: for when there's nothing more pressing to do
     // This function could use the same efficiency improvements that to_string
     // uses, but there's even less need for them here. Show me a use-case where
     // they're needed and I'll add them; until then, this will suffice.
 
- data_t digit(new_holder(), 0);
+ BOOST_XINT_RAWINT shift, digit;
+ shift.set_unsigned(base);
 
- beginmod(len);
     set(0);
-
     while (*c) {
- if (*c>='0' && *c<='9') digit.set(*c-'0');
- else if (*c>='A' && *c<='Z') digit.set(*c-'A'+10);
- else if (*c>='a' && *c<='z') digit.set(*c-'a'+10);
+ if (*c >= '0' && *c <= '9') digit.set(*c - '0');
+ else if (*c >= 'A' && *c <= 'Z') digit.set(*c - 'A' + 10);
+ else if (*c >= 'a' && *c <= 'z') digit.set(*c - 'a' + 10);
         else
             throw exceptions::invalid_digit("encountered non-alphanumeric "
- "character in string");
+ "character in string");
 
         if (digit >= shift) throw exceptions::invalid_digit("encountered digit "
             "greater than base allows");
@@ -197,14 +181,16 @@
     }
 
     negative = negate;
- endmod();
+ trim();
 }
 
-BOOST_XINT_INLINE void data_t::from_string(const std::string& str, size_t base) {
- from_string(str.c_str(), str.length(), base);
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::from_string(const std::string& str, size_t base) {
+ from_string(str.c_str(), base);
 }
 
-BOOST_XINT_INLINE xint::binary_t to_binary(const data_t n, size_t bits) {
+BOOST_XINT_RAWINT_TPL
+xint::binary_t to_binary(const BOOST_XINT_RAWINT n, size_t bits = 0) {
     if (bits > size_t(std::numeric_limits<unsigned char>::digits)) throw
         exceptions::invalid_argument("can't fit that many bits into an "
         "unsigned character on this system");
@@ -221,26 +207,43 @@
     return target;
 }
 
-BOOST_XINT_INLINE void data_t::from_binary(xint::binary_t b, size_t bits) {
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::from_binary(xint::binary_t b, size_t bits) {
     if (bits > size_t(std::numeric_limits<unsigned char>::digits)) throw
         exceptions::invalid_argument("can't fit that many bits into an "
         "unsigned character on this system");
     if (bits == 0) bits = std::numeric_limits<unsigned char>::digits;
 
- size_t len = bits_to_digits(b.size() * bits);
- beginmod(len);
-
     bitqueue_t bitqueue;
     for (xint::binary_t::const_iterator s = b.begin(), se = b.end(); s != se;
         ++s) bitqueue.push(*s, bits);
 
- digit_t *d = digits(), *t = d, *te = t + max_length();
+ digit_t *d = digits(bits_to_digits(b.size() * bits), realloc::ignore), *t =
+ d, *te = t + max_length();
     while (t != te && !bitqueue.empty())
       *t++ = static_cast<digit_t>(bitqueue.pop(bits_per_digit));
-
     length = (t - d);
+ trim();
+}
 
- endmod();
+template <typename T, bitsize_t Bits, bool Secure, class Alloc>
+T to(const BOOST_XINT_RAWINT n, typename boost::enable_if<boost::is_integral<T>
+ >::type* = 0)
+{
+ using std::numeric_limits;
+
+ static const BOOST_XINT_RAWINT tmin((numeric_limits<T>::min)());
+ static const BOOST_XINT_RAWINT tmax((numeric_limits<T>::max)());
+ if (n < tmin || n > tmax) throw exceptions::too_big("value out of range "
+ "for requested conversion");
+
+ T rval = 0, shift = T(digit_overflowbit);
+ for (size_t x = 0; x < n.length; ++x) {
+ if (sizeof(T) > sizeof(digit_t)) rval *= shift;
+ rval += static_cast<T>(n[n.length - x - 1]);
+ }
+ if (n.negative) rval *= -1;
+ return rval;
 }
 
 } // namespace detail
@@ -248,4 +251,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_CONVERT_HPP

Deleted: sandbox/xint/boost/xint/detail/data_t.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/data_t.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,462 +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 function definitions for data_t and raw_digits_t.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "../exceptions.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-////////////////////////////////////////////////////////////////////////////////
-// raw_digits_t
-
-BOOST_XINT_INLINE raw_digits_t::raw_digits_t(size_t max_len, bool ro):
- copy_count(0), max_length(max_len), readonly(ro) { }
-
-BOOST_XINT_INLINE raw_digits_t::raw_digits_t(size_t max_len, bool ro, digit_t
- init): copy_count(0), max_length(max_len), readonly(ro)
-{
- digits[0] = init;
-}
-
-BOOST_XINT_INLINE size_t raw_digits_t::copy(const raw_digits_t& c, size_t
- length)
-{
- size_t max = (std::min)(max_length, c.max_length);
- if (length == 0 || length > max) length = max;
- copy(c.digits, length);
- return length;
-}
-
-BOOST_XINT_INLINE void raw_digits_t::copy(const digit_t *s, size_t length) {
- digit_t *t = digits, *te = t + (std::min)(length, max_length);
- while (t != te) *t++ = *s++;
-}
-
-BOOST_XINT_INLINE size_t raw_digits_t::zero(size_t length) {
- if (length == 0) length = max_length;
- else length = (std::min)(length, max_length);
- digit_t *t = digits, *te = t + length;
- while (t != te) *t++ = 0;
- return length;
-}
-
-BOOST_XINT_INLINE size_t raw_digits_t::copies() const {
- return copy_count;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// base_digitmanager_t
-
-BOOST_XINT_INLINE raw_digits_t *base_digitmanager_t::alloc(size_t
- requested_length, bool readonly) const
-{
- size_t fixed_digit_length = fixed_length();
- size_t len = (fixed_digit_length ? fixed_digit_length :
- (std::max)(requested_length, minimum_digits));
- size_t count = len - minimum_digits + datasize;
-
- digit_t *storage = 0;
- try {
- storage = raw_allocate(count);
- if (readonly) return new(storage) raw_digits_t(len, readonly, 0);
- else return new(storage) raw_digits_t(len, readonly);
- } catch (std::bad_alloc&) {
- if (storage) raw_deallocate(storage, len); // Just in case.
- throw exceptions::overflow_error("Out of memory allocating integer");
- } catch (std::exception&) {
- // To make it exception-safe, we've got to ensure that the allocated
- // data is properly disposed of if there's an exception, before passing
- // the exception on.
- if (storage) raw_deallocate(storage, len);
- throw;
- }
-}
-
-//! Resizes the data (if possible), and ensures that it's unique in all cases.
-BOOST_XINT_INLINE raw_digits_t *base_digitmanager_t::realloc(raw_digits_t
- *data, size_t requested_length) const
-{
- if (fixed_length() == 0) {
- if (data && data->copies() <= 1 && !data->readonly) {
- digit_t *rawdata = raw_reallocate(reinterpret_cast<digit_t*>(data),
- requested_length);
- if (rawdata != 0) {
- if (reinterpret_cast<digit_t*>(data) == rawdata) {
- *(const_cast<size_t*>(&data->max_length)) = requested_length;
- return data;
- } else {
- raw_digits_t *newdata =
- new(rawdata) raw_digits_t(requested_length, false);
- newdata->copy(*data);
- return newdata;
- }
- }
- }
- } else requested_length = fixed_length();
-
- // Can't reallocate, move to plan B.
- raw_digits_t *r = data;
- if (data == 0 || data->copies() > 1 || data->readonly ||
- data->max_length < requested_length)
- {
- r = alloc(requested_length);
- if (data) r->copy(*data, requested_length);
- }
-
- return r;
-}
-
-BOOST_XINT_INLINE void base_digitmanager_t::dealloc(raw_digits_t *data) const {
- if (data == 0) return;
-
- size_t len = (data->max_length + datasize - minimum_digits);
-
- // Since the data was initialized with placement-new, we have to manually
- // call the destructor.
- data-> ~raw_digits_t();
-
- // Finally, dispose of it.
- raw_deallocate(reinterpret_cast<digit_t*>(data), len);
-}
-
-//! Tries to change max_length(), preserving current data, and ensures that the
-//! data is unique. max_length is not guaranteed to change, so don't make any
-//! assumptions about that.
-BOOST_XINT_INLINE void base_digitmanager_t::resize_and_uniquify(size_t
- new_requested_max_length)
-{
- // If the length can't change, and it's already unique, we don't need to do
- // anything.
- if (fixed_length() > 0 && raw_data->copies() <= 1) return;
-
- if (new_requested_max_length == 0)
- new_requested_max_length = raw_data->max_length;
- reset(realloc(raw_data, new_requested_max_length));
-}
-
-//! This should never be used on different derived classes, unless it doesn't
-//! matter that the memory from one class will be deallocated in the other.
-BOOST_XINT_INLINE void swap(base_digitmanager_t& p1, base_digitmanager_t& p2) {
- using std::swap;
- swap(p1.raw_data, p2.raw_data);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// data_t
-
-BOOST_XINT_INLINE data_t::data_t(base_digitmanager_t& holder, size_t len, bool
- neg): length(len), negative(neg), dataholder(&holder),
- holder_managed_elsewhere(true), modcount(0) { }
-
-BOOST_XINT_INLINE data_t::data_t(base_digitmanager_t* holder):
- length(1), negative(false), dataholder(holder),
- holder_managed_elsewhere(false), modcount(0) { assert(holder != 0); }
-
-//! Makes a copy that shares storage.
-BOOST_XINT_INLINE data_t::data_t(const data_t& copy): length(copy.length),
- negative(copy.negative),
- dataholder(copy.dataholder->new_of_type(copy.dataholder)),
- holder_managed_elsewhere(false), modcount(0) { }
-
-//! Makes a copy that shares storage and sets negative to a specific value,
-//! possibly different from copy's.
-BOOST_XINT_INLINE data_t::data_t(const data_t& copy, bool neg):
- length(copy.length), negative(neg),
- dataholder(copy.dataholder->new_of_type(copy.dataholder)),
- holder_managed_elsewhere(false), modcount(0) { }
-
-BOOST_XINT_INLINE data_t::~data_t() {
- if (!holder_managed_elsewhere) delete dataholder;
-}
-
-BOOST_XINT_INLINE base_digitmanager_t *data_t::new_holder() const {
- return dataholder->new_of_type();
-}
-
-BOOST_XINT_INLINE const base_digitmanager_t *data_t::holder() const {
- if (is_nan()) throw exceptions::not_a_number();
- return dataholder;
-}
-
-//! Only works when abs(n) will fit into a digit_t.
-BOOST_XINT_INLINE void data_t::set(int n) {
- beginmod(1);
- make_unique();
- if (n < 0) { negative = true; n = -n; } else negative = false;
- assert(n == int(digit_t(n)));
- length = 1;
- digits()[0] = digit_t(n);
- endmod();
-}
-
-BOOST_XINT_INLINE void data_t::set_signed(boost::intmax_t n) {
- if (n >= 0) {
- set_unsigned(n);
- } else if (n == (std::numeric_limits<boost::intmax_t>::min)()) {
- // Have to treat the minimum number carefully, because -n is not
- // what you'd think it is.
- set_unsigned(-(n + 1), true);
- --*this;
- } else {
- set_unsigned(-n, true);
- }
-}
-
-BOOST_XINT_INLINE void data_t::set_unsigned(boost::uintmax_t n, bool neg) {
- beginmod(detail::digits_in_uintmax);
- if (digit_t(n) == n) {
- length = 1;
- digits()[0] = digit_t(n);
- } else {
- digit_t *i = digits(), *ie = i + max_length();
- while (n != 0 && i != ie) {
- *i++ = digit_t(n & digit_mask);
- n >>= bits_per_digit;
- }
- length = (i - digits());
- }
- negative = neg;
- endmod();
-}
-
-//! Makes a copy with its own unique storage.
-BOOST_XINT_INLINE data_t data_t::duplicate() const {
- data_t r(*this);
- r.make_unique();
- return r;
-}
-
-//! Copies the data into this object's unique storage.
-BOOST_XINT_INLINE void data_t::duplicate_data(const data_t copy) {
- beginmod(copy.length);
- digits(); // To trigger any changes from the beginmod call
- length = (std::min)(max_length(), copy.length);
- negative = copy.negative;
- dataholder->copy(copy.dataholder, length);
- endmod();
-}
-
-//! Discards this item's data and adopts a copy of p.
-BOOST_XINT_INLINE void data_t::reset(data_t p) {
- dataholder->reset(p.dataholder->get());
- length = p.length;
- negative = p.negative;
- call_endmod_hook = true;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator=(const data_t& p) {
- reset(p);
- return *this;
-}
-
-BOOST_XINT_INLINE const data_t data_t::abs() const {
- return data_t(*this, false);
-}
-
-BOOST_XINT_INLINE const data_t data_t::negate() const {
- return data_t(*this, !negative);
-}
-
-BOOST_XINT_INLINE bool data_t::same_storage(const data_t n) const {
- return (dataholder->get() == n.dataholder->get());
-}
-
-BOOST_XINT_INLINE bool data_t::is_unique() const {
- return ((*dataholder)->copies() <= 1);
-}
-
-BOOST_XINT_INLINE void data_t::make_unique() {
- if (!is_unique()) dataholder->resize_and_uniquify(max_length());
-}
-
-//! Unlike operator[], this function is protected from out-of-bounds accesses.
-BOOST_XINT_INLINE digit_t data_t::get_digit(size_t i) const {
- return (i < length ? (*dataholder)->digits[i] : 0);
-}
-
-BOOST_XINT_INLINE digit_t data_t::operator[](size_t i) {
- return (*dataholder)->digits[i];
-}
-
-BOOST_XINT_INLINE digit_t *data_t::digits() {
- assert(modcount > 0);
-
- if (mod_requested_size > max_length()) {
- dataholder->resize_and_uniquify(mod_requested_size);
- } else {
- make_unique();
- }
-
- if (mod_requested_extend) {
- mod_requested_extend = false;
- extend(mod_requested_size, true);
- }
- mod_requested_size = 0;
-
- call_endmod_hook = true;
- return digits(true);
-}
-
-BOOST_XINT_INLINE const digit_t *data_t::digits() const {
- data_t& t(*const_cast<data_t*>(this));
- return t.digits(true);
-}
-
-BOOST_XINT_INLINE size_t data_t::max_length() const {
- return (*dataholder)->max_length;
-}
-
-BOOST_XINT_INLINE bool data_t::is_zero() const {
- return (length == 1 && (*this)[0] == 0);
-}
-
-//! Extends the current object's length (to the maximum, by default), zeroing
-//! the digits in between.
-BOOST_XINT_INLINE void data_t::extend(size_t new_length, bool skip_mod) {
- if (new_length == 0) new_length = max_length();
- else new_length = (std::min)(new_length, max_length());
-
- if (length < new_length) {
- digit_t *d;
- if (!skip_mod) {
- beginmod();
- d = (*dataholder)->digits;
- } else d = digits();
- digit_t *p = d + length, *pe = d + new_length;
- while (p < pe) *p++ = 0;
- length = new_length;
- if (!skip_mod) endmod();
- }
-}
-
-BOOST_XINT_INLINE void data_t::beginmod(size_t requested, bool extend) {
- if (modcount++ == 0) {
- dataholder->beforemod();
- mod_requested_size = requested;
- mod_requested_extend = extend;
- call_endmod_hook = false;
- } else {
- mod_requested_size = (std::max)(mod_requested_size, requested);
- if (extend) mod_requested_extend = true;
- }
-}
-
-BOOST_XINT_INLINE void data_t::endmod(bool allow_negative_zero) {
- assert(length <= max_length());
-
- digit_t *d = digits(true), *p = d + length - 1;
- if (call_endmod_hook) {
- dataholder->endmod_hook(d);
- call_endmod_hook = false;
- }
-
- // Adjust length to skip any leading zeros.
- while (p > d && *p == 0) --p;
- length = (p - d + 1);
-
- // Zero isn't negative, unless told otherwise.
- if (!allow_negative_zero && p == d && *p == 0) negative = false;
-
- assert(modcount > 0);
- if (--modcount == 0) dataholder->aftermod();
-}
-
-BOOST_XINT_INLINE int data_t::sign(bool allow_signed_zero) const {
- if (!allow_signed_zero && is_zero()) return 0;
- return (negative ? -1 : 1);
-}
-
-BOOST_XINT_INLINE bool data_t::is_odd() const {
- return (((*this)[0] & 0x01) != 0);
-}
-
-BOOST_XINT_INLINE bool data_t::is_even() const {
- return (((*this)[0] & 0x01) == 0);
-}
-
-BOOST_XINT_INLINE size_t data_t::hex_digits() const {
- return (log2(*this) + 3) / 4;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Miscellaneous related free functions
-
-BOOST_XINT_INLINE void swap(data_t& p1, data_t& p2) {
- using std::swap;
- swap(p1.length, p2.length);
- swap(p1.negative, p2.negative);
- swap(*p1.dataholder, *p2.dataholder);
-}
-
-BOOST_XINT_INLINE size_t log2_base(boost::uintmax_t n, size_t maxbits) {
- size_t lo = 0, hi = maxbits;
- while (lo < hi) {
- size_t s = lo + ((hi - lo) >> 1);
- if (n >= (boost::uintmax_t(1) << s)) lo = s + 1;
- else hi = s;
- }
- return lo;
-}
-
-//! Use this one, rather than data_t's member version, if the final result needs
-//! to be made thread-safe. Use the member version if thread-safety isn't a
-//! problem (i.e. for internal functions) and maximum speed is desired.
-BOOST_XINT_INLINE data_t abs(const data_t n) {
- data_t r(n.abs());
- r.beginmod();
- r.endmod();
- return r;
-}
-
-BOOST_XINT_INLINE size_t log2(const data_t n) {
- size_t r = bits_per_digit * (n.length - 1);
- return r + log2(n[n.length - 1]);
-}
-
-BOOST_XINT_INLINE size_t log10_bits(size_t bits) {
- assert(std::numeric_limits<boost::intmax_t>::digits >= 32);
-
- digitmanager_t<> holder;
- const data_t large_step(holder.new_of_type(), 1000000000);
- const data_t small_step(holder.new_of_type(), 10);
- const size_t count_per_large_step = 9, count_per_small_step = 1;
-
- data_t n(new digitmanager_t<>);
- pow2(n, bits);
- --n;
-
- size_t r = 0;
- while (n >= large_step) { n /= large_step; r += count_per_large_step; }
- while (n >= small_step) { n /= small_step; r += count_per_small_step; }
- return r;
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Deleted: sandbox/xint/boost/xint/detail/divide.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/divide.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,205 +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 of the divide function, and its supporting
- functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE void divide_by_single_digit(data_t& qtarget, data_t& rtarget,
- const data_t d1, digit_t d2)
-{
- size_t d1len = d1.length;
- const digit_t *d1digits = d1.digits();
-
- doubledigit_t a = 0;
- const doubledigit_t lomask(digit_mask);
- const doubledigit_t himask(lomask << bits_per_digit);
-
- int m = int(d1len) - 1;
- const digit_t *d1p = d1digits + m;
-
- qtarget.beginmod(m + 1);
- digit_t *qp = qtarget.digits() + m, *qe = qtarget.digits() +
- qtarget.max_length();
- for (int i = m; i >= 0; --i, --d1p, --qp) {
- a = (a & ~lomask) | *d1p;
- if (qp < qe) *qp = static_cast<digit_t>(a / d2);
- a = (a & ~himask) | ((a % d2) << bits_per_digit);
- }
- qtarget.length = (std::min<size_t>)(m + 1, qtarget.max_length());
- qtarget.endmod();
-
- rtarget.beginmod(1);
- rtarget.digits()[0] = static_cast<digit_t>((a & himask) >> bits_per_digit);
- rtarget.length = 1;
- rtarget.endmod();
-}
-
-BOOST_XINT_INLINE void sub_divide2(data_t& qtarget, data_t& rtarget, const
- data_t d1, const data_t d2)
-{
- assert(d2[d2.length - 1] >= digit_overflowbit / 2);
-
- const digit_t *byDigits = d2.digits();
-
- size_t n = d2.length, m = d1.length - n;
- size_t i = m + n, j = m;
-
- qtarget.beginmod(j + 1);
- rtarget.beginmod();
-
- qtarget.length = j + 1;
- digit_t *qdigits = qtarget.digits();
- rtarget.duplicate_data(d1);
- do {
- doubledigit_t ri = (doubledigit_t(rtarget.get_digit(i)) <<
- bits_per_digit) + rtarget.get_digit(i - 1);
-
- doubledigit_t q = (std::min<doubledigit_t>)(ri / byDigits[n - 1],
- digit_mask);
-
- data_t r2(qtarget.new_holder(), 0, 3), qq(qtarget.new_holder(), 0);
- while (1) {
- // We need three digits here, a doubledigit_t alone won't suffice.
- r2.set_unsigned(ri - (q * byDigits[n - 1]));
- r2 <<= bits_per_digit;
- r2 += data_t(qtarget.new_holder(), rtarget[i - 2]);
- qq.set_unsigned(q);
- if (data_t(qtarget.new_holder(), byDigits[n - 2]) * qq <= r2) break;
- --q;
- }
-
- qq.set_unsigned(q);
- data_t bq(d2 * qq);
- if (rtarget < bq) {
- --q;
- bq -= d2;
- }
-
- bq <<= bits_per_digit * (i - n);
- rtarget -= bq;
-
- qdigits[j--] = digit_t(q);
- } while (--i >= n);
- rtarget.endmod();
- qtarget.endmod();
-}
-
-//! This function weeds out single-digit division (for more efficient
-//! processing), normalizes the values if necessary, then calls sub_divide2 for
-//! the actual work.
-BOOST_XINT_INLINE void sub_divide(data_t& qtarget, data_t& rtarget, const data_t
- d1, const data_t d2)
-{
- if (d2.length == 1) {
- divide_by_single_digit(qtarget, rtarget, d1, d2[0]);
- return;
- }
-
- // The normalization step
- digit_t normalizer = static_cast<digit_t>(digit_overflowbit /
- (doubledigit_t(d2[d2.length - 1]) + 1));
- if (normalizer > 1) {
- const data_t norm(qtarget.new_holder(), normalizer);
- sub_divide2(qtarget, rtarget, d1 * norm, d2 * norm);
-
- // Denormalization step. This requires a division by a single digit_t.
- data_t tmp(qtarget.new_holder());
- divide_by_single_digit(rtarget, tmp, rtarget.duplicate(), normalizer);
- } else sub_divide2(qtarget, rtarget, d1, d2);
-}
-
-//! This function handles signs and trivial cases, and calls sub_divide for the
-//! heavy lifting.
-BOOST_XINT_INLINE void divide(data_t& qtarget, data_t& rtarget, const data_t d1,
- const data_t d2)
-{
- int sign1 = (d1.is_zero() ? 0 : d1.negative ? -1 : 1);
- int sign2 = (d2.is_zero() ? 0 : d2.negative ? -1 : 1);
- if (sign2 == 0) throw exceptions::divide_by_zero();
-
- qtarget.beginmod();
- rtarget.beginmod();
- int comp = compare(d1, d2, true);
- if (comp < 0) {
- qtarget.set(0);
- rtarget.duplicate_data(d1);
- } else if (comp == 0) {
- qtarget.set(sign1 != sign2 ? -1 : 1);
- rtarget.set(0);
- } else if (sign1 < 0 && sign2 < 0) {
- sub_divide(qtarget, rtarget, d1.negate(), d2.negate());
- qtarget.negative = false;
- rtarget.negative = true;
- } else if (sign1 < 0) {
- sub_divide(qtarget, rtarget, d1.negate(), d2);
- qtarget.negative = rtarget.negative = true;
- } else if (sign2 < 0) {
- sub_divide(qtarget, rtarget, d1, d2.negate());
- qtarget.negative = true;
- rtarget.negative = false;
- } else {
- sub_divide(qtarget, rtarget, d1, d2);
- qtarget.negative = rtarget.negative = false;
- }
- rtarget.endmod();
- qtarget.endmod();
-}
-
-BOOST_XINT_INLINE data_t::divide_t divide(const data_t d1, const data_t d2) {
- data_t q(d1.new_holder()), r(d1.new_holder());
- divide(q, r, d1, d2);
- return data_t::divide_t(q, r);
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator/=(const data_t b) {
- data_t remainder(new_holder());
- divide(*this, remainder, duplicate(), b);
- return *this;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator%=(const data_t b) {
- data_t quotient(new_holder());
- divide(quotient, *this, duplicate(), b);
- if (negative) *this += b.abs();
- return *this;
-}
-
-BOOST_XINT_INLINE data_t operator/(const data_t n1, const data_t n2) {
- return data_t(n1) /= n2;
-}
-
-BOOST_XINT_INLINE data_t operator%(const data_t n1, const data_t n2) {
- return data_t(n1) %= n2;
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Added: sandbox/xint/boost/xint/detail/divide.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/divide.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,224 @@
+
+/*
+ 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 of the divide function, and its supporting
+ functions.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_DIVIDE_HPP
+#define BOOST_INCLUDED_XINT_DIVIDE_HPP
+
+//! @cond detail
+namespace boost {
+namespace xint {
+namespace detail {
+
+BOOST_XINT_RAWINT_TPL
+void divide_by_single_digit(BOOST_XINT_RAWINT& qtarget, BOOST_XINT_RAWINT&
+ rtarget, const BOOST_XINT_RAWINT d1, digit_t d2)
+{
+ size_t d1len = d1.length;
+ const digit_t *d1digits = d1.digits();
+
+ doubledigit_t a = 0;
+
+ int m = int(d1len) - 1;
+ const digit_t *d1p = d1digits + m;
+
+ digit_t *qdig = qtarget.digits(m + 1, realloc::zero), *qp = qdig + m, *qe =
+ qdig + qtarget.max_length();
+ int i = m;
+ for (; qp >= qe && i >= 0; --i, --d1p, --qp) {
+ a |= *d1p;
+ a = ((a % d2) << bits_per_digit);
+ }
+ for (; i >= 0; --i, --d1p, --qp) {
+ a |= *d1p;
+ *qp = static_cast<digit_t>(a / d2);
+ a = ((a % d2) << bits_per_digit);
+ }
+ qtarget.length = (std::min<size_t>)(m + 1, qtarget.max_length());
+ qtarget.trim();
+
+ rtarget.digits(1, realloc::ignore)[0] = static_cast<digit_t>(a >>
+ bits_per_digit);
+ rtarget.length = 1;
+ rtarget.trim();
+}
+
+BOOST_XINT_RAWINT_TPL
+void sub_divide2(BOOST_XINT_RAWINT& qtarget, BOOST_XINT_RAWINT& rtarget, const
+ BOOST_XINT_RAWINT d1, const BOOST_XINT_RAWINT d2)
+{
+ typedef raw_integer_t<0, Secure, Alloc> BOOST_XINT_UNLIMITED;
+ assert(d2[d2.length - 1] >= digit_overflowbit / 2);
+
+ const digit_t *byDigits = d2.digits();
+
+ size_t n = d2.length, m = d1.length - n;
+ size_t i = m + n, j = m;
+
+ digit_t *qdigits = qtarget.digits(j + 1, realloc::ignore);
+ qtarget.length = (std::min)(j + 1, qtarget.max_length());
+ rtarget = d1;
+ BOOST_XINT_UNLIMITED r2(0, 3), qq;
+ do {
+ doubledigit_t ri = (doubledigit_t(rtarget.get_digit(i)) <<
+ bits_per_digit) + rtarget.get_digit(i - 1);
+ doubledigit_t q = (std::min<doubledigit_t>)(ri / byDigits[n - 1],
+ digit_mask);
+
+ while (1) {
+ // We need three digits here, a doubledigit_t alone won't suffice.
+ {
+ doubledigit_t tmp = ri - (q * byDigits[n - 1]);
+ digit_t *r2dig = r2.digits(3, realloc::ignore);
+ *r2dig++ = rtarget[i - 2];
+ *r2dig++ = static_cast<digit_t>(tmp & digit_mask);
+ tmp >>= bits_per_digit;
+ *r2dig++ = static_cast<digit_t>(tmp);
+ r2.trim();
+ }
+
+ qq.set_unsigned(q);
+ if (BOOST_XINT_UNLIMITED(byDigits[n - 2]) * qq <= r2) break;
+ --q;
+ }
+
+ BOOST_XINT_RAWINT bq(d2 * BOOST_XINT_RAWINT(q));
+ if (rtarget < bq) {
+ --q;
+ bq -= d2;
+ }
+
+ bq <<= bits_per_digit * (i - n);
+ rtarget -= bq;
+
+ qdigits[j--] = digit_t(q);
+ } while (--i >= n);
+ rtarget.trim();
+ qtarget.trim();
+}
+
+//! This function weeds out single-digit division (for more efficient
+//! processing), normalizes the values if necessary, then calls sub_divide2 for
+//! the actual work.
+BOOST_XINT_RAWINT_TPL
+void sub_divide(BOOST_XINT_RAWINT& qtarget, BOOST_XINT_RAWINT& rtarget, const
+ BOOST_XINT_RAWINT d1, const BOOST_XINT_RAWINT d2)
+{
+ if (d2.length == 1) {
+ divide_by_single_digit(qtarget, rtarget, d1, d2[0]);
+ } else {
+ // The normalization step
+ digit_t normalizer = static_cast<digit_t>(digit_overflowbit /
+ (doubledigit_t(d2[d2.length - 1]) + 1));
+ if (normalizer > 1) {
+ const BOOST_XINT_RAWINT norm(normalizer);
+ sub_divide2(qtarget, rtarget, d1 * norm, d2 * norm);
+
+ // Denormalization step. This requires division by a single digit_t.
+ BOOST_XINT_RAWINT tmp;
+ divide_by_single_digit(rtarget, tmp, rtarget, normalizer);
+ } else sub_divide2(qtarget, rtarget, d1, d2);
+ }
+}
+
+//! This function handles signs and trivial cases, and calls sub_divide for the
+//! heavy lifting.
+BOOST_XINT_RAWINT_TPL
+void divide(BOOST_XINT_RAWINT& qtarget, BOOST_XINT_RAWINT& rtarget, const
+ BOOST_XINT_RAWINT d1, const BOOST_XINT_RAWINT d2)
+{
+ int sign1 = (d1.is_zero() ? 0 : d1.negative ? -1 : 1);
+ int sign2 = (d2.is_zero() ? 0 : d2.negative ? -1 : 1);
+ if (sign2 == 0) throw exceptions::divide_by_zero();
+
+ int comp = compare(d1, d2, true);
+ if (comp < 0) {
+ qtarget.set(0);
+ rtarget = d1;
+ } else if (comp == 0) {
+ qtarget.set(sign1 != sign2 ? -1 : 1);
+ rtarget.set(0);
+ } else if (sign1 < 0 && sign2 < 0) {
+ sub_divide(qtarget, rtarget, d1.negate(), d2.negate());
+ qtarget.negative = false;
+ rtarget.negative = true;
+ } else if (sign1 < 0) {
+ sub_divide(qtarget, rtarget, d1.negate(), d2);
+ qtarget.negative = rtarget.negative = true;
+ } else if (sign2 < 0) {
+ sub_divide(qtarget, rtarget, d1, d2.negate());
+ qtarget.negative = true;
+ rtarget.negative = false;
+ } else {
+ sub_divide(qtarget, rtarget, d1, d2);
+ qtarget.negative = rtarget.negative = false;
+ }
+ rtarget.trim();
+ qtarget.trim();
+}
+
+BOOST_XINT_RAWINT_TPL
+typename BOOST_XINT_RAWINT::divide_t divide(const BOOST_XINT_RAWINT d1, const
+ BOOST_XINT_RAWINT d2)
+{
+ BOOST_XINT_RAWINT q, r;
+ divide(q, r, d1, d2);
+ return typename BOOST_XINT_RAWINT::divide_t(q, r);
+}
+
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator/=(const BOOST_XINT_RAWINT b) {
+ BOOST_XINT_RAWINT remainder;
+ divide(*this, remainder, *this, b);
+ return *this;
+}
+
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator%=(const BOOST_XINT_RAWINT b) {
+ BOOST_XINT_RAWINT quotient;
+ divide(quotient, *this, *this, b);
+ if (negative) *this += b.abs();
+ return *this;
+}
+
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator/(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ BOOST_XINT_RAWINT quotient, remainder;
+ divide(quotient, remainder, n1, n2);
+ return quotient;
+}
+
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator%(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ BOOST_XINT_RAWINT quotient, remainder;
+ divide(quotient, remainder, n1, n2);
+ if (remainder.negative) remainder += n2.abs();
+ return remainder;
+}
+
+} // namespace detail
+} // namespace xint
+} // namespace boost
+//! @endcond detail
+
+#endif // BOOST_INCLUDED_XINT_DIVIDE_HPP

Deleted: sandbox/xint/boost/xint/detail/gcd.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/gcd.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,159 +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 functions using the Greatest Common Denominator algorithm.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-struct gcd_core {
- gcd_core(const data_t n, const data_t m): u1(n.new_holder(), 1),
- u2(n.new_holder()), u3(n)
- {
- const data_t zero(n.new_holder());
- data_t t1(m), t2(n), t3(m);
- t1.beginmod();
- t2.beginmod();
- t3.beginmod();
- u1.beginmod();
- u2.beginmod();
- u3.beginmod();
-
- --t2;
- do {
- do {
- if (u3.is_even()) {
- if (u1.is_odd() || u2.is_odd()) { u1 += m; u2 += n; }
- u1 >>= 1;
- u2 >>= 1;
- u3 >>= 1;
- }
-
- if (t3.is_even() || u3 < t3) {
- // Swap the u's with the t's
- using std::swap;
- swap(u1, t1);
- swap(u2, t2);
- swap(u3, t3);
- }
- } while (u3.is_even());
-
- while (u1 < t1 || u2 < t2) { u1 += m; u2 += n; }
- u1 -= t1; u2 -= t2; u3 -= t3;
- } while (t3 > zero);
-
- while (u1 >= m && u2 >= n) { u1 -= m; u2 -= n; }
-
- u3.endmod();
- u2.endmod();
- u1.endmod();
- t3.endmod();
- t2.endmod();
- t1.endmod();
- }
-
- data_t u1, u2, u3;
-};
-
-BOOST_XINT_INLINE void gcd(data_t& target, const data_t num1, const data_t num2)
-{
- target.beginmod();
- if (num1.is_zero() && num2.is_zero()) {
- target.set(0);
- } else if (num1.is_zero()) {
- target.duplicate_data(num2);
- } else if (num2.is_zero()) {
- target.duplicate_data(num1);
- } else {
- data_t n(num1, false), m(num2, false);
-
- size_t k = 0;
- if (!getbit(n, k) && !getbit(m, k)) ++k;
- if (k != 0) { n >>= k; m >>= k; }
-
- gcd_core core(n, m);
- if (core.u3.is_zero()) {
- target.set(1);
- target <<= k;
- } else {
- target.duplicate_data(core.u3);
- target <<= k;
- }
- }
- target.endmod();
-}
-
-BOOST_XINT_INLINE void lcm(data_t& target, const data_t num1, const data_t num2)
-{
- if (num1.is_zero() || num2.is_zero()) {
- target.set(0);
- } else {
- data_t common(target.new_holder());
- gcd(common, num1, num2);
-
- target.beginmod();
- target.duplicate_data(num1);
- target *= num2;
- target /= common;
- target.negative = false;
- target.endmod();
- }
-}
-
-//! Calculates the modular inverse of n mod m, or (n^(-1)) mod m
-//! Defined as b, where n*b corresponds to 1 (mod m)
-BOOST_XINT_INLINE void invmod(data_t& target, const data_t n, const data_t m) {
- if (m.is_zero() || m.negative) throw exceptions::invalid_modulus();
-
- if (n.is_zero()) {
- target.set(0);
- } else if (n.negative) {
- target.beginmod();
- invmod(target, n.abs(), m);
- if (!target.is_zero()) {
- target.negative = true;
- target += m;
- }
- target.endmod();
- } else {
- if (n.is_even() && m.is_even()) {
- // GCD != 1, no inverse possible.
- target.set(0);
- } else {
- gcd_core core(n, m);
- if (core.u3 != data_t(target.new_holder(), 1)) {
- // GCD != 1, no inverse possible.
- target.set(0);
- } else target.duplicate_data(core.u1);
- }
- }
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/gcd.hpp (from r62397, /sandbox/xint/boost/xint/detail/gcd.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/gcd.cpp (original)
+++ sandbox/xint/boost/xint/detail/gcd.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,30 +17,21 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_GCD_HPP
+#define BOOST_INCLUDED_XINT_GCD_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
+BOOST_XINT_RAWINT_TPL
 struct gcd_core {
- gcd_core(const data_t n, const data_t m): u1(n.new_holder(), 1),
- u2(n.new_holder()), u3(n)
+ gcd_core(const BOOST_XINT_RAWINT n, const BOOST_XINT_RAWINT m): u1(1), u2(),
+ u3(n)
     {
- const data_t zero(n.new_holder());
- data_t t1(m), t2(n), t3(m);
- t1.beginmod();
- t2.beginmod();
- t3.beginmod();
- u1.beginmod();
- u2.beginmod();
- u3.beginmod();
-
+ const BOOST_XINT_RAWINT zero;
+ BOOST_XINT_RAWINT t1(m), t2(n), t3(m);
         --t2;
         do {
             do {
@@ -65,88 +56,81 @@
         } while (t3 > zero);
 
         while (u1 >= m && u2 >= n) { u1 -= m; u2 -= n; }
-
- u3.endmod();
- u2.endmod();
- u1.endmod();
- t3.endmod();
- t2.endmod();
- t1.endmod();
     }
 
- data_t u1, u2, u3;
+ BOOST_XINT_RAWINT u1, u2, u3;
 };
 
-BOOST_XINT_INLINE void gcd(data_t& target, const data_t num1, const data_t num2)
+BOOST_XINT_RAWINT_TPL
+void gcd(BOOST_XINT_RAWINT& target, const BOOST_XINT_RAWINT num1, const
+ BOOST_XINT_RAWINT num2)
 {
- target.beginmod();
     if (num1.is_zero() && num2.is_zero()) {
         target.set(0);
     } else if (num1.is_zero()) {
- target.duplicate_data(num2);
+ target = num2;
     } else if (num2.is_zero()) {
- target.duplicate_data(num1);
+ target = num1;
     } else {
- data_t n(num1, false), m(num2, false);
+ BOOST_XINT_RAWINT n(num1, false), m(num2, false);
 
         size_t k = 0;
         if (!getbit(n, k) && !getbit(m, k)) ++k;
         if (k != 0) { n >>= k; m >>= k; }
 
- gcd_core core(n, m);
+ gcd_core<Bits, Secure, Alloc> core(n, m);
         if (core.u3.is_zero()) {
             target.set(1);
             target <<= k;
         } else {
- target.duplicate_data(core.u3);
+ target = core.u3;
             target <<= k;
         }
     }
- target.endmod();
 }
 
-BOOST_XINT_INLINE void lcm(data_t& target, const data_t num1, const data_t num2)
+BOOST_XINT_RAWINT_TPL
+void lcm(BOOST_XINT_RAWINT& target, const BOOST_XINT_RAWINT num1, const
+ BOOST_XINT_RAWINT num2)
 {
     if (num1.is_zero() || num2.is_zero()) {
         target.set(0);
     } else {
- data_t common(target.new_holder());
+ BOOST_XINT_RAWINT common;
         gcd(common, num1, num2);
 
- target.beginmod();
- target.duplicate_data(num1);
- target *= num2;
- target /= common;
+ target = num1 * num2 / common;
         target.negative = false;
- target.endmod();
+ target.trim();
     }
 }
 
 //! Calculates the modular inverse of n mod m, or (n^(-1)) mod m
 //! Defined as b, where n*b corresponds to 1 (mod m)
-BOOST_XINT_INLINE void invmod(data_t& target, const data_t n, const data_t m) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT invmod(const BOOST_XINT_RAWINT n, const BOOST_XINT_RAWINT m) {
     if (m.is_zero() || m.negative) throw exceptions::invalid_modulus();
 
     if (n.is_zero()) {
- target.set(0);
+ return 0;
     } else if (n.negative) {
- target.beginmod();
- invmod(target, n.abs(), m);
+ BOOST_XINT_RAWINT target = invmod(n.abs(), m);
         if (!target.is_zero()) {
             target.negative = true;
             target += m;
         }
- target.endmod();
+ target.trim();
+ return target;
     } else {
         if (n.is_even() && m.is_even()) {
             // GCD != 1, no inverse possible.
- target.set(0);
+ return 0;
         } else {
- gcd_core core(n, m);
- if (core.u3 != data_t(target.new_holder(), 1)) {
+ gcd_core<Bits, Secure, Alloc> core(n, m);
+ if (core.u3 != BOOST_XINT_RAWINT(1)) {
                 // GCD != 1, no inverse possible.
- target.set(0);
- } else target.duplicate_data(core.u1);
+ return 0;
+ } else return core.u1;
         }
     }
 }
@@ -156,4 +140,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_GCD_HPP

Modified: sandbox/xint/boost/xint/detail/internals.hpp
==============================================================================
--- sandbox/xint/boost/xint/detail/internals.hpp (original)
+++ sandbox/xint/boost/xint/detail/internals.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -23,579 +23,65 @@
 // Leave this commented out to use it as a header-only library.
 //#define BOOST_XINT_COMPILED_LIB
 
-#include <string>
-#include <vector>
-#include <queue>
-#include <limits>
-#include <cstddef> // for size_t
-#include <cassert>
-#include <boost/integer.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/function.hpp>
-#include <boost/type_traits.hpp>
-#include <boost/static_assert.hpp>
-
-// Uncomment this to use Boost.Move, which can improve the speed when using
-// extremely large numbers.
-//#define BOOST_XINT_USE_MOVE
-
-#ifdef BOOST_XINT_USE_MOVE
- #include <boost/move/move.hpp>
- #define BOOST_XINT_COPY_ASSIGN_REF(type) BOOST_COPY_ASSIGN_REF(type)
- #define BOOST_XINT_COPYABLE_AND_MOVABLE(type) BOOST_COPYABLE_AND_MOVABLE(type)
- #define BOOST_XINT_RV_REF(type) BOOST_RV_REF(type)
- #define BOOST_XINT_MOVE(value) boost::move(value)
- #define BOOST_XINT_FORWARD(type, value) boost::forward<type>(value)
-#else
- template <typename T> class disable_boost_rv_ref: public T { };
- #define BOOST_XINT_COPY_ASSIGN_REF(type) const type&
- #define BOOST_XINT_COPYABLE_AND_MOVABLE(type)
- #define BOOST_XINT_RV_REF(type) disable_boost_rv_ref<type>
- #define BOOST_XINT_MOVE(value) value
- #define BOOST_XINT_FORWARD(type, value) value
-#endif
-
-namespace boost {
-
-//! \brief All the types and functions of the library are within this namespace.
-namespace xint {
-
-//! \brief A callback function takes no parameters and returns a bool.
-typedef boost::function<bool ()> callback_t;
+#include "../exceptions.hpp"
+#include "../random.hpp"
 
-//! \brief An empty callback_t, used as a default parameter for some functions.
-const callback_t no_callback;
+#include "basic_types_and_includes.hpp"
+#include "bitqueue.hpp"
+#include "policies.hpp"
+#include "magnitude_manager.hpp"
+#include "raw_integer.hpp"
+
+#include "log2.hpp"
+#include "shift.hpp"
+#include "bitfunctions.hpp"
+#include "andorxor.hpp"
+#include "randomgen.hpp"
+#include "random_by_size.hpp"
+#include "compare.hpp"
+
+#include "addsubtract.hpp"
+#include "multiply.hpp"
+#include "divide.hpp"
+
+#include "convert.hpp"
+
+#include "roots.hpp"
+#include "powers.hpp"
+#include "gcd.hpp"
+#include "monty.hpp"
+#include "modular.hpp"
+#include "prime.hpp"
 
-//! \brief The format for the binary representations of %integers.
-typedef std::vector<unsigned char> binary_t;
+#include "options.hpp"
 
-//! \brief A value that can be used for the 'base' parameter of the
-//! string-to-integer constructor functions.
-const size_t autobase = (std::numeric_limits<size_t>::max)();
-
-//! \brief Holds the results from a division-with-remainder call.
-template <class T>
-class base_divide_t {
- public:
- base_divide_t() { }
- base_divide_t(const T& q, const T& r): quotient(q), remainder(r) { }
- base_divide_t(const base_divide_t<T>& copy):
- quotient(copy.quotient), remainder(copy.remainder) { }
- base_divide_t(BOOST_XINT_RV_REF(base_divide_t) move) {
- quotient._swap(move.quotient); remainder._swap(move.remainder); }
-
- base_divide_t& operator=(BOOST_XINT_COPY_ASSIGN_REF(base_divide_t) copy)
- { quotient = copy.quotient; remainder = copy.remainder; return *this; }
- base_divide_t& operator=(BOOST_XINT_RV_REF(base_divide_t) move) {
- using std::swap;
- swap(quotient, move.quotient);
- swap(remainder, move.remainder);
- return *this; }
-
- T quotient, remainder;
-
- private:
- BOOST_XINT_COPYABLE_AND_MOVABLE(base_divide_t)
-};
+//! \namespace boost::xint
+//! \brief All the types and functions of the library are within this namespace.
 
+//! \namespace boost::xint::detail
 //! \brief The items within this namespace are meant for internal use only.
-namespace detail {
-//! @cond 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 minimum_digits = 1;
-const size_t bits_per_digit = std::numeric_limits<digit_t>::digits;
-const size_t digits_in_uintmax =
- (std::numeric_limits<boost::uintmax_t>::digits + bits_per_digit - 1) /
- bits_per_digit;
-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 magnitude digits of an integer. Uses the "struct hack" -- look it
-//! up if you're not familiar with it.
-struct raw_digits_t {
- private:
- size_t copy_count;
-
- public:
- const size_t max_length;
- const bool readonly;
- digit_t digits[minimum_digits]; // Must be last data item, see "struct hack"
-
- raw_digits_t(size_t max_len = 1, bool ro = false);
- raw_digits_t(size_t max_len, bool ro, digit_t init);
- size_t copy(const raw_digits_t& c, size_t length = 0);
- void copy(const digit_t *s, size_t length);
- size_t zero(size_t length = 0);
- size_t copies() const;
-
- friend class base_digitmanager_t;
-};
-
-const size_t datasize = (sizeof(raw_digits_t) + sizeof(digit_t) - 1) /
- sizeof(digit_t);
-
-//! Stores and manages the raw digits.
-class base_digitmanager_t {
- public:
- base_digitmanager_t(): raw_data(0) { }
- virtual ~base_digitmanager_t() { };
-
- raw_digits_t *get() { return raw_data; }
- const raw_digits_t *get() const { return raw_data; }
- void reset(raw_digits_t *p) { if (raw_data != p) { dec(); raw_data = p;
- inc(); } }
-
- raw_digits_t* operator->() { return raw_data; }
- const raw_digits_t* operator->() const { return raw_data; }
- void copy(base_digitmanager_t *c, size_t length) { raw_data->copy(
- *c->raw_data, length); }
-
- void resize_and_uniquify(size_t new_requested_max_length = 0);
-
- virtual base_digitmanager_t *new_of_type(base_digitmanager_t *copy = 0)
- const = 0;
- virtual size_t fixed_length() const { return 0; }
-
- /*! \name Modification Hooks
-
- beforemod and aftermod will be called once per modification, before the
- first beginmod does any work and after the last endmod finishes. The
- default implementations do nothing.
- */
- //@{
- virtual void beforemod() { }
- virtual void aftermod() { }
- virtual void endmod_hook(digit_t*) { }
- //@}
-
- protected:
- void inc() { if (raw_data) ++raw_data->copy_count; }
- void dec() { if (raw_data && --raw_data->copy_count == 0)
- dealloc(raw_data); }
-
- raw_digits_t *alloc(size_t requested_length, bool readonly = false)
- const;
- raw_digits_t *realloc(raw_digits_t *data, size_t new_requested_length)
- const;
- void dealloc(raw_digits_t *data) const;
-
- /*! \name Interface to memory allocation.
-
- These could be static functions, since they don't access any existing
- data, but static functions can't be virtual.
- */
- //@{
- virtual digit_t* raw_allocate(size_t requested_length) const = 0;
- virtual digit_t* raw_reallocate(digit_t *data, size_t new_requested_length)
- const { return 0; }
- virtual void raw_deallocate(digit_t *data, size_t length) const = 0;
- //@}
-
- virtual raw_digits_t *zerodata() const = 0;
-
- raw_digits_t *raw_data;
-
- friend void swap(base_digitmanager_t& p1, base_digitmanager_t& p2);
-};
-
-//! This is the allocator-based version of base_digitmanager_t, with a few other
-//! features.
-template <class Alloc = std::allocator<digit_t>, bool Threadsafe = true, bool
- Secure = false>
-class digitmanager_t: public base_digitmanager_t {
- BOOST_STATIC_ASSERT(sizeof(typename Alloc::value_type) == sizeof(digit_t));
-
- public:
- digitmanager_t() { reset(zerodata()); }
- digitmanager_t(size_t requested_length, bool readonly = false)
- { if (requested_length > 0) reset(alloc(requested_length, readonly)); }
- digitmanager_t(const base_digitmanager_t& copy) {
- base_digitmanager_t& c(const_cast<base_digitmanager_t&>(copy));
- reset(c.get()); }
- virtual ~digitmanager_t() { dec(); }
-
- virtual base_digitmanager_t *new_of_type(base_digitmanager_t *copy = 0)
- const { if (copy != 0) return new digitmanager_t<Alloc, Threadsafe,
- Secure>(*copy); else return new digitmanager_t<Alloc, Threadsafe,
- Secure>; }
- virtual void aftermod() { if (Threadsafe && raw_data && raw_data->copies() >
- 1) resize_and_uniquify(); }
-
- protected:
- virtual digit_t* raw_allocate(size_t requested_length) const {
- return allocator.allocate(requested_length); }
- virtual void raw_deallocate(digit_t *data, size_t length) const {
- if (Secure) memset(data, 0, length * sizeof(digit_t));
- allocator.deallocate(data, length); }
- virtual raw_digits_t *zerodata() const { static digitmanager_t z(1, true);
- return z.raw_data; }
-
- static Alloc allocator;
-};
-
-template <class Alloc, bool Threadsafe, bool Secure>
-Alloc digitmanager_t<Alloc, Threadsafe, Secure>::allocator;
-
-////////////////////////////////////////////////////////////////////////////////
-
-//! Interface between the raw data and the functions that manipulate it.
-struct data_t {
- typedef base_divide_t<data_t> divide_t;
-
- size_t length;
- bool negative;
-
- explicit data_t(base_digitmanager_t &holder, size_t len = 1, bool neg =
- false);
- explicit data_t(base_digitmanager_t *holder);
- data_t(const data_t& copy);
- data_t(const data_t& copy, bool negative);
- ~data_t();
-
- template <typename T>
- data_t(base_digitmanager_t *holder_to_copy, T n, size_t prealloc = 0,
- typename boost::enable_if<boost::is_integral<T> >::type* = 0);
-
- base_digitmanager_t *new_holder() const;
- const base_digitmanager_t *holder() const;
-
- data_t duplicate() const;
- void duplicate_data(const data_t copy);
-
- void reset(data_t p);
- data_t& operator=(const data_t& p);
-
- bool same_storage(const data_t n) const;
- bool is_unique() const;
- void make_unique();
-
- void set(int n);
- void set_signed(boost::intmax_t n);
- void set_unsigned(boost::uintmax_t n, bool neg = false);
-
- digit_t get_digit(size_t i) const;
- digit_t operator[](size_t i);
- digit_t operator[](size_t i) const { return get_digit(i); }
- digit_t *digits();
- const digit_t *digits() const;
- size_t max_length() const;
- bool is_fixed_length() const { return (dataholder->fixed_length() > 0); }
-
- bool is_zero() const;
- const data_t abs() const;
- const data_t negate() const;
-
- void extend(size_t new_length = 0, bool skip_mod = false);
-
- void from_string(const char *str, size_t length, size_t base);
- void from_string(const char *str, char **endptr, size_t base);
- void from_string(const std::string& str, size_t base = 10);
- void from_binary(xint::binary_t b, size_t bits = 0);
-
- /*! \name Modification hooks
-
- You must call beginmod (with an optional minimum size) before any
- operation that modifies the data (other than simply the negative flag),
- and endmod after it.
- */
- //!@{
- void beginmod(size_t requested_size = 0, bool extend = false);
- void endmod(bool allow_negative_zero = false);
- void beginendmod() { beginmod(); digits(); endmod(true); }
- //!@}
-
- int sign(bool signed_zero = false) const;
- bool is_odd() const;
- bool is_even() const;
- bool is_nan() const { return (dataholder->get() == 0); }
- size_t hex_digits() const;
-
- data_t& operator++(); // Preincrement
- data_t& operator--(); // Predecrement
- data_t operator++(int); // Postincrement
- data_t operator--(int); // Postdecrement
-
- bool operator!() const { return is_zero(); }
- data_t operator-() const;
- data_t& operator+() { return *this; }
- const data_t& operator+() const { return *this; }
- // Fixed-size types can also implement operator~
-
- data_t& operator+=(const data_t b);
- data_t& operator-=(const data_t b);
- data_t& operator*=(const data_t b);
- data_t& operator/=(const data_t b);
- data_t& operator%=(const data_t b);
-
- data_t& operator&=(const data_t n);
- data_t& operator|=(const data_t n);
- data_t& operator^=(const data_t n);
- data_t& operator<<=(size_t shift);
- data_t& operator>>=(size_t shift);
-
- static size_t bits_to_digits(size_t bits) { return (bits + bits_per_digit -
- 1) / bits_per_digit; }
-
- ////////////////////////////////////////////////////////////////////////////
- private:
- digit_t *digits(bool) { return (*dataholder)->digits; }
-
- base_digitmanager_t * const dataholder;
- const bool holder_managed_elsewhere;
- size_t modcount;
- size_t mod_requested_size;
- bool mod_requested_extend;
- bool call_endmod_hook;
-
- friend void swap(data_t& p1, data_t& p2);
-};
-
-// Conversion functions
-template <typename T> T to(const data_t n, typename
- boost::enable_if<boost::is_integral<T> >::type* = 0);
-std::string to_string(const data_t n, size_t base = 10, bool uppercase = false);
-xint::binary_t to_binary(const data_t n, size_t bits = 0);
-
-// Bit-manipulation functions
-bool getbit(const data_t n, size_t bit_index);
-void setbit(data_t& n, size_t bit_index);
-void clearbit(data_t& n, size_t bit_index);
-size_t lowestbit(const data_t n, size_t valueIfZero = 0);
-size_t highestbit(const data_t n, size_t valueIfZero = 0);
-
-// Random and prime number functions
-int is_prime(const data_t n, callback_t callback = no_callback);
-
-// Comparison Operators
-bool operator<(const data_t n1, const data_t n2);
-bool operator>(const data_t n1, const data_t n2);
-bool operator<=(const data_t n1, const data_t n2);
-bool operator>=(const data_t n1, const data_t n2);
-bool operator==(const data_t n1, const data_t n2);
-bool operator!=(const data_t n1, const data_t n2);
-
-// Mathematical operators
-data_t operator+(const data_t n1, const data_t n2);
-data_t operator-(const data_t n1, const data_t n2);
-data_t operator*(const data_t n1, const data_t n2);
-data_t operator/(const data_t n1, const data_t n2);
-data_t operator%(const data_t n1, const data_t n2);
-
-// Bitwise operators
-data_t operator&(const data_t n1, const data_t n2);
-data_t operator|(const data_t n1, const data_t n2);
-data_t operator^(const data_t n1, const data_t n2);
-
-// Shift operators
-data_t operator<<(const data_t n, size_t by);
-data_t operator>>(const data_t n, size_t by);
-
-// Miscellaneous
-data_t abs(const data_t n);
-size_t log2(const data_t n);
-int compare(const data_t n1, const data_t n2, bool ignoresign = false);
-
-void pow(data_t& target, const data_t n, const data_t exponent);
-void pow2(data_t& target, size_t exponent);
-void factorial(data_t& target, size_t n);
-
-void sqrt(data_t& target, const data_t n);
-
-void gcd(data_t& target, const data_t num1, const data_t num2);
-void lcm(data_t& target, const data_t num1, const data_t num2);
-void invmod(data_t& target, const data_t n, const data_t modulus);
-
-void mulmod(data_t& target, const data_t n, const data_t by, const data_t
- modulus);
-void sqrmod(data_t& target, const data_t n, const data_t modulus);
-void powmod(data_t& target, const data_t n, const data_t exponent, const data_t
- modulus, bool noMontgomery=false);
-
-void square(data_t& target, const data_t n);
-data_t::divide_t divide(const data_t d1, const data_t d2);
-void divide(data_t& qtarget, data_t& rtarget, const data_t d1, const data_t d2);
-
-size_t log10_bits(size_t bits);
-
-//! @endcond detail
-} // namespace detail
-} // namespace xint
-} // namespace boost
-
-////////////////////////////////////////////////////////////////////////////////
-// Function templates
-
-#include "../exceptions.hpp"
 
 namespace boost {
 namespace xint {
 namespace detail {
 //! @cond detail
 
-size_t log2_base(boost::uintmax_t n, size_t maxbits);
-
-template <typename T>
-data_t::data_t(base_digitmanager_t *holder, T n, size_t prealloc, typename
- boost::enable_if<boost::is_integral<T> >::type*): dataholder(holder),
- holder_managed_elsewhere(false), modcount(0)
-{
- beginmod(prealloc);
- if (std::numeric_limits<T>::is_signed) set_signed(n);
- else set_unsigned(n);
- endmod();
-}
-
-template <typename T>
-size_t log2_helper(const T n,
- typename boost::enable_if<boost::is_unsigned<T> >::type* = 0)
-{
- return log2_base(n, std::numeric_limits<T>::digits);
-}
-
-template <typename T>
-size_t log2_helper(const T n,
- typename boost::enable_if<boost::is_signed<T> >::type* = 0)
-{
- typedef typename boost::make_unsigned<T>::type uT;
- T nn = (n < 0 ? -n : n);
- return log2_base(static_cast<uT>(nn), std::numeric_limits<T>::digits);
-}
-
-template <typename T>
-size_t log2(const T n,
- typename boost::enable_if<boost::is_integral<T> >::type* = 0)
-{
- return log2_helper(n);
-}
-
-template <typename T>
-T to(const data_t n, typename boost::enable_if<boost::is_integral<T> >::type*) {
- using std::numeric_limits;
-
- // We've got to use an unfixed manager, rather than n's manager, because
- // the first n might be a fixed_integer_t which would screw up later calls
- // for other types.
- static digitmanager_t<> unfixed_manager;
- static const data_t min(unfixed_manager.new_of_type(),
- (numeric_limits<T>::min)());
- static const data_t max(unfixed_manager.new_of_type(),
- (numeric_limits<T>::max)());
- if (n < min || n > max) throw exceptions::too_big("value out of range for "
- "requested conversion");
-
- T rval = 0, shift = T(digit_overflowbit);
- for (size_t x = 0; x < n.length; ++x) {
- if (sizeof(T) > sizeof(digit_t)) rval *= shift;
- rval += static_cast<T>(n[n.length - x - 1]);
- }
- if (n.negative) rval *= -1;
- return rval;
-}
-
-template <typename charT, typename traits>
-inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
- traits>& out, const data_t 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.is_zero() ? 0 : n.negative ? -1 : 1);
- 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(n.abs(), 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, data_t& 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 {
- n.from_string(s, base);
- } catch (std::exception&) {
- // Catch invalid strings
- in.setstate(std::ios::failbit);
- }
-
- return in;
+inline size_t log10_bits(size_t bits) {
+ // large_step and count_per_large_step are based on a minimum-32-bit integer
+ assert(std::numeric_limits<boost::intmax_t>::digits >= 32);
+
+ typedef raw_integer_t<0, false, std::allocator<digit_t> > T;
+ const T large_step(1000000000), small_step(10);
+ const size_t count_per_large_step = 9, count_per_small_step = 1;
+
+ T n;
+ pow2(n, bits);
+ --n;
+
+ size_t r = 0;
+ while (n >= large_step) { n /= large_step; r += count_per_large_step; }
+ while (n >= small_step) { n /= small_step; r += count_per_small_step; }
+ return r;
 }
 
 //! @endcond detail
@@ -603,69 +89,4 @@
 } // namespace xint
 } // namespace boost
 
-namespace boost {
-namespace xint {
-//! \brief A base class for all %integer types.
-class any_integer {
- #ifndef BOOST_XINT_DOXYGEN_IGNORE
- public:
- detail::data_t& _data() { return data; }
- const detail::data_t& _data() const { return data; }
-
- size_t _get_length() const { return data.length; }
- detail::digit_t _get_digit(size_t index) const { return data[index]; }
- bool _is_fixed() const { return data.is_fixed_length(); }
-
- protected:
- any_integer(detail::base_digitmanager_t &holder, size_t len, bool neg =
- false): data(holder, len, neg) { }
- bool _is_nan() const { return data.is_nan(); }
-
- detail::data_t data;
- #endif
-};
-
-typedef size_t bitsize_t;
-
-} // namespace xint
-} // namespace boost
-
-#ifndef BOOST_XINT_COMPILED_LIB
- #include "../exceptions.hpp"
- #include "../random.hpp"
- #include "bitqueue.hpp"
- #ifdef _WIN32
- #define STRICT
- #define WIN32_LEAN_AND_MEAN
- #define NOMINMAX
- #include <windows.h>
- #endif
- #include <sstream>
- #include <fstream>
- #include <ctime>
- #include <boost/scoped_array.hpp>
- #define BOOST_XINT_INLINE inline
-
- #define BOOST_XINT_FROM_HEADER
- #include "data_t.cpp"
- #include "compare.cpp"
- #include "shift.cpp"
- #include "bitfunctions.cpp"
- #include "andorxor.cpp"
- #include "addsubtract.cpp"
- #include "multiply.cpp"
- #include "divide.cpp"
- #include "powers.cpp"
- #include "roots.cpp"
- #include "monty.cpp"
- #include "modular.cpp"
- #include "gcd.cpp"
- #include "convert.cpp"
- #include "prime.cpp"
- #include "random.cpp"
- #undef BOOST_XINT_FROM_HEADER
-#else
- #define BOOST_XINT_INLINE
-#endif // BOOST_XINT_COMPILED_LIB
-
 #endif // BOOST_INCLUDED_XINT_INTERNALS_HPP

Added: sandbox/xint/boost/xint/detail/log2.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/log2.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,72 @@
+
+/*
+ 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 log2 implementations.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_LOG2_HPP
+#define BOOST_INCLUDED_XINT_LOG2_HPP
+
+namespace boost {
+namespace xint {
+namespace detail {
+//! @cond detail
+
+inline size_t log2_base(boost::uintmax_t n, size_t maxbits) {
+ boost::uintmax_t lo = 0, hi = maxbits;
+ while (lo < hi) {
+ boost::uintmax_t s = lo + ((hi - lo) >> 1);
+ if (n >= (boost::uintmax_t(1) << s)) lo = s + 1;
+ else hi = s;
+ }
+ return size_t(lo);
+}
+
+template <typename T>
+size_t log2_helper(const T n,
+ typename boost::enable_if<boost::is_unsigned<T> >::type* = 0)
+{
+ return log2_base(n, std::numeric_limits<T>::digits);
+}
+
+template <typename T>
+size_t log2_helper(const T n,
+ typename boost::enable_if<boost::is_signed<T> >::type* = 0)
+{
+ typedef typename boost::make_unsigned<T>::type uT;
+ T nn = (n < 0 ? -n : n);
+ return log2_base(static_cast<uT>(nn), std::numeric_limits<T>::digits);
+}
+
+template <typename T>
+size_t log2(const T n,
+ typename boost::enable_if<boost::is_integral<T> >::type* = 0)
+{
+ return log2_helper(n);
+}
+
+BOOST_XINT_RAWINT_TPL
+size_t log2(const BOOST_XINT_RAWINT n) {
+ size_t r = bits_per_digit * (n.length - 1);
+ return r + log2(n[n.length - 1]);
+}
+
+//! @endcond detail
+} // namespace detail
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_LOG2_HPP

Added: sandbox/xint/boost/xint/detail/magnitude_manager.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/magnitude_manager.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,94 @@
+
+/*
+ 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 magnitude_manager_t class.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_MAGNITUDE_MANAGER_HPP
+#define BOOST_INCLUDED_XINT_MAGNITUDE_MANAGER_HPP
+
+namespace boost {
+namespace xint {
+namespace detail {
+//! @cond detail
+
+template <bitsize_t Bits, bool Secure, class Allocator>
+class magnitude_manager_t {
+ public:
+ typedef allocator_t<Bits, Secure, Allocator> Alloc;
+
+ magnitude_manager_t(): raw_data(zerodata()) { inc(); }
+ explicit magnitude_manager_t(size_t length, bool readonly = false):
+ raw_data(Alloc::alloc(length, readonly)) { inc(); }
+ magnitude_manager_t(const magnitude_manager_t<Bits, Secure, Allocator>&
+ copy): raw_data(copy.raw_data) { inc(); }
+ template <bitsize_t B, bool S, class A>
+ magnitude_manager_t(const magnitude_manager_t<B, S, A>& copy):
+ raw_data(copy.raw_data) { inc(); }
+ ~magnitude_manager_t() { dec(); }
+
+ magnitude_manager_t& operator=(const magnitude_manager_t<Bits, Secure,
+ Allocator>& copy) { reset(copy.raw_data); return *this; }
+
+ bool is_nan() const { return (raw_data == 0); }
+ void make_nan() { dec(); raw_data = 0; }
+
+ void resize_and_uniquify(size_t newsize = 0, realloc::strategy strategy =
+ realloc::copy) { raw_data = Alloc::realloc_and_uniquify(raw_data,
+ newsize, strategy); }
+
+ bool same_storage(const magnitude_manager_t<Bits, Secure, Allocator> n)
+ const { return raw_data == n.raw_data; }
+
+ // Do not call these on a NaN
+ size_t max_length() const { return raw_data->max_length; }
+ bool is_unique() const { return (raw_data->copies() == 1); }
+ digit_t *digits() { return raw_data->digits; }
+ const digit_t *digits() const { return raw_data->digits; }
+ void trim() { fixedlength_t<Bits>::trim(raw_data); }
+
+ void _swap(magnitude_manager_t<Bits, Secure, Allocator>& i2) {
+ using std::swap;
+ swap(raw_data, i2.raw_data);
+ }
+
+ private:
+ void reset(magnitude_t *p) { if (raw_data != p) { dec(); raw_data = p;
+ inc(); } }
+ void inc() { if (raw_data) Alloc::attach(raw_data); }
+ void dec() { if (raw_data) Alloc::detach(raw_data); }
+ static magnitude_t *zerodata() { static magnitude_manager_t z(1, true);
+ return z.raw_data; }
+
+ magnitude_t *raw_data;
+
+ template <bitsize_t B, bool S, class A>
+ friend class magnitude_manager_t;
+};
+
+template <bitsize_t Bits, bool Secure, class Allocator>
+void swap(magnitude_manager_t<Bits, Secure, Allocator>& p1,
+ magnitude_manager_t<Bits, Secure, Allocator>& p2)
+{
+ p1._swap(p2);
+}
+
+//! @endcond detail
+} // namespace detail
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_MAGNITUDE_MANAGER_HPP

Deleted: sandbox/xint/boost/xint/detail/modular.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/modular.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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 modular math functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "monty.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE void mulmod(data_t& target, const data_t n, const data_t by,
- const data_t modulus)
-{
- target.duplicate_data(n);
- target *= by;
- target %= modulus;
-}
-
-BOOST_XINT_INLINE void sqrmod(data_t& target, const data_t n, const data_t
- modulus)
-{
- square(target, n);
- target %= modulus;
-}
-
-BOOST_XINT_INLINE void powmod(data_t& target, const data_t n, const data_t e,
- const data_t m, bool noMontgomery)
-{
- if (m.is_zero() || m.negative) throw exceptions::invalid_modulus();
- if (e.is_zero()) { target.set(1); return; }
-
- bool neg = (n.negative && e.is_odd());
-
- // Montgomery's method is often noticeably faster, but only works if the
- // m is odd.
- if (m.is_odd() && !noMontgomery) {
- montgomeryPowerMod(target, abs(n) % m, abs(e), m);
- } else {
- data_t answer(target.new_holder(), 1), p(abs(n));
- answer.beginmod();
- p.beginmod();
-
- size_t lastBitCount = 0;
- detail::digit_t ee(e[e.length - 1]);
- while (ee != 0) { ee >>= 1; ++lastBitCount; }
-
- for (size_t eIndex = 0; eIndex < e.length; ++eIndex) {
- detail::digit_t ee(e[eIndex]);
-
- int bitCount(int(eIndex == e.length - 1 ? lastBitCount :
- detail::bits_per_digit));
- while (bitCount-- > 0) {
- if (ee & 0x01) {
- answer *= p;
- answer %= m;
- }
- sqrmod(p, p, m);
- ee >>= 1;
- }
- }
- answer.negative = neg;
- p.endmod();
- answer.endmod();
-
- target.duplicate_data(answer);
- }
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/modular.hpp (from r62397, /sandbox/xint/boost/xint/detail/modular.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/modular.cpp (original)
+++ sandbox/xint/boost/xint/detail/modular.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,49 +17,43 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "monty.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_MODULAR_HPP
+#define BOOST_INCLUDED_XINT_MODULAR_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE void mulmod(data_t& target, const data_t n, const data_t by,
- const data_t modulus)
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT mulmod(const BOOST_XINT_RAWINT n, const BOOST_XINT_RAWINT by,
+ const BOOST_XINT_RAWINT modulus)
 {
- target.duplicate_data(n);
- target *= by;
- target %= modulus;
+ return n * by % modulus;
 }
 
-BOOST_XINT_INLINE void sqrmod(data_t& target, const data_t n, const data_t
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT sqrmod(const BOOST_XINT_RAWINT n, const BOOST_XINT_RAWINT
     modulus)
 {
- square(target, n);
- target %= modulus;
+ return square(n) % modulus;
 }
 
-BOOST_XINT_INLINE void powmod(data_t& target, const data_t n, const data_t e,
- const data_t m, bool noMontgomery)
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT powmod(const BOOST_XINT_RAWINT n, const BOOST_XINT_RAWINT e,
+ const BOOST_XINT_RAWINT m, bool no_montgomery = false)
 {
     if (m.is_zero() || m.negative) throw exceptions::invalid_modulus();
- if (e.is_zero()) { target.set(1); return; }
+ if (e.is_zero()) return 1;
 
     bool neg = (n.negative && e.is_odd());
 
     // Montgomery's method is often noticeably faster, but only works if the
     // m is odd.
- if (m.is_odd() && !noMontgomery) {
- montgomeryPowerMod(target, abs(n) % m, abs(e), m);
+ if (m.is_odd() && !no_montgomery) {
+ return montgomeryPowerMod(n.abs() % m, e.abs(), m);
     } else {
- data_t answer(target.new_holder(), 1), p(abs(n));
- answer.beginmod();
- p.beginmod();
+ BOOST_XINT_RAWINT answer(1), p(n.abs());
 
         size_t lastBitCount = 0;
         detail::digit_t ee(e[e.length - 1]);
@@ -71,19 +65,15 @@
             int bitCount(int(eIndex == e.length - 1 ? lastBitCount :
                 detail::bits_per_digit));
             while (bitCount-- > 0) {
- if (ee & 0x01) {
- answer *= p;
- answer %= m;
- }
- sqrmod(p, p, m);
+ if (ee & 0x01) answer = mulmod(answer, p, m);
+ p = sqrmod(p, m);
                 ee >>= 1;
             }
         }
         answer.negative = neg;
- p.endmod();
- answer.endmod();
+ answer.trim();
 
- target.duplicate_data(answer);
+ return answer;
     }
 }
 
@@ -92,4 +82,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_MODULAR_HPP

Deleted: sandbox/xint/boost/xint/detail/monty.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/monty.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,269 +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 Montgomery Reduction functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "bitqueue.hpp"
- #include <boost/scoped_array.hpp>
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-//! Returns the low digit of the inverse of a number.
-BOOST_XINT_INLINE digit_t inverse0(const data_t n) {
- // Using the Dussé and Kalisk simplification
- doubledigit_t x = 2, y = 1;
- digit_t n0 = n[0];
- for (size_t i = 2; i <= bits_per_digit; ++i, x <<= 1)
- if (x < ((n0 * y) & ((x << 1) - 1)))
- y += x;
- return digit_t(x - y);
-}
-
-/*! \brief Returns the most efficient R value for a number and the library's
- internal representation. Used internally.
-*/
-BOOST_XINT_INLINE data_t montgomeryR(const data_t n) {
- data_t r(n.new_holder());
- pow2(r, bits_per_digit * n.length);
- return r;
-}
-
-//! Returns the Montgomery form of a number. Used for testing.
-BOOST_XINT_INLINE void toMontgomeryForm(data_t& target, const data_t n, const
- data_t m)
-{
- target.duplicate_data(n * montgomeryR(m) % m);
-}
-
-//! Returns the integer from the Montgomery form of a number. Used for testing.
-BOOST_XINT_INLINE void fromMontgomeryForm(data_t& target, const data_t n, const
- data_t m)
-{
- data_t mont(montgomeryR(m));
-
- data_t inv(target.new_holder());
- invmod(inv, mont, m);
-
- target.duplicate_data(n * inv % m);
-}
-
-/*! \brief The Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used
- internally.
-*/
-BOOST_XINT_INLINE data_t montgomeryMultiplyMod(const data_t a, const data_t b,
- const data_t n, digit_t nPrime0)
-{
- // Using the Dussé and Kalisk simplification
- // Unstated parameter B is a power of two representing the number of values
- // that a single digit can hold, i.e. digit_overflowbit
- // Unstated parameter L is the number of digits in the modulus, i.e.
- // n.length
- // Unstated parameter r is B^L
- // nPrime0 is nPrime mod B, or digit zero of nPrime
-
- const size_t L(n.length);
-
- size_t i = 0;
- data_t t(a * b), mi(a.new_holder(), 0, n.length + 1);
- t.beginmod();
- mi.beginmod();
-
- do {
- mi.set_unsigned(digit_t(t[i] * nPrime0));
- mi *= n;
- mi <<= (bits_per_digit * i);
- t += mi;
- } while (++i < L);
-
- t >>= (bits_per_digit * L); // Fast divide by r
-
- if (t >= n) t -= n;
- mi.endmod();
- t.endmod();
-
- return BOOST_XINT_MOVE(t);
-}
-
-// cMaxK sets the balance between memory/precalculations required and the number
-// of calculations required for an exponentiation. Increasing it can only reduce
-// the calculations by a small amount, whereas it increases the memory
-// requirements and number of precalculations by an exponential amount. 8
-// provides a good balance.
-const size_t cMaxK = 8;
-typedef boost::uint_t<cMaxK>::fast kbitdigit_t; // k bits have to fit into it
-typedef std::vector<kbitdigit_t> vkbitdigit_t;
-typedef std::vector<data_t> vxint_t;
-#define ddPowerOfTwo(p) (doubledigit_t(1) << p)
-
-// The splitIntoKBitDigits function assumes that cMaxK <= bits_per_digit+1,
-// it won't work properly if it isn't.
-BOOST_STATIC_ASSERT(cMaxK <= bits_per_digit + 1);
-
-// Make it a template so that the static variable won't cause problems in
-// header-only mode.
-template <typename T = void>
-class TUTable {
- public:
- typedef std::pair<int, int> value_t;
-
- const value_t& operator[](size_t x) const { return mTable[x]; }
-
- static const TUTable& get() {
- // Construct a singleton instance on demand
- if (mPtr.get()==0) mPtr.reset(new TUTable);
- return *mPtr;
- }
-
- private:
- TUTable(): mTable(new value_t[ddPowerOfTwo(cMaxK)]) {
- value_t *p=&mTable[0], *pe=p+ddPowerOfTwo(cMaxK);
- *p++=std::make_pair(0, 0);
- int i=1;
- while (p!=pe) *p++=calculateValues(i++);
- }
-
- std::pair<int, int> calculateValues(int x) {
- int r=0;
- while (1) {
- if (x & 0x01) return std::make_pair(r, x);
- ++r;
- x >>= 1;
- }
- }
-
- static std::auto_ptr<TUTable<T> > mPtr;
-
- boost::scoped_array<value_t> mTable;
-};
-
-template <typename T>
-std::auto_ptr<TUTable<T> > TUTable<T>::mPtr;
-
-BOOST_XINT_INLINE int mostEfficientK(const data_t e) {
- doubledigit_t k = cMaxK, kTarget = log2(e) - 1;
- while (k > 1 && ((k - 1) * (k << ((k - 1) << 1))
- / (ddPowerOfTwo(k) - k - 1)) >= kTarget)
- --k;
- return int(k);
-}
-
-BOOST_XINT_INLINE vxint_t precalculateOddPowersOfAa(const data_t a, const data_t
- r, const data_t n, size_t k)
-{
- data_t zero(a.new_holder()), one(a.new_holder(), 1);
- data_t aa = a * r % n, aSquared = a * a % n;
-
- vxint_t rval;
- rval.reserve(size_t(ddPowerOfTwo(k)));
- rval.push_back(one); // Anything to the zeroth power is one
- rval.push_back(aa); // Anything to the first power is itself
-
- for (doubledigit_t i = 3, ie = ddPowerOfTwo(k); i < ie; i += 2) {
- aa *= aSquared;
- aa %= n;
- rval.push_back(zero); // Even powers not needed or calculated
- rval.push_back(aa); // Odd power
- }
-
- return rval;
-}
-
-BOOST_XINT_INLINE void montgomeryPowerMod(data_t& target, const data_t a, const
- data_t e, const data_t n)
-{
- // 0 <= a < n, n is odd
- // Returns a^e mod n
-
- const TUTable<> &tuTable(TUTable<>::get());
-
- if (e.is_zero()) { target.set(1); return; }
- if (n.is_even()) throw exceptions::invalid_modulus("montgomeryPowerMod "
- "requires an odd modulus");
-
- // Precalculate some values
- const size_t k(mostEfficientK(e));
- const data_t r(montgomeryR(n));
- const digit_t nPrime0(inverse0(n));
- const vxint_t oddPowersOfAa(precalculateOddPowersOfAa(a, r, n, k));
-
- // Slice the exponent (e) up into k-bit digits
- vkbitdigit_t eDigits;
- {
- bitqueue_t q;
- for (const digit_t *dig = e.digits(), *i = dig, *ie = i + e.length;
- i <ie; ++i) q.push(*i, bits_per_digit);
-
- // The bitqueue_t returns them low-bits-first, we need to start with the
- // high bits.
- while (!q.empty()) eDigits.push_back(kbitdigit_t(q.pop(k)));
- }
-
- data_t pp(target.new_holder());
- pp.beginmod();
-
- while (eDigits.back() == 0) eDigits.pop_back();
- kbitdigit_t i = eDigits.back();
- eDigits.pop_back();
-
- if (i == 0) {
- pp = r % n;
- } else {
- std::pair<int, int> tu = tuTable[i];
- pp = oddPowersOfAa[tu.second];
- while (tu.first-- > 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
- }
-
- while (!eDigits.empty()) {
- i = eDigits.back();
- eDigits.pop_back();
-
- if (i == 0) {
- int t = int(k);
- while (t-- > 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
- } else {
- std::pair<int, int> tu = tuTable[i];
-
- size_t s = k - tu.first;
- while (s-- > 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
-
- pp = montgomeryMultiplyMod(pp, oddPowersOfAa[tu.second], n,
- nPrime0);
-
- while (tu.first-- > 0) pp = montgomeryMultiplyMod(pp, pp, n,
- nPrime0);
- }
- }
- pp.endmod();
-
- target.duplicate_data(montgomeryMultiplyMod(pp, data_t(target.new_holder(),
- 1), n, nPrime0));
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Modified: sandbox/xint/boost/xint/detail/monty.hpp
==============================================================================
--- sandbox/xint/boost/xint/detail/monty.hpp (original)
+++ sandbox/xint/boost/xint/detail/monty.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,10 +12,9 @@
 */
 
 /*! \file
- \brief Montgomery Reduction functions.
+ \brief Contains the Montgomery Reduction 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.
+ This file will be included by the library itself when needed.
 */
 
 #ifndef BOOST_INCLUDED_XINT_MONTY_HPP
@@ -26,17 +25,229 @@
 namespace xint {
 namespace detail {
 
-//! \name Montgomery Reduction functions
-//!@{
-digit_t inverse0(const data_t n);
-data_t montgomeryR(const data_t n);
-void toMontgomeryForm(data_t& target, const data_t n, const data_t m);
-void fromMontgomeryForm(data_t& target, const data_t n, const data_t m);
-data_t montgomeryMultiplyMod(const data_t x, const data_t y, const data_t m,
- digit_t nPrime0);
-void montgomeryPowerMod(data_t& target, const data_t x, const data_t e, const
- data_t m);
-//!@}
+//! Returns the low digit of the inverse of a number.
+BOOST_XINT_RAWINT_TPL
+digit_t inverse0(const BOOST_XINT_RAWINT n) {
+ // Using the Dussé and Kalisk simplification
+ doubledigit_t x = 2, y = 1;
+ digit_t n0 = n[0];
+ for (size_t i = 2; i <= bits_per_digit; ++i, x <<= 1)
+ if (x < ((n0 * y) & ((x << 1) - 1))) y += x;
+ return digit_t(x - y);
+}
+
+/*! \brief Returns the most efficient R value for a number and the library's
+ internal representation. Used internally.
+*/
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT montgomeryR(const BOOST_XINT_RAWINT n) {
+ BOOST_XINT_RAWINT r;
+ pow2(r, bits_per_digit * n.length);
+ return r;
+}
+
+//! Returns the Montgomery form of a number. Used for testing.
+BOOST_XINT_RAWINT_TPL
+void toMontgomeryForm(BOOST_XINT_RAWINT& target, const BOOST_XINT_RAWINT n,
+ const BOOST_XINT_RAWINT m)
+{
+ target = n * montgomeryR(m) % m;
+}
+
+//! Returns the integer from the Montgomery form of a number. Used for testing.
+BOOST_XINT_RAWINT_TPL
+void fromMontgomeryForm(BOOST_XINT_RAWINT& target, const BOOST_XINT_RAWINT n,
+ const BOOST_XINT_RAWINT m)
+{
+ BOOST_XINT_RAWINT mont(montgomeryR(m)), inv = invmod(mont, m);
+ target = n * inv % m;
+}
+
+/*! \brief The Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used
+ internally.
+*/
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT montgomeryMultiplyMod(const BOOST_XINT_RAWINT a, const
+ BOOST_XINT_RAWINT b, const BOOST_XINT_RAWINT n, digit_t nPrime0)
+{
+ // Using the Dussé and Kalisk simplification
+ // Unstated parameter B is a power of two representing the number of values
+ // that a single digit can hold, i.e. digit_overflowbit
+ // Unstated parameter L is the number of digits in the modulus, i.e.
+ // n.length
+ // Unstated parameter r is B^L
+ // nPrime0 is nPrime mod B, or digit zero of nPrime
+
+ const size_t L(n.length);
+
+ size_t i = 0;
+ BOOST_XINT_RAWINT t(a * b);
+
+ do {
+ BOOST_XINT_RAWINT mi(digit_t(t[i] * nPrime0));
+ mi *= n;
+ mi <<= (bits_per_digit * i);
+ t += mi;
+ } while (++i < L);
+
+ t >>= (bits_per_digit * L); // Fast divide by r
+
+ if (t >= n) t -= n;
+ return t;
+}
+
+// cMaxK sets the balance between memory/precalculations required and the number
+// of calculations required for an exponentiation. Increasing it can only reduce
+// the calculations by a small amount, whereas it increases the memory
+// requirements and number of precalculations by an exponential amount. 8
+// provides a good balance.
+const size_t cMaxK = 8;
+typedef boost::uint_t<cMaxK>::fast kbitdigit_t; // k bits have to fit into it
+typedef std::vector<kbitdigit_t> vkbitdigit_t;
+#define ddPowerOfTwo(p) (doubledigit_t(1) << p)
+
+// The splitIntoKBitDigits function assumes that cMaxK <= bits_per_digit+1,
+// it won't work properly if it isn't.
+BOOST_STATIC_ASSERT(cMaxK <= bits_per_digit + 1);
+
+// Make it a template so that the static variable won't cause problems in
+// header-only mode.
+template <typename T = void>
+class TUTable {
+ public:
+ typedef std::pair<int, int> value_t;
+
+ const value_t& operator[](size_t x) const { return mTable[x]; }
+
+ static const TUTable& get() {
+ // Construct a singleton instance on demand
+ if (mPtr.get()==0) mPtr.reset(new TUTable);
+ return *mPtr;
+ }
+
+ private:
+ TUTable(): mTable(new value_t[ddPowerOfTwo(cMaxK)]) {
+ value_t *p=&mTable[0], *pe=p+ddPowerOfTwo(cMaxK);
+ *p++=std::make_pair(0, 0);
+ int i=1;
+ while (p!=pe) *p++=calculateValues(i++);
+ }
+
+ std::pair<int, int> calculateValues(int x) {
+ int r=0;
+ while (1) {
+ if (x & 0x01) return std::make_pair(r, x);
+ ++r;
+ x >>= 1;
+ }
+ }
+
+ static std::auto_ptr<TUTable<T> > mPtr;
+
+ boost::scoped_array<value_t> mTable;
+};
+
+template <typename T>
+std::auto_ptr<TUTable<T> > TUTable<T>::mPtr;
+
+BOOST_XINT_RAWINT_TPL
+int mostEfficientK(const BOOST_XINT_RAWINT e) {
+ doubledigit_t k = cMaxK, kTarget = log2(e) - 1;
+ while (k > 1 && ((k - 1) * (k << ((k - 1) << 1))
+ / (ddPowerOfTwo(k) - k - 1)) >= kTarget)
+ --k;
+ return int(k);
+}
+
+BOOST_XINT_RAWINT_TPL
+std::vector<BOOST_XINT_RAWINT> precalculateOddPowersOfAa(const BOOST_XINT_RAWINT
+ a, const BOOST_XINT_RAWINT r, const BOOST_XINT_RAWINT n, size_t k)
+{
+ BOOST_XINT_RAWINT zero, one(1);
+ BOOST_XINT_RAWINT aa = a * r % n, aSquared = a * a % n;
+
+ std::vector<BOOST_XINT_RAWINT> rval;
+ rval.reserve(size_t(ddPowerOfTwo(k)));
+ rval.push_back(one); // Anything to the zeroth power is one
+ rval.push_back(aa); // Anything to the first power is itself
+
+ for (doubledigit_t i = 3, ie = ddPowerOfTwo(k); i < ie; i += 2) {
+ aa *= aSquared;
+ aa %= n;
+ rval.push_back(zero); // Even powers not needed or calculated
+ rval.push_back(aa); // Odd power
+ }
+
+ return rval;
+}
+
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT montgomeryPowerMod(const BOOST_XINT_RAWINT a, const
+ BOOST_XINT_RAWINT e, const BOOST_XINT_RAWINT n)
+{
+ // 0 <= a < n, n is odd
+ // Returns a^e mod n
+
+ const TUTable<> &tuTable(TUTable<>::get());
+
+ if (e.is_zero()) return 1;
+ if (n.is_even()) throw exceptions::invalid_modulus("montgomeryPowerMod "
+ "requires an odd modulus");
+
+ // Precalculate some values
+ const size_t k(mostEfficientK(e));
+ const BOOST_XINT_RAWINT r(montgomeryR(n));
+ const digit_t nPrime0(inverse0(n));
+ const std::vector<BOOST_XINT_RAWINT> oddPowersOfAa(
+ precalculateOddPowersOfAa(a, r, n, k));
+
+ // Slice the exponent (e) up into k-bit digits
+ vkbitdigit_t eDigits;
+ {
+ bitqueue_t q;
+ for (const digit_t *dig = e.digits(), *i = dig, *ie = i + e.length;
+ i <ie; ++i) q.push(*i, bits_per_digit);
+
+ // The bitqueue_t returns them low-bits-first, we need to start with the
+ // high bits.
+ while (!q.empty()) eDigits.push_back(kbitdigit_t(q.pop(k)));
+ }
+
+ while (eDigits.back() == 0) eDigits.pop_back();
+ kbitdigit_t i = eDigits.back();
+ eDigits.pop_back();
+
+ BOOST_XINT_RAWINT pp;
+ if (i == 0) {
+ pp = r % n;
+ } else {
+ std::pair<int, int> tu = tuTable[i];
+ pp = oddPowersOfAa[tu.second];
+ while (tu.first-- > 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
+ }
+
+ while (!eDigits.empty()) {
+ i = eDigits.back();
+ eDigits.pop_back();
+
+ if (i == 0) {
+ int t = int(k);
+ while (t-- > 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
+ } else {
+ std::pair<int, int> tu = tuTable[i];
+
+ size_t s = k - tu.first;
+ while (s-- > 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
+
+ pp = montgomeryMultiplyMod(pp, oddPowersOfAa[tu.second], n,
+ nPrime0);
+
+ while (tu.first-- > 0) pp = montgomeryMultiplyMod(pp, pp, n,
+ nPrime0);
+ }
+ }
+ return montgomeryMultiplyMod(pp, BOOST_XINT_RAWINT(1), n, nPrime0);
+}
 
 } // namespace detail
 } // namespace xint

Deleted: sandbox/xint/boost/xint/detail/multiply.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/multiply.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,166 +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 multiplication and squaring functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE void square(data_t& target, const data_t n) {
- target.set(0);
- target.beginmod(n.length * 2 + 1, true);
-
- const digit_t *ndigits = n.digits();
- size_t nlen = n.length;
-
- digit_t *rdigits = target.digits(), *rmax = rdigits + target.length;
-
- // Calculate the product of digits of unequal index
- size_t i = 0;
- doubledigit_t c;
- do {
- const doubledigit_t ii = ndigits[i];
- const digit_t *jp = ndigits + i + 1;
- digit_t *rp = rdigits + i + (i + 1), *rpe = rdigits + i + nlen;
- if (rpe > rmax) rpe = rmax;
-
- c = 0;
- while (rp < rpe) {
- doubledigit_t t = ii * *jp++ + *rp + c;
- *rp++ = static_cast<digit_t>(t);
- c = (t >> bits_per_digit);
- }
- if (rp < rmax) *rp = static_cast<digit_t>(c);
- } while (++i < nlen - 1);
-
- // Multiplication of inner products by two
- c = 0;
- digit_t *rp = rdigits + 1, *rpe = rdigits + (2 * nlen) - 1;
- if (rpe > rmax) rpe = rmax;
-
- if (rp < rmax) {
- do {
- doubledigit_t t = (doubledigit_t(*rp) << 1) + c;
- *rp++ = static_cast<digit_t>(t);
- c = (t >> bits_per_digit);
- } while (rp < rpe);
- if (rp < rmax) *rp = static_cast<digit_t>(c);
- }
-
- // Addition of inner squares
- const digit_t *ip = ndigits, *ipe = ndigits + nlen;
- rp = rdigits;
- c = 0;
- do {
- doubledigit_t t = doubledigit_t(*ip) * *ip + *rp + c;
- *rp++ = static_cast<digit_t>(t);
- if (rp >= rmax) break;
- c = (t >> bits_per_digit);
-
- t = c + *rp;
- *rp++ = static_cast<digit_t>(t);
- if (rp >= rmax) break;
- c = (t >> bits_per_digit);
- } while (++ip < ipe);
- if (rp < rmax) *rp += static_cast<digit_t>(c);
-
- // No need to change length
- target.negative = false;
- target.endmod();
-}
-
-BOOST_XINT_INLINE void multiply(data_t& target, const data_t n, const data_t by)
-{
- if (n.is_zero() || by.is_zero()) { target.set(0); return; }
-
- if (n.same_storage(by)) {
- if (n.negative != by.negative) {
- square(target, n);
- target.negative = true;
- return;
- } else {
- square(target, n);
- return;
- }
- }
-
- target.length = 0;
- target.beginmod(n.length + by.length, true);
-
- digit_t *adigits = target.digits(), *ae = adigits + target.max_length();
- size_t maxdigit = target.max_length(), nlen = n.length, bylen = by.length;
-
- // Now multiply the digits, starting at the least-significant digit.
- const digit_t *d1 = n.digits(), *d1e = d1 + (std::min)(nlen, maxdigit);
- for (int digit1 = 0; d1 < d1e; ++digit1, ++d1) {
- const digit_t *d2 = by.digits(), *d2e = d2 + (std::min)(bylen, maxdigit
- - digit1);
- 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 = adigits + digit1 + digit2;
- doubledigit_t addt = doubledigit_t(*a) + (t & digit_mask);
- if (addt >= digit_overflowbit) carry=1;
- *a++=static_cast<digit_t>(addt);
-
- if (a < ae) {
- addt = *a + ((t >> bits_per_digit) & digit_mask) + carry;
- if (addt >= digit_overflowbit) carry=1; else carry=0;
- *a++ = static_cast<digit_t>(addt);
-
- while (carry && a < ae) {
- addt = *a + 1;
- *a++ = static_cast<digit_t>(addt);
- if (addt < digit_overflowbit) break;
- }
- }
- }
- }
-
- // No need to change length
- target.negative = (n.negative != by.negative);
- target.endmod();
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator*=(const data_t by) {
- multiply(*this, duplicate(), by);
- return *this;
-}
-
-BOOST_XINT_INLINE data_t operator*(const data_t n1, const data_t n2) {
- data_t r(n1.new_holder());
- multiply(r, n1, n2);
- return r;
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/multiply.hpp (from r62397, /sandbox/xint/boost/xint/detail/multiply.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/multiply.cpp (original)
+++ sandbox/xint/boost/xint/detail/multiply.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,25 +17,22 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_MULTIPLY_HPP
+#define BOOST_INCLUDED_XINT_MULTIPLY_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE void square(data_t& target, const data_t n) {
- target.set(0);
- target.beginmod(n.length * 2 + 1, true);
-
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT square(const BOOST_XINT_RAWINT n) {
     const digit_t *ndigits = n.digits();
     size_t nlen = n.length;
 
- digit_t *rdigits = target.digits(), *rmax = rdigits + target.length;
+ BOOST_XINT_RAWINT target;
+ digit_t *rdigits = target.digits(n.length * 2 + 1, realloc::zero), *rmax =
+ rdigits + target.length;
 
     // Calculate the product of digits of unequal index
     size_t i = 0;
@@ -88,28 +85,27 @@
 
     // No need to change length
     target.negative = false;
- target.endmod();
+ target.trim();
+ return target;
 }
 
-BOOST_XINT_INLINE void multiply(data_t& target, const data_t n, const data_t by)
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT multiply(const BOOST_XINT_RAWINT n, const BOOST_XINT_RAWINT
+ by)
 {
- if (n.is_zero() || by.is_zero()) { target.set(0); return; }
+ if (n.is_zero() || by.is_zero()) return 0;
 
     if (n.same_storage(by)) {
         if (n.negative != by.negative) {
- square(target, n);
- target.negative = true;
- return;
+ return BOOST_XINT_RAWINT(square(n), true);
         } else {
- square(target, n);
- return;
+ return square(n);
         }
     }
 
- target.length = 0;
- target.beginmod(n.length + by.length, true);
-
- digit_t *adigits = target.digits(), *ae = adigits + target.max_length();
+ BOOST_XINT_RAWINT target;
+ digit_t *adigits = target.digits(n.length + by.length, realloc::zero),
+ *ae = adigits + target.max_length();
     size_t maxdigit = target.max_length(), nlen = n.length, bylen = by.length;
 
     // Now multiply the digits, starting at the least-significant digit.
@@ -122,15 +118,15 @@
             doubledigit_t t = doubledigit_t(*d1) * *d2;
 
             // Now add the result to the answer.
- int carry=0;
+ int carry = 0;
             digit_t *a = adigits + digit1 + digit2;
             doubledigit_t addt = doubledigit_t(*a) + (t & digit_mask);
- if (addt >= digit_overflowbit) carry=1;
+ if (addt >= digit_overflowbit) carry = 1;
             *a++=static_cast<digit_t>(addt);
 
             if (a < ae) {
                 addt = *a + ((t >> bits_per_digit) & digit_mask) + carry;
- if (addt >= digit_overflowbit) carry=1; else carry=0;
+ if (addt >= digit_overflowbit) carry = 1; else carry = 0;
                 *a++ = static_cast<digit_t>(addt);
 
                 while (carry && a < ae) {
@@ -144,18 +140,21 @@
 
     // No need to change length
     target.negative = (n.negative != by.negative);
- target.endmod();
+ target.trim();
+ return target;
 }
 
-BOOST_XINT_INLINE data_t& data_t::operator*=(const data_t by) {
- multiply(*this, duplicate(), by);
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator*=(const BOOST_XINT_RAWINT by) {
+ *this = multiply(*this, by);
     return *this;
 }
 
-BOOST_XINT_INLINE data_t operator*(const data_t n1, const data_t n2) {
- data_t r(n1.new_holder());
- multiply(r, n1, n2);
- return r;
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator*(const BOOST_XINT_RAWINT n1, const BOOST_XINT_RAWINT
+ n2)
+{
+ return multiply(n1, n2);
 }
 
 } // namespace detail
@@ -163,4 +162,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_MULTIPLY_HPP

Added: sandbox/xint/boost/xint/detail/options.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/options.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,64 @@
+/*
+ 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 arbitrary-length integer type.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_INTEGER_OPTIONS_HPP
+#define BOOST_INCLUDED_XINT_INTEGER_OPTIONS_HPP
+
+namespace boost {
+namespace xint {
+
+BOOST_PARAMETER_TEMPLATE_KEYWORD(fixedlength_tag)
+BOOST_PARAMETER_TEMPLATE_KEYWORD(threadsafe_tag)
+BOOST_PARAMETER_TEMPLATE_KEYWORD(secure_tag)
+BOOST_PARAMETER_TEMPLATE_KEYWORD(nothrow_tag)
+BOOST_PARAMETER_TEMPLATE_KEYWORD(allocator_tag)
+
+using boost::is_base_of;
+using boost::mpl::_;
+using boost::parameter::binding;
+using boost::parameter::optional;
+using boost::parameter::deduced;
+
+//! \brief Options for the integer_t template are stored in this namespace.
+namespace options {
+
+struct fixedlength_base { };
+struct threadsafe_base { };
+struct secure_base { };
+struct nothrow_base { };
+
+template <bitsize_t Bits> struct fixedlength: public fixedlength_base, public
+ boost::mpl::integral_c<bitsize_t, Bits> { };
+template <bool Value> struct threadsafe: public threadsafe_base, public
+ boost::mpl::bool_<Value> { };
+template <bool Value> struct secure: public secure_base, public
+ boost::mpl::bool_<Value> { };
+template <bool Value> struct nothrow: public nothrow_base, public
+ boost::mpl::bool_<Value> { };
+
+typedef parameter::parameters<
+ optional<deduced<tag::fixedlength_tag>, is_base_of<fixedlength_base, _> >,
+ optional<deduced<tag::threadsafe_tag>, is_base_of<threadsafe_base, _> >,
+ optional<deduced<tag::secure_tag>, is_base_of<secure_base, _> >,
+ optional<deduced<tag::nothrow_tag>, is_base_of<nothrow_base, _> >,
+ optional<deduced<tag::allocator_tag>, is_class<_> >
+> integer_signature;
+
+} // namespace options
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_INTEGER_OPTIONS_HPP

Added: sandbox/xint/boost/xint/detail/policies.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/policies.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,197 @@
+
+/*
+ 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 policy classes.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_POLICY_HPP
+#define BOOST_INCLUDED_XINT_POLICY_HPP
+
+namespace boost {
+namespace xint {
+namespace detail {
+//! @cond detail
+
+////////////////////////////////////////////////////////////////////////////////
+// Allocation
+
+struct realloc {
+ enum strategy { ignore, zero, copy, extend };
+};
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+class allocator_t {
+ BOOST_STATIC_ASSERT(sizeof(typename Alloc::value_type) == sizeof(digit_t));
+
+ public:
+ static magnitude_t *alloc(size_t size, bool readonly = false);
+ static magnitude_t *realloc_and_uniquify(magnitude_t *old, size_t newsize
+ = 0, realloc::strategy strategy = realloc::copy);
+ static magnitude_t *duplicate(magnitude_t *source, size_t newsize = 0);
+ static void dealloc(magnitude_t *p);
+
+ static void attach(magnitude_t *p);
+ static void detach(magnitude_t *p);
+
+ private:
+ static Alloc allocator;
+ static const size_t fixed_length;
+ static const size_t magnitude_datasize;
+};
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+ Alloc allocator_t<Bits, Secure, Alloc>::allocator;
+template <bitsize_t Bits, bool Secure, class Alloc>
+ const size_t allocator_t<Bits, Secure, Alloc>::fixed_length = (Bits +
+ bits_per_digit - 1) / bits_per_digit;
+template <bitsize_t Bits, bool Secure, class Alloc>
+ const size_t allocator_t<Bits, Secure, Alloc>::magnitude_datasize =
+ (sizeof(magnitude_t) + sizeof(digit_t) - 1) / sizeof(digit_t);
+
+////////////////////////////////////////////////////////////////////////////////
+// Fixed- or variable-length
+
+template <bitsize_t Bits, bitsize_t Modded = Bits % bits_per_digit>
+class fixedlength_t {
+ public:
+ static void trim(magnitude_t *p) {
+ // Only valid if Bits % bits_per_digit is non-zero.
+ p->digits[last_digit] &= mask;
+ }
+
+ private:
+ static const size_t last_digit;
+ static const digit_t mask;
+};
+
+template <bitsize_t Bits, bitsize_t Modded>
+const size_t fixedlength_t<Bits, Modded>::last_digit = ((Bits + bits_per_digit -
+ 1) / bits_per_digit) - 1;
+template <bitsize_t Bits, bitsize_t Modded>
+const digit_t fixedlength_t<Bits, Modded>::mask = digit_t((doubledigit_t(1) <<
+ (Bits % bits_per_digit)) - 1);
+
+template <bitsize_t Bits>
+class fixedlength_t<Bits, 0> {
+ public:
+ static void trim(magnitude_t*) { }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+// Function Definitions
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+magnitude_t *allocator_t<Bits, Secure, Alloc>::alloc(size_t size, bool readonly)
+{
+ if (fixed_length) size = fixed_length;
+ else if (size < minimum_digits) size = minimum_digits;
+ const size_t count = size - minimum_digits + magnitude_datasize;
+
+ digit_t *storage = 0;
+ try {
+ storage = allocator.allocate(count);
+ if (readonly) return new(storage) magnitude_t(size, readonly, 0);
+ else return new(storage) magnitude_t(size, readonly);
+ } catch (std::bad_alloc&) {
+ throw exceptions::overflow_error("Out of memory allocating integer");
+ } catch (std::exception&) {
+ // To make it exception-safe, we've got to ensure that the allocated
+ // data is properly disposed of if there's an exception, before passing
+ // the exception on.
+ if (storage) allocator.deallocate(storage, size);
+ throw;
+ }
+}
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+magnitude_t *allocator_t<Bits, Secure, Alloc>::realloc_and_uniquify(magnitude_t
+ *old, size_t newsize, realloc::strategy strategy)
+{
+ if (fixed_length) {
+ newsize = fixed_length;
+ } else if (newsize == 0) {
+ if (old) newsize = old->max_length;
+ else newsize = minimum_digits;
+ } else if (newsize < minimum_digits) newsize = minimum_digits;
+
+ magnitude_t *r = old;
+ if (old == 0 || newsize > old->max_length || old->copies() > 1) {
+ r = alloc(newsize);
+ attach(r);
+
+ if (strategy == realloc::ignore) {
+ // Do nothing.
+ } else if ((strategy == realloc::extend || strategy == realloc::copy) &&
+ old != 0)
+ {
+ const digit_t *s = old->digits, *se = s + old->max_length;
+ digit_t *t = r->digits, *te = t + r->max_length;
+ while (s != se && t != te) *t++ = *s++;
+ } else {
+ // It's realloc::zero, old == 0. Zero it.
+ digit_t *t = r->digits, *te = t + r->max_length;
+ while (t != te) *t++ = 0;
+ }
+
+ detach(old);
+ } else if (strategy == realloc::zero) {
+ digit_t *t = r->digits, *te = t + r->max_length;
+ while (t != te) *t++ = 0;
+ }
+
+ return r;
+}
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+magnitude_t *allocator_t<Bits, Secure, Alloc>::duplicate(magnitude_t *source,
+ size_t newsize)
+{
+ attach(source);
+ return realloc_and_uniquify(source, newsize, realloc::copy);
+}
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+void allocator_t<Bits, Secure, Alloc>::dealloc(magnitude_t *data) {
+ if (data == 0) return;
+
+ const size_t len = (data->max_length + magnitude_datasize - minimum_digits);
+
+ // Since the data was initialized with placement-new, we have to manually
+ // call the destructor.
+ data-> ~magnitude_t();
+
+ // Finally, dispose of it.
+ digit_t *p = reinterpret_cast<digit_t*>(data);
+ if (Secure) memset(p, 0, len * sizeof(digit_t));
+ allocator.deallocate(p, len);
+}
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+void allocator_t<Bits, Secure, Alloc>::attach(magnitude_t *p) {
+ p->inc();
+}
+
+template <bitsize_t Bits, bool Secure, class Alloc>
+void allocator_t<Bits, Secure, Alloc>::detach(magnitude_t *p) {
+ if (p->dec()) dealloc(p);
+}
+
+//! @endcond detail
+} // namespace detail
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_POLICY_HPP

Deleted: sandbox/xint/boost/xint/detail/powers.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/powers.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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 functions related to powers of a number.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-namespace boost {
-namespace xint {
-namespace detail {
-//! @cond detail
-
-BOOST_XINT_INLINE size_t count_one_bits(const data_t n) {
- size_t r = 0;
- for (const digit_t *p = n.digits(), *pe = p + n.length; p != pe; ++p) {
- digit_t nn(*p);
- while (nn != 0) {
- if (nn & 0x01) ++r;
- nn >>= 1;
- }
- }
- return r;
-}
-
-BOOST_XINT_INLINE void pow(data_t& target, const data_t n, const data_t e) {
- if (e.is_zero()) {
- // Anything to the zeroth power is one.
- target.set(1);
- return;
- } else if (e.negative) {
- // Anything to a negative power is a fractional value, which an integer
- // library can't represent.
- target.set(0);
- return;
- }
-
- bool neg = (!n.is_zero() && n.negative && e.is_odd());
-
- size_t lastBitCount = 0;
- digit_t ee(e[e.length - 1]);
- while (ee != 0) { ee >>= 1; ++lastBitCount; }
-
- data_t p(n.abs());
- p.beginmod(data_t::bits_to_digits(log2(p) * log2(e)));
-
- target.beginmod(data_t::bits_to_digits(log2(p) * count_one_bits(e)));
- target.set(1);
- for (size_t eIndex=0; eIndex < e.length; ++eIndex) {
- digit_t eee(e[eIndex]);
-
- int bitCount(int(eIndex == e.length - 1 ? lastBitCount :
- bits_per_digit));
- while (bitCount-- > 0) {
- if (eee & 0x01) target *= p;
- square(p, p);
-
- eee >>= 1;
- }
- }
- target.negative = neg;
- target.endmod();
-
- p.endmod();
-}
-
-BOOST_XINT_INLINE void pow2(data_t& target, size_t exponent) {
- target.beginmod();
- target.set(0);
- setbit(target, exponent);
- target.endmod();
-}
-
-BOOST_XINT_INLINE void factorial(data_t& target, size_t n) {
- target.beginmod(data_t::bits_to_digits(n * log2(n / 2)) + 1);
- target.set(1);
-
- data_t one(target.new_holder(), 1);
- data_t nn(target.new_holder(), n);
- while (nn > one) {
- target *= nn;
- --nn;
- }
-
- target.endmod();
-}
-
-//! @endcond detail
-} // namespace detail
-} // namespace xint
-} // namespace boost
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/powers.hpp (from r62397, /sandbox/xint/boost/xint/detail/powers.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/powers.cpp (original)
+++ sandbox/xint/boost/xint/detail/powers.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,30 +17,18 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_POWERS_HPP
+#define BOOST_INCLUDED_XINT_POWERS_HPP
 
 namespace boost {
 namespace xint {
 namespace detail {
 //! @cond detail
 
-BOOST_XINT_INLINE size_t count_one_bits(const data_t n) {
- size_t r = 0;
- for (const digit_t *p = n.digits(), *pe = p + n.length; p != pe; ++p) {
- digit_t nn(*p);
- while (nn != 0) {
- if (nn & 0x01) ++r;
- nn >>= 1;
- }
- }
- return r;
-}
-
-BOOST_XINT_INLINE void pow(data_t& target, const data_t n, const data_t e) {
+BOOST_XINT_RAWINT_TPL
+void pow(BOOST_XINT_RAWINT& target, const BOOST_XINT_RAWINT n, const
+ BOOST_XINT_RAWINT e)
+{
     if (e.is_zero()) {
         // Anything to the zeroth power is one.
         target.set(1);
@@ -58,48 +46,37 @@
     digit_t ee(e[e.length - 1]);
     while (ee != 0) { ee >>= 1; ++lastBitCount; }
 
- data_t p(n.abs());
- p.beginmod(data_t::bits_to_digits(log2(p) * log2(e)));
-
- target.beginmod(data_t::bits_to_digits(log2(p) * count_one_bits(e)));
+ BOOST_XINT_RAWINT p(n.abs());
     target.set(1);
- for (size_t eIndex=0; eIndex < e.length; ++eIndex) {
+ for (size_t eIndex = 0; eIndex < e.length; ++eIndex) {
         digit_t eee(e[eIndex]);
 
         int bitCount(int(eIndex == e.length - 1 ? lastBitCount :
             bits_per_digit));
         while (bitCount-- > 0) {
             if (eee & 0x01) target *= p;
- square(p, p);
-
+ p = square(p);
             eee >>= 1;
         }
     }
     target.negative = neg;
- target.endmod();
-
- p.endmod();
+ target.trim();
 }
 
-BOOST_XINT_INLINE void pow2(data_t& target, size_t exponent) {
- target.beginmod();
+BOOST_XINT_RAWINT_TPL void pow2(BOOST_XINT_RAWINT& target, size_t exponent) {
     target.set(0);
     setbit(target, exponent);
- target.endmod();
+ target.trim();
 }
 
-BOOST_XINT_INLINE void factorial(data_t& target, size_t n) {
- target.beginmod(data_t::bits_to_digits(n * log2(n / 2)) + 1);
+BOOST_XINT_RAWINT_TPL void factorial(BOOST_XINT_RAWINT& target, size_t n) {
     target.set(1);
 
- data_t one(target.new_holder(), 1);
- data_t nn(target.new_holder(), n);
+ BOOST_XINT_RAWINT one(1), nn(n);
     while (nn > one) {
         target *= nn;
         --nn;
     }
-
- target.endmod();
 }
 
 //! @endcond detail
@@ -107,4 +84,4 @@
 } // namespace xint
 } // namespace boost
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_POWERS_HPP

Deleted: sandbox/xint/boost/xint/detail/prime.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/prime.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,149 +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 function definitions for the prime number functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "../random.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE std::vector<int> sieveOfEratosthenes(int upTo) {
- std::vector<int> sieve;
- sieve.reserve(upTo);
-
- // Zero and one aren't prime, by definition.
- sieve.push_back(0);
- sieve.push_back(0);
-
- for (int p = 2; p < upTo; ++p) sieve.push_back(p);
-
- std::vector<int> ret;
-
- int *p = &sieve[0], *e = p + upTo;
- while (p < e) {
- if (*p == 0) { ++p; continue; }
- ret.push_back(*p);
-
- int *p2 = p + (*p);
- while (p2 < e) { *p2 = 0; p2 += *p; }
-
- ++p;
- }
-
- return ret;
-}
-
-// The Miller-Rabin Probabilistic Test of Primality
-BOOST_XINT_INLINE int isProbablePrimeBaseB(const data_t n, const data_t b,
- callback_t callback)
-{
- const data_t one(n.new_holder(), 1), nMinus1(n - one);
-
- // Find r and a satisfying: n - 1 = 2^a * r, r odd
- data_t r(nMinus1);
- unsigned long a = 0;
- while (r.is_even()) { r >>= 1; ++a; }
-
- // We check the congruence class of b^((2^i)r) % n for each i
- // from 0 to a - 1. If any one is correct, then n passes.
- // Otherwise, n fails.
- data_t test(n.new_holder());
- powmod(test, b, r, n);
- if (test == one || test == nMinus1) return 1; // Better than 3/4 chance it's prime
-
- while (a-- > 0) {
- sqrmod(test, test, n);
- if (test == nMinus1) return 1;
- }
-
- if (callback && !callback()) return -1;
- return 0;
-}
-
-BOOST_XINT_INLINE int is_prime(const data_t n, callback_t callback) {
- data_t tmp(n.new_holder(), 2);
- if (n < tmp) 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> low_primes(sieveOfEratosthenes(2000));
- const data_t zero(n.new_holder());
- std::vector<int>::const_iterator i = low_primes.begin(), ie =
- low_primes.end();
- for (; i != ie; ++i) {
- tmp.set_unsigned(*i);
- if ((n % tmp) == zero)
- return (n == tmp);
- }
-
- // Ensure that we've got a random generator.
- static std::auto_ptr<default_random_generator> gen(new
- default_random_generator);
- detail::random_generator<default_random_generator> random(*gen.get());
-
- // Run the number through the Miller-Rabin Probabilistic Test of Primality
- // a few times to see if it's actually (probably) prime.
- for (int count = 0; count < 5; ++count) {
- unsigned int k = random();
- tmp.set_unsigned(k);
- int isP = isProbablePrimeBaseB(n, tmp, callback);
- if (isP <= 0) return isP;
- }
- return 1; // Appears to be prime!
-}
-
-BOOST_XINT_INLINE void random_prime(data_t& target, base_random_generator& gen,
- size_t size_in_bits, callback_t callback)
-{
- 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()) { target.set(0); return; }
-
- // If, by rare chance, the number we're testing gets larger than the number
- // of bits requested, we have to start over with a new random number of the
- // proper size.
- data_t pe(target.new_holder());
- pow2(pe, size_in_bits + 1);
-
- const data_t two(target.new_holder(), 2);
- while (1) {
- random_by_size(target, gen, size_in_bits, true, true, false);
- while (target < pe) {
- int r = is_prime(target, callback);
- if (r < 0) { target.set(0); return; }
- if (r == 1) return;
- target += two;
- }
- }
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/prime.hpp (from r62397, /sandbox/xint/boost/xint/detail/prime.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/prime.cpp (original)
+++ sandbox/xint/boost/xint/detail/prime.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,19 +17,15 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "../random.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_PRIME_HPP
+#define BOOST_INCLUDED_XINT_PRIME_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE std::vector<int> sieveOfEratosthenes(int upTo) {
+inline std::vector<int> sieveOfEratosthenes(int upTo) {
     std::vector<int> sieve;
     sieve.reserve(upTo);
 
@@ -56,25 +52,26 @@
 }
 
 // The Miller-Rabin Probabilistic Test of Primality
-BOOST_XINT_INLINE int isProbablePrimeBaseB(const data_t n, const data_t b,
+BOOST_XINT_RAWINT_TPL
+int isProbablePrimeBaseB(const BOOST_XINT_RAWINT n, const BOOST_XINT_RAWINT b,
     callback_t callback)
 {
- const data_t one(n.new_holder(), 1), nMinus1(n - one);
+ const BOOST_XINT_RAWINT one(1), nMinus1(n - one);
 
     // Find r and a satisfying: n - 1 = 2^a * r, r odd
- data_t r(nMinus1);
+ BOOST_XINT_RAWINT r(nMinus1);
     unsigned long a = 0;
     while (r.is_even()) { r >>= 1; ++a; }
 
     // We check the congruence class of b^((2^i)r) % n for each i
     // from 0 to a - 1. If any one is correct, then n passes.
     // Otherwise, n fails.
- data_t test(n.new_holder());
- powmod(test, b, r, n);
- if (test == one || test == nMinus1) return 1; // Better than 3/4 chance it's prime
+ BOOST_XINT_RAWINT test = powmod(b, r, n);
+ if (test == one || test == nMinus1)
+ return 1; // Better than 3/4 chance it's prime
 
     while (a-- > 0) {
- sqrmod(test, test, n);
+ test = sqrmod(test, n);
         if (test == nMinus1) return 1;
     }
 
@@ -82,14 +79,15 @@
     return 0;
 }
 
-BOOST_XINT_INLINE int is_prime(const data_t n, callback_t callback) {
- data_t tmp(n.new_holder(), 2);
+BOOST_XINT_RAWINT_TPL
+int is_prime(const BOOST_XINT_RAWINT n, callback_t callback) {
+ BOOST_XINT_RAWINT tmp(2);
     if (n < tmp) 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> low_primes(sieveOfEratosthenes(2000));
- const data_t zero(n.new_holder());
+ const BOOST_XINT_RAWINT zero;
     std::vector<int>::const_iterator i = low_primes.begin(), ie =
         low_primes.end();
     for (; i != ie; ++i) {
@@ -114,28 +112,31 @@
     return 1; // Appears to be prime!
 }
 
-BOOST_XINT_INLINE void random_prime(data_t& target, base_random_generator& gen,
- size_t size_in_bits, callback_t callback)
+BOOST_XINT_RAWINT_TPL
+template <typename GenType>
+BOOST_XINT_RAWINT BOOST_XINT_RAWINT::random_prime(GenType& gen, size_t
+ size_in_bits, callback_t callback)
 {
     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()) { target.set(0); return; }
+ if (callback && !callback()) return 0;
 
     // If, by rare chance, the number we're testing gets larger than the number
     // of bits requested, we have to start over with a new random number of the
     // proper size.
- data_t pe(target.new_holder());
+ BOOST_XINT_RAWINT pe;
     pow2(pe, size_in_bits + 1);
 
- const data_t two(target.new_holder(), 2);
+ const BOOST_XINT_RAWINT two(2);
     while (1) {
- random_by_size(target, gen, size_in_bits, true, true, false);
+ BOOST_XINT_RAWINT target = random_by_size(gen, size_in_bits, true, true,
+ false);
         while (target < pe) {
             int r = is_prime(target, callback);
- if (r < 0) { target.set(0); return; }
- if (r == 1) return;
+ if (r < 0) return 0;
+ if (r == 1) return target;
             target += two;
         }
     }
@@ -146,4 +147,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_PRIME_HPP

Deleted: sandbox/xint/boost/xint/detail/random.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/random.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,200 +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 function definitions for the random number functions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "bitqueue.hpp"
- #include "../random.hpp"
-
- #ifdef _WIN32
- #define STRICT
- #define WIN32_LEAN_AND_MEAN
- #define NOMINMAX
- #include <windows.h>
- #endif
-
- #include <sstream>
- #include <fstream>
- #include <ctime>
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE void random_by_size(data_t& target, base_random_generator&
- gen, size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)
-{
- if (bits == 0) { target.set(0); return; }
-
- // Grab a bunch of bits
- bitqueue_t bitqueue;
- while (bitqueue.size() < bits) bitqueue.push(gen(),
- std::numeric_limits<base_random_generator::result_type>::digits);
-
- // Stick them into an integer
- size_t d = data_t::bits_to_digits(bits);
- target.beginmod(d);
- digit_t *tdigits = target.digits();
- target.length = (std::min)(d + 1, target.max_length());
- digit_t *pp = tdigits, *ppe = pp + target.length;
- while (pp < ppe) *pp++ = static_cast<digit_t>(bitqueue.pop(bits_per_digit));
-
- // Trim it to the proper length
- 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; }
- target.length = index + 1;
- tdigits[index] &= mask;
- for (digit_t *i = tdigits + index + 1, *ie = tdigits + target.length; i <
- ie; ++i) *i = 0;
-
- if (high_bit_on) setbit(target, bits - 1);
- if (low_bit_on) setbit(target, 0);
- target.negative = (can_be_negative && (gen() & 0x01));
- target.endmod();
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-////////////////////////////////////////////////////////////////////////////////
-// The secure random generator
-
-//! @cond
-namespace boost {
-namespace xint {
-namespace detail {
-
-#ifdef _WIN32
- template <typename T>
- struct strong_random_generator_t<T>::impl_t {
- typedef BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
- typedef DWORD result_type;
-
- impl_t(): dll(0), fn(0) {
- // This should work under WinXP, Vista, and Win7. No guarantees
- // about future compatibility, but I doubt that Microsoft will get
- // rid of it (it's too useful), and I doubt that they'll change it
- // now that it's well-known (it would break too many programs). We
- // could also use the rand_s function in more recent versions of
- // Visual C++, but that causes compatibility problems with older
- // versions of Windows.
- dll=LoadLibraryA("Advapi32.dll");
- if (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll,
- "SystemFunction036"));
- if (fn == 0) {
- destroy();
- throw exceptions::no_strong_random();
- }
- }
-
- ~impl_t() { destroy(); }
-
- result_type operator()() {
- result_type r=0;
- if (!fn(&r, sizeof(result_type)))
- throw exceptions::no_strong_random("RtlGenRandom failed");
- return r;
- }
-
- void destroy() { if (dll) FreeLibrary(dll); }
-
- HMODULE dll;
- RtlGenRandomFn fn;
- };
-
- template <typename T>
- BOOST_XINT_INLINE double strong_random_generator_t<T>::entropy() const
- { return 32; }
-#else
- template <typename T>
- struct strong_random_generator_t<T>::impl_t {
- typedef unsigned char result_type;
-
- impl_t(): rng("/dev/urandom", std::ios::binary) {
- // 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 exceptions::no_strong_random();
- }
-
- result_type operator()() {
- int r=rng.get();
- if (r==EOF) throw exceptions::no_strong_random("/dev/urandom "
- "returned EOF");
- return static_cast<result_type>(r);
- }
-
- std::ifstream rng;
- };
-
- template <typename T>
- BOOST_XINT_INLINE double strong_random_generator_t<T>::entropy() const
- { return 8; }
-#endif
-
-template <typename T>
-const bool strong_random_generator_t<T>::has_fixed_range = true;
-
-template <typename T>
-const typename strong_random_generator_t<T>::result_type
- strong_random_generator_t<T>::min_value =
- (std::numeric_limits<typename
- strong_random_generator_t<T>::impl_t::result_type>::min)();
-
-template <typename T>
-const typename strong_random_generator_t<T>::result_type
- strong_random_generator_t<T>::max_value =
- (std::numeric_limits<typename
- strong_random_generator_t<T>::impl_t::result_type>::max)();
-
-template <typename T>
-BOOST_XINT_INLINE strong_random_generator_t<T>::strong_random_generator_t():
- impl(new impl_t) { }
-
-template <typename T>
-BOOST_XINT_INLINE strong_random_generator_t<T>::~strong_random_generator_t() {
- delete impl; }
-
-template <typename T>
-BOOST_XINT_INLINE typename strong_random_generator_t<T>::result_type
- strong_random_generator_t<T>::operator()() { return (*impl)(); }
-
-template <typename T>
-BOOST_XINT_INLINE typename strong_random_generator_t<T>::result_type
- strong_random_generator_t<T>::min BOOST_PREVENT_MACRO_SUBSTITUTION () const
- { return min_value; }
-
-template <typename T>
-BOOST_XINT_INLINE typename strong_random_generator_t<T>::result_type
- strong_random_generator_t<T>::max BOOST_PREVENT_MACRO_SUBSTITUTION () const
- { return max_value; }
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Added: sandbox/xint/boost/xint/detail/random_by_size.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/random_by_size.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,70 @@
+
+/*
+ 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 random_by_size function.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_RANDOM_BY_SIZE_HPP
+#define BOOST_INCLUDED_XINT_RANDOM_BY_SIZE_HPP
+
+namespace boost {
+namespace xint {
+namespace detail {
+//! @cond detail
+
+BOOST_XINT_RAWINT_TPL
+template <typename GenType>
+BOOST_XINT_RAWINT BOOST_XINT_RAWINT::random_by_size(GenType& _gen, bitsize_t
+ bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)
+{
+ if (bits == 0) return 0;
+
+ // Grab a bunch of bits
+ random_generator<GenType> gen(_gen);
+ bitqueue_t bitqueue;
+ while (bitqueue.size() < bits) bitqueue.push(gen(),
+ std::numeric_limits<base_random_generator::result_type>::digits);
+
+ // Stick them into an integer
+ BOOST_XINT_RAWINT target;
+ size_t d = bits_to_digits(bits);
+ digit_t *tdigits = target.digits(d, realloc::ignore);
+ target.length = (std::min)(d + 1, target.max_length());
+ digit_t *pp = tdigits, *ppe = pp + target.length;
+ while (pp < ppe) *pp++ = static_cast<digit_t>(bitqueue.pop(bits_per_digit));
+
+ // Trim it to the proper length
+ 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; }
+ target.length = index + 1;
+ tdigits[index] &= mask;
+ for (digit_t *i = tdigits + index + 1, *ie = tdigits + target.length; i <
+ ie; ++i) *i = 0;
+
+ if (high_bit_on) setbit(target, bits - 1);
+ if (low_bit_on) setbit(target, 0);
+ target.negative = (can_be_negative && (gen() & 0x01));
+ target.trim();
+ return target;
+}
+
+//! @endcond detail
+} // namespace detail
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_RANDOM_BY_SIZE_HPP

Copied: sandbox/xint/boost/xint/detail/randomgen.hpp (from r62397, /sandbox/xint/boost/xint/detail/random.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/random.cpp (original)
+++ sandbox/xint/boost/xint/detail/randomgen.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,72 +12,13 @@
 */
 
 /*! \file
- \brief Contains the function definitions for the random number functions.
+ \brief Contains the function definitions for the random number classes.
 
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
- #include "bitqueue.hpp"
- #include "../random.hpp"
-
- #ifdef _WIN32
- #define STRICT
- #define WIN32_LEAN_AND_MEAN
- #define NOMINMAX
- #include <windows.h>
- #endif
-
- #include <sstream>
- #include <fstream>
- #include <ctime>
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE void random_by_size(data_t& target, base_random_generator&
- gen, size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)
-{
- if (bits == 0) { target.set(0); return; }
-
- // Grab a bunch of bits
- bitqueue_t bitqueue;
- while (bitqueue.size() < bits) bitqueue.push(gen(),
- std::numeric_limits<base_random_generator::result_type>::digits);
-
- // Stick them into an integer
- size_t d = data_t::bits_to_digits(bits);
- target.beginmod(d);
- digit_t *tdigits = target.digits();
- target.length = (std::min)(d + 1, target.max_length());
- digit_t *pp = tdigits, *ppe = pp + target.length;
- while (pp < ppe) *pp++ = static_cast<digit_t>(bitqueue.pop(bits_per_digit));
-
- // Trim it to the proper length
- 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; }
- target.length = index + 1;
- tdigits[index] &= mask;
- for (digit_t *i = tdigits + index + 1, *ie = tdigits + target.length; i <
- ie; ++i) *i = 0;
-
- if (high_bit_on) setbit(target, bits - 1);
- if (low_bit_on) setbit(target, 0);
- target.negative = (can_be_negative && (gen() & 0x01));
- target.endmod();
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
+#ifndef BOOST_INCLUDED_XINT_RANDOMGEN_HPP
+#define BOOST_INCLUDED_XINT_RANDOMGEN_HPP
 
 ////////////////////////////////////////////////////////////////////////////////
 // The secure random generator
@@ -87,6 +28,8 @@
 namespace xint {
 namespace detail {
 
+#define BOOST_XINT_INLINE inline
+
 #ifdef _WIN32
     template <typename T>
     struct strong_random_generator_t<T>::impl_t {
@@ -197,4 +140,4 @@
 } // namespace boost
 //! @endcond
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_RANDOMGEN_HPP

Added: sandbox/xint/boost/xint/detail/raw_integer.hpp
==============================================================================
--- (empty file)
+++ sandbox/xint/boost/xint/detail/raw_integer.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,340 @@
+
+/*
+ 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 raw_integer class declaration, and miscellaneous
+ definitions for member functions.
+
+ This file will be included by the library itself when needed.
+*/
+
+#ifndef BOOST_INCLUDED_XINT_RAW_INTEGER_HPP
+#define BOOST_INCLUDED_XINT_RAW_INTEGER_HPP
+
+namespace boost {
+namespace xint {
+namespace detail {
+//! @cond detail
+
+#define BOOST_XINT_RAWINT_TPL template <bitsize_t Bits, bool Secure, class \
+ Alloc>
+#define BOOST_XINT_RAWINT raw_integer_t<Bits, Secure, Alloc>
+
+BOOST_XINT_RAWINT_TPL
+class raw_integer_t {
+ public:
+ typedef magnitude_manager_t<Bits, Secure, Alloc> datatype;
+ typedef base_divide_t<BOOST_XINT_RAWINT> divide_t;
+
+ size_t length;
+ bool negative;
+
+ raw_integer_t(): length(1), negative(false), changed(false) { }
+ raw_integer_t(const BOOST_XINT_RAWINT& copy): length(copy.length),
+ negative(copy.negative), changed(false), data(copy.data) { }
+ template <bitsize_t B, bool S, class A>
+ raw_integer_t(const raw_integer_t<B,S,A>& copy): length(copy.length),
+ negative(copy.negative), changed(true), data(copy.data) { make_unique();
+ if (length > max_length()) length = max_length();
+ trim(); }
+ raw_integer_t(const BOOST_XINT_RAWINT& copy, bool neg, bool allow_zero =
+ false): length(copy.length), negative(neg), changed(false),
+ data(copy.data) { trim(allow_zero); }
+ template <typename T>
+ raw_integer_t(T n, size_t prealloc = 0, typename boost::enable_if<
+ boost::is_integral<T> >::type* = 0): length(1), negative(false),
+ changed(false) { if (std::numeric_limits<T>::is_signed) set_signed(n,
+ prealloc); else set_unsigned(n, false, prealloc); }
+ raw_integer_t(const char *s, size_t base = 10): length(1), negative(false),
+ changed(false) { from_string(s, base); }
+ raw_integer_t(const std::string& s, size_t base = 10): length(1),
+ negative(false), changed(false) { from_string(s, base); }
+ raw_integer_t(const xint::binary_t b, size_t bits = 0): length(1),
+ negative(false), changed(false) { from_binary(b, bits); }
+
+ BOOST_XINT_RAWINT& operator=(const BOOST_XINT_RAWINT& set) { length =
+ set.length; negative = set.negative; data = set.data; return *this; }
+
+ digit_t *digits(size_t resize, realloc::strategy strategy = realloc::copy);
+ const digit_t *digits() const { return data.digits(); }
+
+ digit_t get_digit(size_t i) const { return (i < max_length() ? digits()[i] :
+ 0); }
+ digit_t operator[](size_t i) { return digits()[i]; }
+ digit_t operator[](size_t i) const { return get_digit(i); }
+ size_t max_length() const { return data.max_length(); }
+ bool same_storage(const BOOST_XINT_RAWINT n) const { return
+ data.same_storage(n.data); }
+
+ int sign() const { return negative ? -1 : is_zero() ? 0 : 1; }
+ int sign(bool allow_signed_zero) const { return (!allow_signed_zero &&
+ is_zero() ? 0 : negative ? -1 : 1); }
+ bool is_zero() const { return (length == 1 && digits()[0] == 0); }
+ bool is_odd() const { return (digits()[0] & 0x01) != 0; }
+ bool is_even() const { return (digits()[0] & 0x01) == 0; }
+ size_t hex_digits() const { return (log2(*this) + 3) / 4; }
+ raw_integer_t abs() const { return raw_integer_t(*this, false); }
+ raw_integer_t negate() const { return raw_integer_t(*this, !negative); }
+
+ void set(int n) { set_signed(n); }
+ void set_signed(boost::intmax_t n, size_t prealloc = 0);
+ void set_unsigned(boost::uintmax_t n, bool neg = false, size_t prealloc =
+ 0);
+
+ bool is_nan() const { return data.is_nan(); }
+ void make_nan() { data.make_nan(); }
+
+ bool is_unique() const { return data.is_unique(); }
+ void make_unique() { if (!is_unique()) data.resize_and_uniquify(length); }
+
+ void trim(bool allow_negative_zero = false);
+
+ raw_integer_t& operator++(); // Preincrement
+ raw_integer_t& operator--(); // Predecrement
+ raw_integer_t operator++(int); // Postincrement
+ raw_integer_t operator--(int); // Postdecrement
+
+ bool operator!() const { return is_zero(); }
+ raw_integer_t operator-() const { return BOOST_XINT_RAWINT(*this,
+ !negative, true); }
+ raw_integer_t& operator+() { return *this; }
+ const raw_integer_t& operator+() const { return *this; }
+ raw_integer_t operator~() const; // For fixed-size types only!
+
+ raw_integer_t& operator+=(const raw_integer_t b);
+ raw_integer_t& operator-=(const raw_integer_t b);
+ raw_integer_t& operator*=(const raw_integer_t b);
+ raw_integer_t& operator/=(const raw_integer_t b);
+ raw_integer_t& operator%=(const raw_integer_t b);
+
+ raw_integer_t& operator&=(const raw_integer_t n);
+ raw_integer_t& operator|=(const raw_integer_t n);
+ raw_integer_t& operator^=(const raw_integer_t n);
+ raw_integer_t& operator<<=(size_t shift);
+ raw_integer_t& operator>>=(size_t shift);
+
+ void from_string(const char *str, size_t base = 10);
+ void from_string(const char *str, char **endptr, size_t base = 10);
+ void from_string(const std::string& str, size_t base = 10);
+ void from_binary(xint::binary_t b, size_t bits = 0);
+
+ template <class GenType>
+ static raw_integer_t random_by_size(GenType& gen, bitsize_t bits, bool
+ high_bit_on = false, bool low_bit_on = false, bool can_be_negative =
+ false);
+
+ template <class GenType>
+ static raw_integer_t random_prime(GenType& gen, size_t size_in_bits,
+ callback_t callback = no_callback);
+
+ void _swap(BOOST_XINT_RAWINT& i2);
+
+ private:
+ bool changed;
+ datatype data;
+
+ template <bitsize_t B, bool S, class A>
+ friend class raw_integer_t;
+};
+
+BOOST_XINT_RAWINT_TPL
+digit_t *BOOST_XINT_RAWINT::digits(size_t resize, realloc::strategy strategy) {
+ data.resize_and_uniquify(resize, strategy);
+ if (resize == 0 || resize > data.max_length()) resize = data.max_length();
+ if (strategy != realloc::copy) {
+ if (length < resize) {
+ if (strategy == realloc::extend) {
+ digit_t *d = data.digits(), *p = d + length, *pe = d + resize;
+ while (p != pe) *p++ = 0;
+ }
+ length = resize;
+ } else if (length > data.max_length()) length = data.max_length();
+ } else if (length > data.max_length()) length = data.max_length();
+ changed = true;
+ return data.digits();
+}
+
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::set_signed(boost::intmax_t n, size_t prealloc) {
+ if (n >= 0) {
+ if (n <= digit_mask) {
+ length = 1;
+ negative = false;
+ if (prealloc != 0) {
+ digits(prealloc, realloc::zero)[0] = static_cast<digit_t>(n);
+ } else {
+ digits(1, realloc::ignore)[0] = static_cast<digit_t>(n);
+ }
+ trim();
+ } else set_unsigned(n, false, prealloc);
+ } else if (n == (std::numeric_limits<boost::intmax_t>::min)()) {
+ // Have to treat the minimum number carefully, because -n is not
+ // what you'd think it is.
+ set_unsigned(-(n + 1), true, prealloc);
+ --*this;
+ } else set_unsigned(-n, true, prealloc);
+}
+
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::set_unsigned(boost::uintmax_t n, bool neg, size_t
+ prealloc)
+{
+ if (n <= digit_mask) {
+ length = 1;
+ if (prealloc != 0) {
+ digits(prealloc, realloc::zero)[0] = static_cast<digit_t>(n);
+ } else {
+ digits(1, realloc::ignore)[0] = static_cast<digit_t>(n);
+ }
+ } else {
+ digit_t *d = digits((std::max)(digits_in_uintmax, prealloc),
+ realloc::ignore), *i = d, *ie = i + max_length();
+ while (n != 0 && i != ie) {
+ *i++ = static_cast<digit_t>(n);
+ n >>= bits_per_digit;
+ }
+ length = (i - d);
+ }
+ negative = neg;
+ trim();
+}
+
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::trim(bool allow_negative_zero) {
+ assert(length <= max_length());
+
+ bool zero = false;
+ if (changed) {
+ data.trim();
+ if (length > 1) {
+ digit_t *d = data.digits(), *i = d + length - 1;
+ if (*i == 0) {
+ do { --i; } while (i > d && *i == 0);
+ length = size_t(i - d) + 1;
+ if (i == d && *i == 0) zero = true;
+ }
+ } else if (data.digits()[0] == 0) zero = true;
+ changed = false;
+ } else if (length == 1 && data.digits()[0] == 0) zero = true;
+ if (zero && !allow_negative_zero) negative = false;
+}
+
+BOOST_XINT_RAWINT_TPL
+void BOOST_XINT_RAWINT::_swap(BOOST_XINT_RAWINT& i2) {
+ using std::swap;
+ swap(length, i2.length);
+ swap(negative, i2.negative);
+ swap(changed, i2.changed);
+ swap(data, i2.data);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Free functions
+
+BOOST_XINT_RAWINT_TPL
+void swap(BOOST_XINT_RAWINT& i1, BOOST_XINT_RAWINT& i2) {
+ i1._swap(i2);
+}
+
+template <typename charT, typename traits, bitsize_t Bits, bool Secure, class \
+ Alloc>
+inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
+ traits>& out, const BOOST_XINT_RAWINT 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.is_zero() ? 0 : n.negative ? -1 : 1);
+ 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(n.abs(), base, upperCase);
+ } else {
+ out << to_string(n, base, upperCase);
+ }
+ return out;
+}
+
+template <typename charT, typename traits, bitsize_t Bits, bool Secure, class \
+ Alloc>
+inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
+ traits>& in, BOOST_XINT_RAWINT& 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 {
+ n.from_string(s, base);
+ } catch (std::exception&) {
+ // Catch invalid strings
+ in.setstate(std::ios::failbit);
+ }
+
+ return in;
+}
+
+//! @endcond detail
+} // namespace detail
+} // namespace xint
+} // namespace boost
+
+#endif // BOOST_INCLUDED_XINT_RAW_INTEGER_HPP

Deleted: sandbox/xint/boost/xint/detail/roots.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/roots.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,66 +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 square-root function definition, and any future
- root-related ones.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE void sqrt(data_t& target, data_t n) {
- if (n.is_zero()) { target.set(0); return; }
- if (n.negative) throw exceptions::cannot_represent("library cannot "
- "represent imaginary values (tried to take sqrt of negative number)");
-
- // A naive implementation using pure integers can result in an endless loop,
- // cycling between two numbers that are approximately correct (try
- // sqrt(23)). To deal with that, we multiply everything by an even power of
- // two.
- const size_t extra_bits = 1;
- n <<= (extra_bits * 2);
-
- // Initial guess is half the length of n, in bits
- target.beginmod();
- target.set(0);
- setbit(target, log2(n) / 2);
-
- // Now refine it until we're as close as we can get.
- while (1) {
- data_t guess((target + (n / target)) >> 1);
- if ((target >> extra_bits) == (guess >> extra_bits)) break;
- target.duplicate_data(guess);
- }
-
- // Remove half of the added bits.
- target >>= extra_bits;
- target.endmod();
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/roots.hpp (from r62397, /sandbox/xint/boost/xint/detail/roots.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/roots.cpp (original)
+++ sandbox/xint/boost/xint/detail/roots.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -18,21 +18,19 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_ROOTS_HPP
+#define BOOST_INCLUDED_XINT_ROOTS_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE void sqrt(data_t& target, data_t n) {
- if (n.is_zero()) { target.set(0); return; }
- if (n.negative) throw exceptions::cannot_represent("library cannot "
- "represent imaginary values (tried to take sqrt of negative number)");
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT square_root(BOOST_XINT_RAWINT n) {
+ if (n.is_zero()) return 0;
+ if (n.negative) throw exceptions::cannot_represent("cannot represent "
+ "imaginary values (tried to take square_root of negative number)");
 
     // A naive implementation using pure integers can result in an endless loop,
     // cycling between two numbers that are approximately correct (try
@@ -42,20 +40,19 @@
     n <<= (extra_bits * 2);
 
     // Initial guess is half the length of n, in bits
- target.beginmod();
- target.set(0);
+ BOOST_XINT_RAWINT target;
     setbit(target, log2(n) / 2);
 
     // Now refine it until we're as close as we can get.
     while (1) {
- data_t guess((target + (n / target)) >> 1);
+ BOOST_XINT_RAWINT guess((target + (n / target)) >> 1);
         if ((target >> extra_bits) == (guess >> extra_bits)) break;
- target.duplicate_data(guess);
+ target = guess;
     }
 
     // Remove half of the added bits.
     target >>= extra_bits;
- target.endmod();
+ return target;
 }
 
 } // namespace detail
@@ -63,4 +60,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_ROOTS_HPP

Deleted: sandbox/xint/boost/xint/detail/shift.cpp
==============================================================================
--- sandbox/xint/boost/xint/detail/shift.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,112 +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-shifting function definitions.
-
- This file will be included by the library itself when needed.
-*/
-
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
-
-//! @cond detail
-namespace boost {
-namespace xint {
-namespace detail {
-
-BOOST_XINT_INLINE data_t& data_t::operator<<=(size_t byBits) {
- if (byBits == 0) return *this;
-
- // bits/dchunks is distance to move
- size_t dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit;
- size_t anslen = length + dchunks + (bits != 0 ? 1 : 0);
- beginmod(anslen);
-
- // nlen is one greater than top source byte to move
- size_t nlen = (std::min)(length, anslen - dchunks - (bits != 0 ? 1 : 0));
-
- digit_t *dstart = digits();
- if (bits != 0 && dchunks + 1 < anslen) {
- // Handle both bits and dchunks in one pass
- const digit_t *s = dstart + nlen - 1;
- digit_t *t = dstart + nlen + dchunks, *te = dstart + max_length();
- length = (std::min<size_t>)(t - dstart + 1, max_length());
-
- while (t >= te && s > dstart) { --t; --s; }
- if (t < te) *t-- = *s >> (bits_per_digit - bits); else --t;
- while (s > dstart) {
- *t = (*s-- << bits);
- *t-- |= (*s >> (bits_per_digit - bits));
- }
- *t-- = (*s << bits);
-
- while (t >= dstart) *t-- = 0;
- } else if (dchunks != 0 && dchunks < anslen) {
- length = anslen;
- memmove(dstart + dchunks, dstart, sizeof(digit_t) * nlen);
- memset(dstart, 0, dchunks * sizeof(digit_t));
- } else {
- set(0);
- }
-
- endmod();
- return *this;
-}
-
-BOOST_XINT_INLINE data_t& data_t::operator>>=(size_t byBits) {
- if (byBits == 0) return *this;
-
- size_t dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit,
- bits2 = bits_per_digit - bits;
-
- beginmod();
- digit_t *tgt = digits();
-
- if (dchunks < length) {
- if (bits != 0) {
- // Handle both bits and dchunks in one pass
- const digit_t *s = tgt + dchunks, *se = tgt + length - 1;
- digit_t *t = tgt;
- while (s != se) {
- *t = (*s++ >> bits);
- *t++ |= (*s << bits2);
- }
- *t++ = (*s >> bits);
- length = (t - tgt);
- } else if (dchunks != 0) {
- memmove(tgt, tgt + dchunks, sizeof(digit_t) * (length - dchunks));
- length -= dchunks;
- }
- } else set(0);
- endmod();
- return *this;
-}
-
-BOOST_XINT_INLINE data_t operator<<(data_t n, size_t bits) {
- return (n <<= bits);
-}
-
-BOOST_XINT_INLINE data_t operator>>(data_t n, size_t bits) {
- return (n >>= bits);
-}
-
-} // namespace detail
-} // namespace xint
-} // namespace boost
-//! @endcond detail
-
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)

Copied: sandbox/xint/boost/xint/detail/shift.hpp (from r62397, /sandbox/xint/boost/xint/detail/shift.cpp)
==============================================================================
--- /sandbox/xint/boost/xint/detail/shift.cpp (original)
+++ sandbox/xint/boost/xint/detail/shift.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,29 +17,26 @@
     This file will be included by the library itself when needed.
 */
 
-#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
-
-#if defined(BOOST_XINT_COMPILED_LIB)
- #include "internals.hpp"
-#endif // defined(BOOST_XINT_COMPILED_LIB)
+#ifndef BOOST_INCLUDED_XINT_SHIFT_HPP
+#define BOOST_INCLUDED_XINT_SHIFT_HPP
 
 //! @cond detail
 namespace boost {
 namespace xint {
 namespace detail {
 
-BOOST_XINT_INLINE data_t& data_t::operator<<=(size_t byBits) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator<<=(size_t byBits) {
     if (byBits == 0) return *this;
 
     // bits/dchunks is distance to move
     size_t dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit;
     size_t anslen = length + dchunks + (bits != 0 ? 1 : 0);
- beginmod(anslen);
+ digit_t *dstart = digits(anslen);
 
     // nlen is one greater than top source byte to move
     size_t nlen = (std::min)(length, anslen - dchunks - (bits != 0 ? 1 : 0));
 
- digit_t *dstart = digits();
     if (bits != 0 && dchunks + 1 < anslen) {
         // Handle both bits and dchunks in one pass
         const digit_t *s = dstart + nlen - 1;
@@ -63,19 +60,18 @@
         set(0);
     }
 
- endmod();
+ trim();
     return *this;
 }
 
-BOOST_XINT_INLINE data_t& data_t::operator>>=(size_t byBits) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT& BOOST_XINT_RAWINT::operator>>=(size_t byBits) {
     if (byBits == 0) return *this;
 
     size_t dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit,
         bits2 = bits_per_digit - bits;
 
- beginmod();
- digit_t *tgt = digits();
-
+ digit_t *tgt = digits(0);
     if (dchunks < length) {
         if (bits != 0) {
             // Handle both bits and dchunks in one pass
@@ -92,15 +88,17 @@
             length -= dchunks;
         }
     } else set(0);
- endmod();
+ trim();
     return *this;
 }
 
-BOOST_XINT_INLINE data_t operator<<(data_t n, size_t bits) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator<<(BOOST_XINT_RAWINT n, size_t bits) {
     return (n <<= bits);
 }
 
-BOOST_XINT_INLINE data_t operator>>(data_t n, size_t bits) {
+BOOST_XINT_RAWINT_TPL
+BOOST_XINT_RAWINT operator>>(BOOST_XINT_RAWINT n, size_t bits) {
     return (n >>= bits);
 }
 
@@ -109,4 +107,4 @@
 } // namespace boost
 //! @endcond detail
 
-#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)
+#endif // BOOST_INCLUDED_XINT_SHIFT_HPP

Deleted: sandbox/xint/boost/xint/fixed_integer.hpp
==============================================================================
--- sandbox/xint/boost/xint/fixed_integer.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,1020 +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 fixed-size integer type.
-*/
-
-#ifndef BOOST_INCLUDED_XINT_FIXED_INTEGER_HPP
-#define BOOST_INCLUDED_XINT_FIXED_INTEGER_HPP
-
-#include "detail/internals.hpp"
-#include "random.hpp"
-
-namespace boost {
-namespace xint {
-
-#ifdef _WIN32
- // The file's constructors make heavy use of the 'this' pointer, in a safe
- // manner. MSVC isn't smart enough to know that it's safe.
- #pragma warning(push)
- #pragma warning(disable: 4355)
-#endif
-
-#ifdef BOOST_XINT_DOXYGEN_IGNORE
- // The documentation should see a simplified version of the functions.
- #define BOOST_XINT_FINTEGER_INITIAL_TPL template<...>
- #define BOOST_XINT_FINTEGER_TPL template<...>
- #define BOOST_XINT_FINTEGER_TYPE fixed_integer
-#else
- #define BOOST_XINT_FINTEGER_INITIAL_TPL template <boost::xint::bitsize_t \
- Bits, class Alloc = std::allocator<detail::digit_t>, bool Threadsafe = \
- true, bool Secure = false>
- #define BOOST_XINT_FINTEGER_TPL template<boost::xint::bitsize_t Bits, \
- class Alloc, bool Threadsafe, bool Secure>
- #define BOOST_XINT_FINTEGER_TYPE fixed_integer<Bits, Alloc, Threadsafe, \
- Secure>
-#endif
-
-//! @cond detail
-namespace detail {
-/*! This is the fixed-size version of digitmanager_t.
-
- I tried adding a memory cache to this, until I realized that it would need
- to be thread-local or it would break thread safety. Although I could use
- Boost.Thread to get thread-local variables, adding a dependency on a
- compiled library isn't very attractive, so I'm deferring any caching to the
- allocator. That's really a better place for it anyway.
-*/
-template <bitsize_t Bits, class Alloc = std::allocator<digit_t>, bool Threadsafe
- = true, bool Secure = false>
-class fixed_digitmanager_t: public digitmanager_t<Alloc, Threadsafe, Secure> {
- public:
- fixed_digitmanager_t() { }
- fixed_digitmanager_t(size_t requested_length, bool readonly = false):
- digitmanager_t<Alloc, Threadsafe, Secure>(requested_length, readonly)
- { }
- fixed_digitmanager_t(const base_digitmanager_t& copy):
- digitmanager_t<Alloc, Threadsafe, Secure>(copy) { }
-
- virtual base_digitmanager_t *new_of_type(base_digitmanager_t *copy = 0)
- const { if (copy != 0) return new fixed_digitmanager_t<Bits, Alloc,
- Threadsafe, Secure>(*copy); else return new fixed_digitmanager_t<Bits,
- Alloc, Threadsafe, Secure>; }
- virtual size_t fixed_length() const { return fixed; }
- virtual void endmod_hook(digit_t *p) { *(p + last_digit_index) &=
- last_digit_mask; }
-
- protected:
- static const size_t fixed, last_digit_index;
- static const digit_t last_digit_mask;
-};
-
-template <bitsize_t Bits, class Alloc, bool Threadsafe, bool Secure>
-const size_t fixed_digitmanager_t<Bits, Alloc, Threadsafe, Secure>::fixed =
- detail::data_t::bits_to_digits(Bits);
-template <bitsize_t Bits, class Alloc, bool Threadsafe, bool Secure> const
- size_t fixed_digitmanager_t<Bits, Alloc, Threadsafe,
- Secure>::last_digit_index = fixed_digitmanager_t<Bits, Alloc, Threadsafe,
- Secure>::fixed - 1;
-template <bitsize_t Bits, class Alloc, bool Threadsafe, bool Secure> const
- digit_t fixed_digitmanager_t<Bits, Alloc, Threadsafe,
- Secure>::last_digit_mask = (Bits % detail::bits_per_digit)
- ? digit_t((doubledigit_t(1) << (Bits % detail::bits_per_digit)) - 1)
- : detail::digit_mask;
-} // namespace detail
-//! @endcond detail
-
-/*! \brief A fixed-size integer type.
-
- \tparam Bits The number of bits that the magnitude of the %fixed_integer
- type should be limited to. This can be any number greater than zero.
-
- \tparam Alloc The allocator to use. It must be for the \c
- boost::xint::detail::digit_t type.
-
- \tparam Threadsafe If \c true, the library ensures that each object has its
- own unique storage before returning it. If \c false, identical objects are
- allowed to share storage using a copy-on-write design, potentially
- increasing the speed of the library, but making it unsafe for multithreaded
- use (with \ref threadsafe "some exceptions"). The library allows
- copy-on-write for internal functions regardless of this parameter, which is
- safe because the internal functions are single-threaded.
-
- \tparam Secure If \c true, the library zeros out all memory before
- deallocating it, for maximum security.
-
-%fixed_integer types are more processor-efficient than variable-sized %integers,
-because they seldom need to do any allocation once they're created. However,
-they can be less memory-efficient for holding smaller values. They also silently
-discard the upper bits on any value that is too big for them, which can bite the
-unwary.
-
-\note The number of bits refers only to the unsigned magnitude of the number.
-The sign is stored separately. This means that, for example, a \c
-fixed_integer<8> has a range of -255 to +255, not -128 to +127 like an \c
-int8_t.
-
-\par
-Also note that when calculating with %fixed_integer types, the number does not
-"wrap around" when it exceeds the type's size like the built-in signed %integer
-types do. It is truncated to the lower bits instead. For example,
-<code>fixed_integer<8>(-255) - 1</code> and <code>fixed_integer<8>(255) +
-1</code> will both be zero. However, the sign (on non-zero answers) is
-preserved, so <code>fixed_integer<8>(-255) - 2</code> will be -1.
-*/
-BOOST_XINT_FINTEGER_INITIAL_TPL
-class fixed_integer: public detail::fixed_digitmanager_t<Bits, Alloc,
- Threadsafe, Secure>, public any_integer
-{
- public:
- typedef BOOST_XINT_FINTEGER_TYPE type;
-
- //! \name Constructors & Destructors
- //!@{
- fixed_integer();
- fixed_integer(const BOOST_XINT_FINTEGER_TYPE& b, bool force_thread_safety =
- false);
- fixed_integer(BOOST_XINT_RV_REF(type) b): any_integer(*this,1) { _swap(b); }
- explicit fixed_integer(const char *str, size_t base = 10);
- explicit fixed_integer(const char *str, char **endptr, size_t base = 10);
- explicit fixed_integer(const std::string& str, size_t base = 10);
- explicit fixed_integer(const xint::binary_t b, bitsize_t bits = 0);
- explicit fixed_integer(const any_integer& other, bool force_thread_safety =
- false);
- template <typename Type> fixed_integer(const Type n, typename
- boost::enable_if<boost::is_integral<Type> >::type* = 0);
-
- #ifndef BOOST_XINT_DOXYGEN_IGNORE
- //! This one is used internally.
- fixed_integer(const detail::data_t c): detail::fixed_digitmanager_t<Bits,
- Alloc, Threadsafe, Secure>(*c.holder()), any_integer(*this, c.length,
- c.negative) { data.beginendmod(); }
- #endif
- //!@}
-
- /*! \name Mathematical and Bitwise Operators
- \brief These operate exactly like their counterparts for the built-in
- %integer types.
- */
- //@{
- BOOST_XINT_FINTEGER_TYPE& operator=(BOOST_XINT_COPY_ASSIGN_REF(type) c);
- BOOST_XINT_FINTEGER_TYPE& operator=(BOOST_XINT_RV_REF(type) c) { _swap(c);
- return *this; }
- template <typename Type> BOOST_XINT_FINTEGER_TYPE& operator=(const Type n) {
- BOOST_XINT_FINTEGER_TYPE nn(n); _swap(nn); return *this; }
-
- bool operator!() const { return data.is_zero(); }
- BOOST_XINT_FINTEGER_TYPE operator-() const;
- BOOST_XINT_FINTEGER_TYPE& operator+() { return *this; }
- const BOOST_XINT_FINTEGER_TYPE& operator+() const { return *this; }
- BOOST_XINT_FINTEGER_TYPE operator~() const;
-
- BOOST_XINT_FINTEGER_TYPE& operator+=(const BOOST_XINT_FINTEGER_TYPE b);
- BOOST_XINT_FINTEGER_TYPE& operator-=(const BOOST_XINT_FINTEGER_TYPE b);
- BOOST_XINT_FINTEGER_TYPE& operator*=(const BOOST_XINT_FINTEGER_TYPE b);
- BOOST_XINT_FINTEGER_TYPE& operator/=(const BOOST_XINT_FINTEGER_TYPE b);
- BOOST_XINT_FINTEGER_TYPE& operator%=(const BOOST_XINT_FINTEGER_TYPE b);
-
- BOOST_XINT_FINTEGER_TYPE& operator++();
- BOOST_XINT_FINTEGER_TYPE& operator--();
- BOOST_XINT_FINTEGER_TYPE operator++(int);
- BOOST_XINT_FINTEGER_TYPE operator--(int);
-
- BOOST_XINT_FINTEGER_TYPE& operator&=(const BOOST_XINT_FINTEGER_TYPE n);
- BOOST_XINT_FINTEGER_TYPE& operator|=(const BOOST_XINT_FINTEGER_TYPE n);
- BOOST_XINT_FINTEGER_TYPE& operator^=(const BOOST_XINT_FINTEGER_TYPE n);
- BOOST_XINT_FINTEGER_TYPE operator<<(bitsize_t shift) const;
- BOOST_XINT_FINTEGER_TYPE operator>>(bitsize_t shift) const;
- BOOST_XINT_FINTEGER_TYPE& operator<<=(bitsize_t shift);
- BOOST_XINT_FINTEGER_TYPE& operator>>=(bitsize_t shift);
- //@}
-
- //! \name Miscellaneous Functions
- //!@{
- bool is_odd() const;
- bool is_even() const;
- int sign(bool signed_zero = false) const;
- size_t hex_digits() const;
- //!@}
-
- typedef base_divide_t<BOOST_XINT_FINTEGER_TYPE> divide_t;
-
- /*! \name Static Member Functions
-
- These are functions that return a fixed_integer, but don't take one as a
- parameter. To use them as free functions, you would have to specify the
- return type anyway, so I made them static member functions of the type
- instead.
- */
- //!@{
- static BOOST_XINT_FINTEGER_TYPE pow2(size_t exponent);
- static BOOST_XINT_FINTEGER_TYPE factorial(size_t n);
- template <class Type> static BOOST_XINT_FINTEGER_TYPE random_by_size(Type&
- gen, bitsize_t size_in_bits, bool high_bit_on = false, bool low_bit_on =
- false, bool can_be_negative = false);
- template <class Type> static BOOST_XINT_FINTEGER_TYPE random_prime(Type&
- gen, bitsize_t size_in_bits, callback_t callback = no_callback);
- //!@}
-
- void _swap(BOOST_XINT_FINTEGER_TYPE& s) { using std::swap; swap(data,
- s.data); }
-
- private:
- BOOST_XINT_COPYABLE_AND_MOVABLE(type)
-};
-
-//! \copydoc integer_t::integer_t()
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE::fixed_integer(): any_integer(*this, 1) {
- // Don't need to do anything, already preinitialized to zero.
-}
-
-//! \copydoc integer_t::integer_t(const integer_t&, bool)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE::fixed_integer(const BOOST_XINT_FINTEGER_TYPE& b, bool
- force_thread_safety): detail::fixed_digitmanager_t<Bits, Alloc, Threadsafe,
- Secure>(*b.data.holder()), any_integer(*this, (std::min)(b.data.length,
- BOOST_XINT_FINTEGER_TYPE::fixed), b.data.negative)
-{
- data.beginendmod();
- if (force_thread_safety && Threadsafe == false) data.make_unique();
-}
-
-/*! \copydoc integer_t::integer_t(const std::string&, size_t)
-
-\note
-This function does \e not stop when the fixed_integer's bits are full. It uses
-the entire string, then truncates the result to the proper number of bits.
-*/
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE::fixed_integer(const char *str, size_t base):
- any_integer(*this, 1)
-{
- data.from_string(str, strlen(str), base);
-}
-
-/*! \copydoc integer_t::integer_t(const char *, char **, size_t)
-
-\note
-This function does \e not stop when the fixed_integer's bits are full. It
-continues as long as there are valid digits for the base in question, then
-truncates the result to the proper number of bits.
-*/
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE::fixed_integer(const char *str, char **endptr, size_t
- base): any_integer(*this, 1)
-{
- data.from_string(str, endptr, base);
-}
-
-/*! \copydoc integer_t::integer_t(const std::string&, size_t)
-
-\note
-This function does \e not stop when the fixed_integer's bits are full. It uses
-the entire string, then truncates the result to the proper number of bits.
-*/
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE::fixed_integer(const std::string& str, size_t base):
- any_integer(*this, 1)
-{
- data.from_string(str.c_str(), str.length(), base);
-}
-
-/*! \copydoc integer_t::integer_t(const xint::binary_t, size_t)
-
-\note
-This function does \e not stop when the fixed_integer's bits are full. It uses
-the entire \c binary_t item, then truncates the result to the proper number of
-bits.
-*/
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE::fixed_integer(const xint::binary_t b, size_t bits):
- any_integer(*this, 1)
-{
- data.from_binary(b, bits);
-}
-
-//! \copydoc integer_t::integer_t(const any_integer&, bool)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE::fixed_integer(const any_integer& c, bool):
- any_integer(*this, 1)
-{
- if (c._data().is_nan()) throw exceptions::not_a_number();
- data.duplicate_data(c._data());
-}
-
-/*!
- Constructs a new integer object with the value of the built-in %integer type
- passed to it.
-
- \param[in] n The value for the new object.
- \tparam Type The type of \c n.
-
- You can ignore the \c enable_if parameter, it's there only to tell the
- compiler what types the function applies to.
-
- \overload
-*/
-BOOST_XINT_FINTEGER_TPL
-template <typename Type> BOOST_XINT_FINTEGER_TYPE::fixed_integer(const Type n,
- typename boost::enable_if<boost::is_integral<Type> >::type*):
- any_integer(*this, 1)
-{
- if (std::numeric_limits<Type>::is_signed) data.set_signed(n);
- else data.set_unsigned(n);
-}
-
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE&
- BOOST_XINT_FINTEGER_TYPE::operator=(BOOST_XINT_COPY_ASSIGN_REF(type) c)
-{
- data = c.data;
- data.beginendmod();
- return *this;
-}
-
-//! \copydoc integer_t::operator-
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::operator-() const {
- BOOST_XINT_FINTEGER_TYPE r(-data);
- return BOOST_XINT_MOVE(r);
-}
-
-/*! \brief The Bitwise Ones' Complement (i.e. bitwise NOT) operator.
-
-This operator does not exist in the integer and nothrow_integer classes, because
-as their lengths are not limited, it would result in an infinitely long number.
-*/
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::operator~() const {
- BOOST_XINT_FINTEGER_TYPE r;
- r.data.beginmod(this->fixed_length(), true);
- const detail::digit_t *s = data.digits(), *se = s + data.length;
- detail::digit_t *t = r.data.digits(), *te = t + this->fixed_length();
- while (s != se) *t++ = ~(*s++);
- while (t != te) *t++ = static_cast<detail::digit_t>(~0);
- r.data.length = this->fixed_length();
- r.data.endmod();
- return BOOST_XINT_MOVE(r);
-}
-
-//! \see operator+(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator+=(const
- BOOST_XINT_FINTEGER_TYPE b)
-{
- data += b.data;
- return *this;
-}
-
-//! \see operator-(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator-=(const
- BOOST_XINT_FINTEGER_TYPE b)
-{
- data -= b.data;
- return *this;
-}
-
-//! \see operator*(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator*=(const
- BOOST_XINT_FINTEGER_TYPE b)
-{
- data *= b.data;
- return *this;
-}
-
-//! \see operator/(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator/=(const
- BOOST_XINT_FINTEGER_TYPE b)
-{
- data /= b.data;
- return *this;
-}
-
-//! \see operator%(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator%=(const
- BOOST_XINT_FINTEGER_TYPE b)
-{
- data %= b.data;
- return *this;
-}
-
-//! \copydoc integer_t::operator++
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator++() {
- ++data;
- return *this;
-}
-
-//! \copydoc integer_t::operator--
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator--() {
- --data;
- return *this;
-}
-
-//! \copydoc integer_t::operator++(int)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::operator++(int) {
- BOOST_XINT_FINTEGER_TYPE r(data++);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc integer_t::operator--(int)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::operator--(int) {
- BOOST_XINT_FINTEGER_TYPE r(data--);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \see operator&(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator&=(const
- BOOST_XINT_FINTEGER_TYPE n)
-{
- data &= n.data;
- return *this;
-}
-
-//! \see operator|(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator|=(const
- BOOST_XINT_FINTEGER_TYPE n)
-{
- data |= n.data;
- return *this;
-}
-
-//! \see operator^(fixed_integer, fixed_integer)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator^=(const
- BOOST_XINT_FINTEGER_TYPE n)
-{
- data ^= n.data;
- return *this;
-}
-
-//! \copydoc integer_t::operator<<(bitsize_t) const
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::operator<<(bitsize_t shift)
- const
-{
- BOOST_XINT_FINTEGER_TYPE r(data << shift);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc integer_t::operator>>(bitsize_t) const
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::operator>>(bitsize_t shift)
- const
-{
- BOOST_XINT_FINTEGER_TYPE r(data >> shift);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \see fixed_integer::operator<<(bitsize_t) const
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator<<=(bitsize_t shift) {
- data <<= shift;
- return *this;
-}
-
-//! \see fixed_integer::operator>>(bitsize_t) const
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE& BOOST_XINT_FINTEGER_TYPE::operator>>=(bitsize_t shift) {
- data >>= shift;
- return *this;
-}
-
-//! \copydoc integer_t::is_odd
-BOOST_XINT_FINTEGER_TPL
-bool BOOST_XINT_FINTEGER_TYPE::is_odd() const {
- return data.is_odd();
-}
-
-//! \copydoc integer_t::is_even
-BOOST_XINT_FINTEGER_TPL
-bool BOOST_XINT_FINTEGER_TYPE::is_even() const {
- return data.is_even();
-}
-
-//! \copydoc integer_t::sign
-BOOST_XINT_FINTEGER_TPL
-int BOOST_XINT_FINTEGER_TYPE::sign(bool signed_zero) const {
- return data.sign(signed_zero);
-}
-
-//! \copydoc integer_t::hex_digits
-BOOST_XINT_FINTEGER_TPL
-size_t BOOST_XINT_FINTEGER_TYPE::hex_digits() const {
- return data.hex_digits();
-}
-
-//! \copydoc integer_t::pow2
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::pow2(size_t exponent) {
- BOOST_XINT_FINTEGER_TYPE r;
- detail::pow2(r.data, exponent);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc integer_t::factorial
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::factorial(size_t n) {
- BOOST_XINT_FINTEGER_TYPE r;
- detail::factorial(r.data, n);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc integer_t::random_by_size
-BOOST_XINT_FINTEGER_TPL
-template <class Type>
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::random_by_size(Type& gen,
- bitsize_t size_in_bits, bool high_bit_on, bool low_bit_on, bool
- can_be_negative)
-{
- detail::random_generator<Type> rgen(gen);
-
- BOOST_XINT_FINTEGER_TYPE r;
- detail::random_by_size(r._data(), rgen, size_in_bits, high_bit_on,
- low_bit_on, can_be_negative);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc integer_t::random_prime
-BOOST_XINT_FINTEGER_TPL
-template <class Type>
-BOOST_XINT_FINTEGER_TYPE BOOST_XINT_FINTEGER_TYPE::random_prime(Type& gen,
- bitsize_t size_in_bits, callback_t callback)
-{
- detail::random_generator<Type> rgen(gen);
-
- BOOST_XINT_FINTEGER_TYPE r;
- detail::random_prime(r._data(), rgen, size_in_bits, callback);
- return BOOST_XINT_MOVE(r);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Free function template definitions
-
-//! \name Mathematical primitives
-//!@{
-//! \copydoc abs(integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE abs(const BOOST_XINT_FINTEGER_TYPE n) {
- BOOST_XINT_FINTEGER_TYPE r(abs(n._data()));
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc divide(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-typename BOOST_XINT_FINTEGER_TYPE::divide_t divide(const
- BOOST_XINT_FINTEGER_TYPE dividend, const BOOST_XINT_FINTEGER_TYPE divisor)
-{
- typename BOOST_XINT_FINTEGER_TYPE::divide_t r;
- divide(r.quotient._data(), r.remainder._data(), dividend._data(),
- divisor._data());
- return BOOST_XINT_MOVE(r);
-}
-//!@}
-
-//! \name Powers and roots
-//!@{
-//! \copydoc square(integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE square(const BOOST_XINT_FINTEGER_TYPE n) {
- BOOST_XINT_FINTEGER_TYPE r;
- square(r._data(), n._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc pow(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE pow(const BOOST_XINT_FINTEGER_TYPE n, const
- BOOST_XINT_FINTEGER_TYPE e)
-{
- BOOST_XINT_FINTEGER_TYPE r;
- pow(r._data(), n._data(), e._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc sqrt(integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE sqrt(const BOOST_XINT_FINTEGER_TYPE n) {
- BOOST_XINT_FINTEGER_TYPE r;
- sqrt(r._data(), n._data());
- return BOOST_XINT_MOVE(r);
-}
-//!@}
-
-//! \name Conversion functions
-//!@{
-//! \copydoc to(integer_t)
-template <typename Type, bitsize_t Bits, class Alloc, bool Threadsafe, bool
- Secure>
-Type to(const BOOST_XINT_FINTEGER_TYPE n) {
- return to<Type>(n._data());
-}
-
-//! \copydoc to_string(integer_t, size_t, bool)
-BOOST_XINT_FINTEGER_TPL
-std::string to_string(const BOOST_XINT_FINTEGER_TYPE n, size_t base = 10, bool
- uppercase = false)
-{
- return to_string(n._data(), base, uppercase);
-}
-
-//! \copydoc to_binary(integer_t, size_t)
-BOOST_XINT_FINTEGER_TPL
-xint::binary_t to_binary(const BOOST_XINT_FINTEGER_TYPE n, size_t bits = 0) {
- return to_binary(n._data(), bits);
-}
-//!@}
-
-//! \name Bit-manipulation functions
-//!@{
-//! \copydoc getbit(const integer_t, bitsize_t)
-BOOST_XINT_FINTEGER_TPL
-bool getbit(const BOOST_XINT_FINTEGER_TYPE n, bitsize_t bit) {
- return getbit(n._data(), bit);
-}
-
-//! \copydoc setbit(integer_t&, bitsize_t)
-BOOST_XINT_FINTEGER_TPL
-void setbit(BOOST_XINT_FINTEGER_TYPE& n, bitsize_t bit) {
- setbit(n._data(), bit);
-}
-
-//! \copydoc clearbit(integer_t&, bitsize_t)
-BOOST_XINT_FINTEGER_TPL
-void clearbit(BOOST_XINT_FINTEGER_TYPE& n, bitsize_t bit) {
- clearbit(n._data(), bit);
-}
-
-//! \copydoc lowestbit(integer_t, bitsize_t)
-BOOST_XINT_FINTEGER_TPL
-bitsize_t lowestbit(const BOOST_XINT_FINTEGER_TYPE n, bitsize_t return_if_zero =
- 0)
-{
- return lowestbit(n._data(), return_if_zero);
-}
-
-//! \copydoc highestbit(integer_t, bitsize_t)
-BOOST_XINT_FINTEGER_TPL
-bitsize_t highestbit(const BOOST_XINT_FINTEGER_TYPE n, bitsize_t return_if_zero
- = 0)
-{
- return highestbit(n._data(), return_if_zero);
-}
-//!@}
-
-//! \name Modular math functions
-//!@{
-//! \copydoc mulmod(integer_t, integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE mulmod(const BOOST_XINT_FINTEGER_TYPE n, const
- BOOST_XINT_FINTEGER_TYPE by, const BOOST_XINT_FINTEGER_TYPE modulus)
-{
- BOOST_XINT_FINTEGER_TYPE r;
- mulmod(r._data(), n._data(), by._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc sqrmod(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE sqrmod(const BOOST_XINT_FINTEGER_TYPE n, const
- BOOST_XINT_FINTEGER_TYPE modulus)
-{
- BOOST_XINT_FINTEGER_TYPE r;
- sqrmod(r._data(), n._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc powmod(integer_t, integer_t, integer_t, bool)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE powmod(const BOOST_XINT_FINTEGER_TYPE n, const
- BOOST_XINT_FINTEGER_TYPE exponent, const BOOST_XINT_FINTEGER_TYPE modulus,
- bool no_monty)
-{
- BOOST_XINT_FINTEGER_TYPE r;
- powmod(r._data(), n._data(), exponent._data(), modulus._data(), no_monty);
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc invmod(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE invmod(const BOOST_XINT_FINTEGER_TYPE n, const
- BOOST_XINT_FINTEGER_TYPE modulus)
-{
- BOOST_XINT_FINTEGER_TYPE r;
- invmod(r._data(), n._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
-}
-//!@}
-
-//! \name Random and prime number functions
-//!@{
-//! \copydoc is_prime(integer_t, callback_t)
-BOOST_XINT_FINTEGER_TPL
-int is_prime(const BOOST_XINT_FINTEGER_TYPE n, callback_t callback =
- no_callback)
-{
- return is_prime(n._data(), callback);
-}
-//!@}
-
-//! \name Comparison Operators
-//!@{
-BOOST_XINT_FINTEGER_TPL bool operator<(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2) { return operator<(n1._data(), n2._data()); }
-BOOST_XINT_FINTEGER_TPL bool operator>(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2) { return operator>(n1._data(), n2._data()); }
-BOOST_XINT_FINTEGER_TPL bool operator<=(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2) { return operator<=(n1._data(), n2._data()); }
-BOOST_XINT_FINTEGER_TPL bool operator>=(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2) { return operator>=(n1._data(), n2._data()); }
-BOOST_XINT_FINTEGER_TPL bool operator==(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2) { return operator==(n1._data(), n2._data()); }
-BOOST_XINT_FINTEGER_TPL bool operator!=(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2) { return operator!=(n1._data(), n2._data()); }
-//!@}
-
-//! \name Mathematical and Bitwise Operators
-//!@{
-//! \copydoc operator+(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator+(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2)
-{
- BOOST_XINT_FINTEGER_TYPE r(n1._data() + n2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc operator-(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator-(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2)
-{
- BOOST_XINT_FINTEGER_TYPE r(n1._data() - n2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc operator*(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator*(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2)
-{
- BOOST_XINT_FINTEGER_TYPE r(n1._data() * n2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc operator/(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator/(const BOOST_XINT_FINTEGER_TYPE dividend,
- const BOOST_XINT_FINTEGER_TYPE divisor)
-{
- BOOST_XINT_FINTEGER_TYPE r(dividend._data() /
- divisor._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc operator%(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator%(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2)
-{
- BOOST_XINT_FINTEGER_TYPE r(n1._data() % n2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc operator&(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator&(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2)
-{
- BOOST_XINT_FINTEGER_TYPE r(n1._data() & n2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc operator|(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator|(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2)
-{
- BOOST_XINT_FINTEGER_TYPE r(n1._data() | n2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc operator^(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE operator^(const BOOST_XINT_FINTEGER_TYPE n1, const
- BOOST_XINT_FINTEGER_TYPE n2)
-{
- BOOST_XINT_FINTEGER_TYPE r(n1._data() ^ n2._data());
- return BOOST_XINT_MOVE(r);
-}
-//!@}
-
-//! \name Miscellaneous functions
-//!@{
-//! \copydoc gcd(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE gcd(const BOOST_XINT_FINTEGER_TYPE num1, const
- BOOST_XINT_FINTEGER_TYPE num2)
-{
- BOOST_XINT_FINTEGER_TYPE r;
- gcd(r._data(), num1._data(), num2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc lcm(integer_t, integer_t)
-BOOST_XINT_FINTEGER_TPL
-BOOST_XINT_FINTEGER_TYPE lcm(const BOOST_XINT_FINTEGER_TYPE num1, const
- BOOST_XINT_FINTEGER_TYPE num2)
-{
- BOOST_XINT_FINTEGER_TYPE r;
- lcm(r._data(), num1._data(), num2._data());
- return BOOST_XINT_MOVE(r);
-}
-
-//! \copydoc compare(integer_t, integer_t, bool)
-BOOST_XINT_FINTEGER_TPL
-int compare(const BOOST_XINT_FINTEGER_TYPE n1, const BOOST_XINT_FINTEGER_TYPE
- n2, bool ignoresign = false)
-{
- return compare(n1._data(), n2._data(), ignoresign);
-}
-
-//! \copydoc log2(integer_t)
-BOOST_XINT_FINTEGER_TPL
-size_t log2(const BOOST_XINT_FINTEGER_TYPE n) {
- return log2(n._data());
-}
-//!@}
-
-//! Allows for comparisons between fixed_integer types and other integral
-//! values.
-#define BOOST_XINT_FIXED_ANY_COMPARE(rtype, op) \
- template <bitsize_t Bits, class Alloc, bool Threadsafe, bool Secure, typename \
- N> \
- rtype op(const BOOST_XINT_FINTEGER_TYPE n1, const N n2) { \
- return op(n1, BOOST_XINT_FINTEGER_TYPE(n2)); \
- } \
- \
- template <typename N, bitsize_t Bits, class Alloc, bool Threadsafe, bool \
- Secure> \
- rtype op(const N n1, const BOOST_XINT_FINTEGER_TYPE n2) { \
- return op(BOOST_XINT_FINTEGER_TYPE(n1), n2); \
- }
-
-BOOST_XINT_FIXED_ANY_COMPARE(bool, operator<)
-BOOST_XINT_FIXED_ANY_COMPARE(bool, operator>)
-BOOST_XINT_FIXED_ANY_COMPARE(bool, operator<=)
-BOOST_XINT_FIXED_ANY_COMPARE(bool, operator>=)
-BOOST_XINT_FIXED_ANY_COMPARE(bool, operator==)
-BOOST_XINT_FIXED_ANY_COMPARE(bool, operator!=)
-BOOST_XINT_FIXED_ANY_COMPARE(int, compare)
-
-//! Allows for operations between fixed_integer types and other integral values.
-#define BOOST_XINT_FIXED_ANY_MATH(op) \
- template <bitsize_t Bits, class Alloc, bool Threadsafe, bool Secure, typename \
- N> \
- BOOST_XINT_FINTEGER_TYPE op(const BOOST_XINT_FINTEGER_TYPE n1, const N n2) \
- { \
- BOOST_XINT_FINTEGER_TYPE r(op(n1, BOOST_XINT_FINTEGER_TYPE(n2))); \
- return BOOST_XINT_MOVE(r); \
- } \
- \
- template <typename N, bitsize_t Bits, class Alloc, bool Threadsafe, bool \
- Secure> \
- BOOST_XINT_FINTEGER_TYPE op(const N n1, const BOOST_XINT_FINTEGER_TYPE n2) \
- { \
- BOOST_XINT_FINTEGER_TYPE r(op(BOOST_XINT_FINTEGER_TYPE(n1), n2)); \
- return BOOST_XINT_MOVE(r); \
- }
-
-BOOST_XINT_FIXED_ANY_MATH(pow)
-BOOST_XINT_FIXED_ANY_MATH(mulmod)
-BOOST_XINT_FIXED_ANY_MATH(sqrmod)
-BOOST_XINT_FIXED_ANY_MATH(powmod)
-BOOST_XINT_FIXED_ANY_MATH(invmod)
-BOOST_XINT_FIXED_ANY_MATH(operator+)
-BOOST_XINT_FIXED_ANY_MATH(operator-)
-BOOST_XINT_FIXED_ANY_MATH(operator*)
-BOOST_XINT_FIXED_ANY_MATH(operator/)
-BOOST_XINT_FIXED_ANY_MATH(operator%)
-BOOST_XINT_FIXED_ANY_MATH(operator&)
-BOOST_XINT_FIXED_ANY_MATH(operator|)
-BOOST_XINT_FIXED_ANY_MATH(operator^)
-BOOST_XINT_FIXED_ANY_MATH(gcd)
-BOOST_XINT_FIXED_ANY_MATH(lcm)
-
-//! \name Stream input/output functions
-//!@{
-template <typename charT, typename traits, bitsize_t Bits, class Alloc, bool
- Threadsafe, bool Secure> inline std::basic_ostream<charT,traits>&
- operator<<(std::basic_ostream<charT, traits>& out, const
- BOOST_XINT_FINTEGER_TYPE n)
-{
- return operator<<(out, n._data());
-}
-
-template <typename charT, typename traits, bitsize_t Bits, class Alloc, bool
- Threadsafe, bool Secure> inline std::basic_istream<charT,traits>&
- operator>>(std::basic_istream<charT, traits>& in, BOOST_XINT_FINTEGER_TYPE&
- n)
-{
- return operator>>(in, n._data());
-}
-//!@}
-
-BOOST_XINT_FINTEGER_TPL
-inline void swap(BOOST_XINT_FINTEGER_TYPE& left, BOOST_XINT_FINTEGER_TYPE&
- right)
-{
- left._swap(right);
-}
-
-} // namespace xint
-} // namespace boost
-
-namespace std {
-
-BOOST_XINT_FINTEGER_TPL
-class numeric_limits<boost::xint::BOOST_XINT_FINTEGER_TYPE> {
- public:
- static const bool is_specialized = true;
-
- static boost::xint::BOOST_XINT_FINTEGER_TYPE min() throw() { return
- -~(boost::xint::BOOST_XINT_FINTEGER_TYPE()); }
- static boost::xint::BOOST_XINT_FINTEGER_TYPE max() throw() { return
- ~(boost::xint::BOOST_XINT_FINTEGER_TYPE()); }
-
- static const int digits = Bits;
- static const int digits10;
- 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::BOOST_XINT_FINTEGER_TYPE epsilon() throw() { return 0; }
- static boost::xint::BOOST_XINT_FINTEGER_TYPE round_error() throw() { return
- 0; }
-
- static const int min_exponent = 0; // N/A
- static const int min_exponent10 = 0; // N/A
- static const int max_exponent = 0; // N/A
- static const int max_exponent10 = 0; // N/A
-
- 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; // N/A
- static const bool has_denorm_loss = false; // N/A
-
- static boost::xint::BOOST_XINT_FINTEGER_TYPE
- infinity() throw() { return 0; } // N/A
- static boost::xint::BOOST_XINT_FINTEGER_TYPE
- quiet_NaN() throw() { return 0; } // N/A
- static boost::xint::BOOST_XINT_FINTEGER_TYPE
- signaling_NaN() throw() { return 0; } // N/A
- static boost::xint::BOOST_XINT_FINTEGER_TYPE
- denorm_min() throw() { return 0; } // N/A
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = true;
-
- static const bool traps = true; // I assume this means exceptions?
- static const bool tinyness_before = false; // N/A
- static const float_round_style round_style = round_indeterminate; // N/A
-};
-
-#ifndef BOOST_XINT_DOXYGEN_IGNORE
-BOOST_XINT_FINTEGER_TPL
-const int numeric_limits<boost::xint::BOOST_XINT_FINTEGER_TYPE >::digits10 =
- static_cast<int>(boost::xint::detail::log10_bits(Bits));
-#endif
-
-} // namespace std
-
-#ifdef _WIN32
- // Return the warning setting to its original value.
- #pragma warning(pop)
-#endif
-
-#endif // BOOST_INCLUDED_XINT_FIXED_INTEGER_HPP

Modified: sandbox/xint/boost/xint/integer.hpp
==============================================================================
--- sandbox/xint/boost/xint/integer.hpp (original)
+++ sandbox/xint/boost/xint/integer.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -21,87 +21,137 @@
 #include "detail/internals.hpp"
 #include "random.hpp"
 
-#ifdef _WIN32
- // The file's constructors make heavy use of the 'this' pointer, in a safe
- // manner. MSVC isn't smart enough to know that it's safe.
- #pragma warning(push)
- #pragma warning(disable: 4355)
-#endif
-
 #ifdef BOOST_XINT_DOXYGEN_IGNORE
     // The documentation should see a simplified version of the functions.
     #define BOOST_XINT_INTEGER_INITIAL_TPL template<...>
     #define BOOST_XINT_INTEGER_TPL template<...>
     #define BOOST_XINT_INTEGER_TYPE integer_t
+ #define BOOST_XINT_OTHER_TPL template<...>
+ #define BOOST_XINT_OTHER_TYPE integer_t<other>
 #else
- #define BOOST_XINT_INTEGER_INITIAL_TPL template <class Alloc = \
- std::allocator<detail::digit_t>, bool Threadsafe = true, bool Secure = \
- false>
- #define BOOST_XINT_INTEGER_TPL template<class Alloc, bool Threadsafe, bool \
- Secure>
- #define BOOST_XINT_INTEGER_TYPE integer_t<Alloc, Threadsafe, Secure>
+ #define BOOST_XINT_INTEGER_INITIAL_TPL template < \
+ class A0 = parameter::void_, \
+ class A1 = parameter::void_, \
+ class A2 = parameter::void_, \
+ class A3 = parameter::void_, \
+ class A4 = parameter::void_>
+ #define BOOST_XINT_INTEGER_TPL template<class A0, class A1, class A2, \
+ class A3, class A4>
+ #define BOOST_XINT_INTEGER_TYPE integer_t<A0, A1, A2, A3, A4>
+
+ #define BOOST_XINT_OTHER_TPL template <class B0, class B1, class B2, class \
+ B3, class B4>
+ #define BOOST_XINT_OTHER_TYPE integer_t<B0, B1, B2, B3, B4>
 #endif
 
 namespace boost {
 namespace xint {
 
+// todo: update for new parameters
 /*! \brief The integer_t class template.
 
- This class implements the standard aribitrary-length %integer type.
-
- There are only a few member functions, primarily operators. Most of the
- functionality is implemented using standalone functions.
-
- \tparam Alloc The allocator to use. It must be for the \c
- boost::xint::detail::digit_t type.
+This class implements the standard aribitrary-length %integer type.
 
- \tparam Threadsafe If \c true, the library ensures that each object has its
- own unique storage before returning it. If \c false, identical objects are
- allowed to share storage using a copy-on-write design, potentially
- increasing the speed of the library, but making it unsafe for multithreaded
- use (with \ref threadsafe "some exceptions"). The library allows
- copy-on-write for internal functions regardless of this parameter, which is
- safe because the internal functions are single-threaded.
+There are only a few member functions, primarily operators. Most of the
+functionality is implemented using standalone functions.
 
- \tparam Secure If \c true, the library zeros out all memory before
- deallocating it, for maximum security.
+You can specify several template parameters for the type. Most of these
+parameters must be specified via helper classes defined in the \c
+boost::xint::options namespace. Thanks to the magic of Boost.Parameter, you can
+use as few or as many as you need, and in any order. The parameters are:
+
+ \tparam fixedlength<Bits> If \c Bits is non-zero, integers of this type are
+ \ref fixedlength "fixed-length", limited to the specified number of bits. If
+ zero (the default), the %integer is limited only by your system's memory.
+
+ \tparam threadsafe<T> If \c T is \c true, the library ensures that each
+ object has its own unique storage before returning it. If \c false,
+ identical objects are allowed to share storage using a copy-on-write design,
+ potentially increasing the speed of the library, but making it unsafe for
+ multithreaded use (with \ref threadsafe "some exceptions"). The library
+ allows copy-on-write for internal functions regardless of this parameter,
+ which is safe because the internal functions only use one thread at a time.
+ Defaults to \c true.
+
+ \tparam secure<T> If \c T is \c true, the library zeros out all memory
+ before deallocating it, for maximum security. Defaults to \c false.
+
+ \tparam nothrow<T> If \c T is \c true, then operations using this class do
+ not throw exceptions, they return special values (most often \ref
+ nan "Not-a-Number") to indicate failures. Defaults to \c false.
+
+You can also specify an allocator, which is just passed to the \c integer_t
+template directly. If specified, it must be for the \c
+boost::xint::detail::digit_t type. Defaults to \c std::allocator<digit_t>.
+
+Here are some examples of how to specify an integer type:
+
+<code><pre>
+ namespace xopts = boost::xint::options;
+ typedef boost::xint::integer_t<xopts::fixedlength<512>,
+ xopts::secure<true> > secureint512;
+ typedef boost::xint::integer_t<xopts::threadsafe<false>,
+ my_allocator<boost::xint::detail::digit_t> > my_integer;
+</pre></code>
+
+Note that the \ref boost::xint::integer "integer" and \ref
+boost::xint::nothrow_integer "nothrow_integer" types are already typedef'd for
+you.
 */
 BOOST_XINT_INTEGER_INITIAL_TPL
-class integer_t: private detail::digitmanager_t<Alloc, Threadsafe, Secure>,
- public any_integer
-{
+class integer_t {
+ #ifndef BOOST_XINT_DOXYGEN_IGNORE
+ typedef typename options::integer_signature::bind<A0,A1,A2,A3,A4>::type
+ args;
+ typedef const typename binding<args, tag::fixedlength_tag,
+ options::fixedlength<0> >::type BitsType;
+ typedef const typename binding<args, tag::threadsafe_tag, mpl::true_>::type
+ ThreadsafeType;
+ typedef const typename binding<args, tag::secure_tag, mpl::false_>::type
+ SecureType;
+ typedef const typename binding<args, tag::nothrow_tag, mpl::false_>::type
+ NothrowType;
+ #endif // BOOST_XINT_DOXYGEN_IGNORE
+
     public:
+ #ifndef BOOST_XINT_DOXYGEN_IGNORE
+ static const bitsize_t Bits;
+ static const bool Threadsafe, Secure, Nothrow;
+ typedef typename binding<args, tag::allocator_tag,
+ std::allocator<detail::digit_t> >::type Alloc;
     typedef BOOST_XINT_INTEGER_TYPE type;
+ typedef detail::raw_integer_t<BitsType::value, SecureType::value, Alloc>
+ datatype;
+ #endif // BOOST_XINT_DOXYGEN_IGNORE
 
     //! \name Constructors & Destructors
     //!@{
     integer_t();
     integer_t(const BOOST_XINT_INTEGER_TYPE& b, bool force_thread_safety =
         false);
- integer_t(BOOST_XINT_RV_REF(type) b): any_integer(*this, 1) { _swap(b); }
+ integer_t(BOOST_XINT_RV_REF(type) b) { _swap(b); }
     explicit integer_t(const char *str, size_t base = 10);
     explicit integer_t(const char *str, char **endptr, size_t base = 10);
     explicit integer_t(const std::string& str, size_t base = 10);
     explicit integer_t(const xint::binary_t b, bitsize_t bits = 0);
- explicit integer_t(const any_integer& other, bool force_thread_safety =
- false);
+ BOOST_XINT_OTHER_TPL explicit integer_t(const BOOST_XINT_OTHER_TYPE& other,
+ bool force_thread_safety = false);
     template <typename Type> integer_t(const Type n,
         typename boost::enable_if<boost::is_integral<Type> >::type* = 0);
 
     #ifndef BOOST_XINT_DOXYGEN_IGNORE
- //! This one is used internally.
- integer_t(const detail::data_t c):
- detail::digitmanager_t<Alloc, Threadsafe, Secure>(*c.holder()),
- any_integer(*this, c.length, c.negative) { data.beginendmod(); }
- #endif
+ //! These are used internally.
+ integer_t(const detail::raw_integer_t<BitsType::value, SecureType::value,
+ Alloc> c): data(c) { if (Threadsafe == true) data.make_unique(); }
+ integer_t(const detail::raw_integer_t<BitsType::value, SecureType::value,
+ Alloc> c, bool negative): data(c, negative) { if (Threadsafe == true)
+ data.make_unique(); }
+ #endif // BOOST_XINT_DOXYGEN_IGNORE
     //!@}
 
     /*! \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.
     */
     //@{
     BOOST_XINT_INTEGER_TYPE& operator=(BOOST_XINT_COPY_ASSIGN_REF(type) c);
@@ -114,6 +164,7 @@
     BOOST_XINT_INTEGER_TYPE operator-() const;
     BOOST_XINT_INTEGER_TYPE& operator+() { return *this; }
     const BOOST_XINT_INTEGER_TYPE& operator+() const { return *this; }
+ BOOST_XINT_INTEGER_TYPE operator~() const;
 
     BOOST_XINT_INTEGER_TYPE& operator+=(const BOOST_XINT_INTEGER_TYPE b);
     BOOST_XINT_INTEGER_TYPE& operator-=(const BOOST_XINT_INTEGER_TYPE b);
@@ -139,6 +190,7 @@
     //!@{
     bool is_odd() const;
     bool is_even() const;
+ bool is_nan() const;
     int sign(bool signed_zero = false) const;
     size_t hex_digits() const;
     //!@}
@@ -149,12 +201,13 @@
 
         These are functions that return an integer_t, but don't take one as a
         parameter. To use them as free functions, you would have to specify the
- return type anyway, so I made them static member functions of the type
+ return type anyway, so they're static member functions of the type
         instead.
     */
     //!@{
     static BOOST_XINT_INTEGER_TYPE pow2(size_t exponent);
     static BOOST_XINT_INTEGER_TYPE factorial(size_t n);
+ static BOOST_XINT_INTEGER_TYPE nan();
     template <class Type> static BOOST_XINT_INTEGER_TYPE random_by_size(Type&
         gen, bitsize_t size_in_bits, bool high_bit_on = false, bool low_bit_on =
         false, bool can_be_negative = false);
@@ -162,19 +215,46 @@
         bitsize_t size_in_bits, callback_t callback = no_callback);
     //!@}
 
+ #ifndef BOOST_XINT_DOXYGEN_IGNORE
+ //! \name Internal Functions
+ //@{
     void _swap(BOOST_XINT_INTEGER_TYPE& s) { using std::swap;
         swap(data, s.data); }
+ datatype& _data() { return data; }
+ const datatype& _data() const { return data; }
+ size_t _get_length() const { return data.length; }
+ detail::digit_t _get_digit(size_t i) const { return data[i]; }
+ void _make_unique() { data.make_unique(); }
+ //@}
+ #endif
 
     private:
+ datatype data;
+
     BOOST_XINT_COPYABLE_AND_MOVABLE(type)
 };
 
+#ifndef BOOST_XINT_DOXYGEN_IGNORE
+BOOST_XINT_INTEGER_TPL
+const bitsize_t BOOST_XINT_INTEGER_TYPE::Bits =
+ BOOST_XINT_INTEGER_TYPE::BitsType::value;
+BOOST_XINT_INTEGER_TPL
+const bool BOOST_XINT_INTEGER_TYPE::Threadsafe =
+ BOOST_XINT_INTEGER_TYPE::ThreadsafeType::value;
+BOOST_XINT_INTEGER_TPL
+const bool BOOST_XINT_INTEGER_TYPE::Secure =
+ BOOST_XINT_INTEGER_TYPE::SecureType::value;
+BOOST_XINT_INTEGER_TPL
+const bool BOOST_XINT_INTEGER_TYPE::Nothrow =
+ BOOST_XINT_INTEGER_TYPE::NothrowType::value;
+#endif // BOOST_XINT_DOXYGEN_IGNORE
+
 ////////////////////////////////////////////////////////////////////////////////
 // Member function template definitions
 
 //! \brief Creates a new integer with an initial value of zero.
 BOOST_XINT_INTEGER_TPL
-BOOST_XINT_INTEGER_TYPE::integer_t(): any_integer(*this, 1) {
+BOOST_XINT_INTEGER_TYPE::integer_t() {
     // Don't need to do anything, already preinitialized to zero.
 }
 
@@ -182,7 +262,7 @@
 
 \param[in] b An existing integer.
 
-\param[in] force_thread_safety If the \c Threadsafe template parameter is \c
+\param[in] force_thread_safety If the \c threadsafe template parameter is \c
 false, you can use this to make a thread-safe copy anyway. See \ref
 threadsafe "this page" for a full treatment of the matter.
 
@@ -190,20 +270,39 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE::integer_t(const BOOST_XINT_INTEGER_TYPE& b, bool
- force_thread_safety): detail::digitmanager_t<Alloc, Threadsafe,
- Secure>(*b.data.holder()), any_integer(*this, b.data.length,
- b.data.negative)
+ force_thread_safety)
 {
- data.beginendmod();
- if (force_thread_safety && Threadsafe == false) data.make_unique();
+ if (Nothrow) {
+ try {
+ data = b.data;
+ if (!data.is_nan()) {
+ if (force_thread_safety && Threadsafe == false) data.make_unique();
+ }
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ data = b.data;
+ if (force_thread_safety && Threadsafe == false) data.make_unique();
+ }
 }
 
 //! \copydoc integer_t(const std::string&, size_t)
 BOOST_XINT_INTEGER_TPL
-BOOST_XINT_INTEGER_TYPE::integer_t(const char *str, size_t base):
- any_integer(*this, 1)
-{
- data.from_string(str, strlen(str), base);
+BOOST_XINT_INTEGER_TYPE::integer_t(const char *str, size_t base) {
+ if (Nothrow) {
+ try {
+ if (str[0] == nan_text[0] && std::string(str) == nan_text) {
+ data.make_nan();
+ } else {
+ data.from_string(str, base);
+ }
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ data.from_string(str, base);
+ }
 }
 
 /*! \brief Parse an integer from a string representation.
@@ -235,10 +334,25 @@
 \overload
 */
 BOOST_XINT_INTEGER_TPL
-BOOST_XINT_INTEGER_TYPE::integer_t(const char *str, char **endptr, size_t base):
- any_integer(*this, 1)
+BOOST_XINT_INTEGER_TYPE::integer_t(const char *str, char **endptr, size_t base)
 {
- data.from_string(str, endptr, base);
+ if (Nothrow) {
+ try {
+ if (str[0] == nan_text[0]) {
+ std::string s(str);
+ if (s.substr(0, nan_text.length()) == nan_text) {
+ data.make_nan();
+ *endptr = str + nan_text.length();
+ return;
+ }
+ }
+ data.from_string(str, endptr, base);
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ data.from_string(str, endptr, base);
+ }
 }
 
 /*! \brief Create an integer from a string representation.
@@ -266,10 +380,17 @@
 \overload
 */
 BOOST_XINT_INTEGER_TPL
-BOOST_XINT_INTEGER_TYPE::integer_t(const std::string& str, size_t base):
- any_integer(*this, 1)
-{
- data.from_string(str.c_str(), str.length(), base);
+BOOST_XINT_INTEGER_TYPE::integer_t(const std::string& str, size_t base) {
+ if (Nothrow) {
+ try {
+ if (str == nan_text) data.make_nan();
+ else data.from_string(str, base);
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ data.from_string(str, base);
+ }
 }
 
 /*! \brief Converts a portable binary representation of a number into an
@@ -294,34 +415,52 @@
 \overload
 */
 BOOST_XINT_INTEGER_TPL
-BOOST_XINT_INTEGER_TYPE::integer_t(const xint::binary_t b, bitsize_t bits):
- any_integer(*this, 1)
-{
- data.from_binary(b, bits);
+BOOST_XINT_INTEGER_TYPE::integer_t(const xint::binary_t b, bitsize_t bits) {
+ if (Nothrow) {
+ try {
+ data.from_binary(b, bits);
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ data.from_binary(b, bits);
+ }
 }
 
 /*! Constructs a new integer object from an existing integer object.
 
-Converts any existing integer_t, fixed_integer, or nothrow_integer object to
-this type.
+Converts any existing integer_t object to this type.
 
-\param[in] c An existing integer.
+\param[in] b An existing integer.
 
-\param[in] force_thread_safety If the \c Threadsafe template parameter is \c
+\param[in] force_thread_safety If the \c threadsafe template parameter is \c
 false, you can use this to make a thread-safe copy anyway. See \ref
-threadsafe "this page" for a full treatment of the matter. This parameter isn't
-really necessary on this version of the constructor, because objects of
-different types aren't allowed to share storage; it's here only for signature
-compatibility with the same-type copy constructor.
+threadsafe "this page" for a full treatment of the matter.
 
 \overload
 */
 BOOST_XINT_INTEGER_TPL
-BOOST_XINT_INTEGER_TYPE::integer_t(const any_integer& c, bool):
- any_integer(*this, 1)
-{
- if (c._data().is_nan()) throw exceptions::not_a_number();
- data.duplicate_data(c._data());
+BOOST_XINT_OTHER_TPL
+BOOST_XINT_INTEGER_TYPE::integer_t(const BOOST_XINT_OTHER_TYPE& b, bool
+ force_thread_safety)
+{
+ if (Nothrow) {
+ try {
+ if (b.is_nan()) {
+ data.make_nan();
+ } else {
+ data = b._data();
+ if (!data.is_nan() && force_thread_safety && Threadsafe ==
+ false) data.make_unique();
+ }
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ if (b._data().is_nan()) throw exceptions::not_a_number();
+ data = b._data();
+ if (force_thread_safety && Threadsafe == false) data.make_unique();
+ }
 }
 
 /*!
@@ -338,22 +477,68 @@
 */
 BOOST_XINT_INTEGER_TPL
 template <typename Type> BOOST_XINT_INTEGER_TYPE::integer_t(const Type n,
- typename boost::enable_if<boost::is_integral<Type> >::type*):
- any_integer(*this, 1)
+ typename boost::enable_if<boost::is_integral<Type> >::type*)
 {
- if (std::numeric_limits<Type>::is_signed) data.set_signed(n);
- else data.set_unsigned(n);
+ if (Nothrow) {
+ try {
+ if (std::numeric_limits<Type>::is_signed) data.set_signed(n);
+ else data.set_unsigned(n);
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ if (std::numeric_limits<Type>::is_signed) data.set_signed(n);
+ else data.set_unsigned(n);
+ }
 }
 
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::
     operator=(BOOST_XINT_COPY_ASSIGN_REF(type) c)
 {
- data = c.data;
- data.beginendmod();
+ if (Nothrow) {
+ if (c._data().is_nan()) data.make_nan();
+ else {
+ try {
+ data = c.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data = c.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
+/*! \brief The Bitwise Ones' Complement (i.e. bitwise NOT) operator.
+
+- Complexity: O(n)
+
+Note that this operator is only useful with fixed-size integers. If used with a
+variable-size integer, it will throw a \c too_big exception, because a proper
+implementation would result in an infinitely long number.
+*/
+BOOST_XINT_INTEGER_TPL
+BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::operator~() const {
+ if (Nothrow) {
+ if (is_nan()) return *this;
+ try {
+ BOOST_XINT_INTEGER_TYPE r(~data);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(~data);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
+}
+
 /*! \brief Return the additive inverse of an integer.
 
 - Complexity: O(1)
@@ -362,8 +547,22 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::operator-() const {
- BOOST_XINT_INTEGER_TYPE r(-data);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ if (is_nan()) return *this;
+ try {
+ BOOST_XINT_INTEGER_TYPE r(*this);
+ if (Threadsafe == true) r._make_unique();
+ r.data = -r.data;
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(*this);
+ if (Threadsafe == true) r._make_unique();
+ r.data = -r.data;
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 //! \see operator+(integer_t, integer_t)
@@ -371,7 +570,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator+=(const
     BOOST_XINT_INTEGER_TYPE b)
 {
- data += b.data;
+ if (Nothrow) {
+ if (b.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data += b.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data += b.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -380,7 +592,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator-=(const
     BOOST_XINT_INTEGER_TYPE b)
 {
- data -= b.data;
+ if (Nothrow) {
+ if (b.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data -= b.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data -= b.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -389,7 +614,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator*=(const
     BOOST_XINT_INTEGER_TYPE b)
 {
- data *= b.data;
+ if (Nothrow) {
+ if (b.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data *= b.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data *= b.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -398,7 +636,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator/=(const
     BOOST_XINT_INTEGER_TYPE b)
 {
- data /= b.data;
+ if (Nothrow) {
+ if (b.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data /= b.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data /= b.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -407,7 +658,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator%=(const
     BOOST_XINT_INTEGER_TYPE b)
 {
- data %= b.data;
+ if (Nothrow) {
+ if (b.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data %= b.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data %= b.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -417,7 +681,19 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator++() {
- ++data;
+ if (Nothrow) {
+ if (!is_nan()) {
+ try {
+ ++data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ ++data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -427,7 +703,19 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator--() {
- --data;
+ if (Nothrow) {
+ if (!is_nan()) {
+ try {
+ --data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ --data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -440,8 +728,20 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::operator++(int) {
- BOOST_XINT_INTEGER_TYPE r(data++);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ if (is_nan()) return *this;
+ try {
+ BOOST_XINT_INTEGER_TYPE r(data++);
+ if (Threadsafe == true) { r._make_unique(); data.make_unique(); }
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(data++);
+ if (Threadsafe == true) { r._make_unique(); data.make_unique(); }
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! Postdecrement operator
@@ -453,8 +753,20 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::operator--(int) {
- BOOST_XINT_INTEGER_TYPE r(data--);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ if (is_nan()) return *this;
+ try {
+ BOOST_XINT_INTEGER_TYPE r(data--);
+ if (Threadsafe == true) { r._make_unique(); data.make_unique(); }
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(data--);
+ if (Threadsafe == true) { r._make_unique(); data.make_unique(); }
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 //! \see operator&(integer_t, integer_t)
@@ -462,7 +774,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator&=(const
     BOOST_XINT_INTEGER_TYPE n)
 {
- data &= n.data;
+ if (Nothrow) {
+ if (n.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data &= n.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data &= n.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -471,7 +796,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator|=(const
     BOOST_XINT_INTEGER_TYPE n)
 {
- data |= n.data;
+ if (Nothrow) {
+ if (n.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data |= n.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data |= n.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -480,7 +818,20 @@
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator^=(const
     BOOST_XINT_INTEGER_TYPE n)
 {
- data ^= n.data;
+ if (Nothrow) {
+ if (n.is_nan()) data.make_nan();
+ if (!is_nan()) {
+ try {
+ data ^= n.data;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data ^= n.data;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -496,8 +847,20 @@
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::operator<<(bitsize_t shift)
     const
 {
- BOOST_XINT_INTEGER_TYPE r(data << shift);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ if (is_nan()) return *this;
+ try {
+ BOOST_XINT_INTEGER_TYPE r(data << shift);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(data << shift);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Right-shift an integer by a specified number of bits.
@@ -512,21 +875,57 @@
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::operator>>(bitsize_t shift)
     const
 {
- BOOST_XINT_INTEGER_TYPE r(data >> shift);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ if (is_nan()) return *this;
+ try {
+ BOOST_XINT_INTEGER_TYPE r(data >> shift);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(data >> shift);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 //! \see operator<<(integer_t, integer_t)
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator<<=(bitsize_t shift) {
- data <<= shift;
+ if (Nothrow) {
+ if (!is_nan()) {
+ try {
+ data <<= shift;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data <<= shift;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
 //! \see operator>>(integer_t, integer_t)
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE& BOOST_XINT_INTEGER_TYPE::operator>>=(bitsize_t shift) {
- data >>= shift;
+ if (Nothrow) {
+ if (!is_nan()) {
+ try {
+ data >>= shift;
+ if (Threadsafe == true) data.make_unique();
+ } catch (std::exception&) {
+ data.make_nan();
+ }
+ }
+ } else {
+ data >>= shift;
+ if (Threadsafe == true) data.make_unique();
+ }
     return *this;
 }
 
@@ -534,22 +933,50 @@
 
 - Complexity: O(1)
 
-\returns \c true if \c *this is odd, otherwise \c false.
+\returns \c true if \c *this is odd, otherwise \c false. The nothrow<true>
+version returns false instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 bool BOOST_XINT_INTEGER_TYPE::is_odd() const {
- return data.is_odd();
+ if (Nothrow) {
+ if (is_nan()) return false;
+ return data.is_odd();
+ } else {
+ return data.is_odd();
+ }
 }
 
 /*! \brief Tests the lowest bit of \c *this to determine evenness.
 
 - Complexity: O(1)
 
-\returns \c true if \c *this is even, otherwise \c false.
+\returns \c true if \c *this is even, otherwise \c false. The nothrow<true>
+version returns false instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 bool BOOST_XINT_INTEGER_TYPE::is_even() const {
- return data.is_even();
+ if (Nothrow) {
+ if (is_nan()) return false;
+ return data.is_even();
+ } else {
+ return data.is_even();
+ }
+}
+
+/*! \brief Tests whether the object is a Not-a-Number.
+
+- Complexity: O(1)
+
+\returns \c true if \c *this is a Not-a-Number value, otherwise \c false.
+
+\see \ref nan
+
+\note This will always return \c false on any type where the \c nothrow template
+parameter is \c false.
+*/
+BOOST_XINT_INTEGER_TPL
+bool BOOST_XINT_INTEGER_TYPE::is_nan() const {
+ return data.is_nan();
 }
 
 /*! \brief Tests the sign of \c *this.
@@ -561,11 +988,20 @@
 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.
+zero. The nothrow<true> version returns zero instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 int BOOST_XINT_INTEGER_TYPE::sign(bool signed_zero) const {
- return data.sign(signed_zero);
+ if (Nothrow) {
+ if (is_nan()) return 0;
+ try {
+ return data.sign(signed_zero);
+ } catch (std::exception&) {
+ return 0;
+ }
+ } else {
+ return data.sign(signed_zero);
+ }
 }
 
 /*! \brief Tells you roughly how large \c *this is.
@@ -573,11 +1009,20 @@
 - Complexity: O(1)
 
 \returns The number of hexadecimal digits that would be required to encode \c
-*this.
+*this. The nothrow<true> version returns zero instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 size_t BOOST_XINT_INTEGER_TYPE::hex_digits() const {
- return data.hex_digits();
+ if (Nothrow) {
+ if (is_nan()) return 0;
+ try {
+ return data.hex_digits();
+ } catch (std::exception&) {
+ return 0;
+ }
+ } else {
+ return data.hex_digits();
+ }
 }
 
 /*! \brief Calculate the value of 2<sup>e</sup>
@@ -595,9 +1040,21 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::pow2(size_t exponent) {
- BOOST_XINT_INTEGER_TYPE r;
- detail::pow2(r.data, exponent);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ try {
+ BOOST_XINT_INTEGER_TYPE r;
+ detail::pow2(r.data, exponent);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r;
+ detail::pow2(r.data, exponent);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate the value of \c n!
@@ -610,14 +1067,50 @@
 
 \warning
 Factorials get ridiculously huge, even with fairly small values of \c n. This
-function, when used with a large parameter, is the easiest way to exhaust the
-system's memory.
+function, when used on an unlimited-size integer and with a large parameter, is
+the easiest way to exhaust the system's memory.
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::factorial(size_t n) {
- BOOST_XINT_INTEGER_TYPE r;
- detail::factorial(r.data, n);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ try {
+ BOOST_XINT_INTEGER_TYPE r;
+ detail::factorial(r.data, n);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r;
+ detail::factorial(r.data, n);
+ if (Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
+}
+
+/*! \brief Returns a Not-a-Number value, for types that support it.
+
+- Complexity: O(1)
+
+\returns A Not-a-Number value of the specified type.
+
+\note
+If called on a type that does not support Not-a-Number values (i.e. any type
+whose \c nothrow template parameter is <code>false</code>), it will throw a
+\c not_a_number exception.
+
+\see \ref nan
+*/
+BOOST_XINT_INTEGER_TPL
+BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::nan() {
+ if (Nothrow) {
+ BOOST_XINT_INTEGER_TYPE r;
+ r._data().make_nan();
+ return BOOST_XINT_MOVE(r);
+ } else {
+ throw exceptions::not_a_number();
+ }
 }
 
 /*! \brief Generates a random integer with specific attributes.
@@ -648,12 +1141,17 @@
     bitsize_t size_in_bits, bool high_bit_on, bool low_bit_on, bool
     can_be_negative)
 {
- detail::random_generator<Type> rgen(gen);
-
- BOOST_XINT_INTEGER_TYPE r;
- detail::random_by_size(r._data(), rgen, size_in_bits, high_bit_on,
- low_bit_on, can_be_negative);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ try {
+ return datatype::random_by_size(gen, size_in_bits, high_bit_on,
+ low_bit_on, can_be_negative);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ return datatype::random_by_size(gen, size_in_bits, high_bit_on,
+ low_bit_on, can_be_negative);
+ }
 }
 
 /*! \brief Generate a randomly-generated prime number of a particular bit-size.
@@ -688,11 +1186,15 @@
 BOOST_XINT_INTEGER_TYPE BOOST_XINT_INTEGER_TYPE::random_prime(Type& gen,
     bitsize_t size_in_bits, callback_t callback)
 {
- detail::random_generator<Type> rgen(gen);
-
- BOOST_XINT_INTEGER_TYPE r;
- detail::random_prime(r._data(), rgen, size_in_bits, callback);
- return BOOST_XINT_MOVE(r);
+ if (Nothrow) {
+ try {
+ return datatype::random_prime(gen, size_in_bits, callback);
+ } catch (std::exception&) {
+ return nan();
+ }
+ } else {
+ return datatype::random_prime(gen, size_in_bits, callback);
+ }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -714,8 +1216,20 @@
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE abs(const BOOST_XINT_INTEGER_TYPE n) {
- BOOST_XINT_INTEGER_TYPE r(abs(n._data()));
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n._data().abs());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n._data().abs());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate how many \c dividends would fit into \c divisor, with the
@@ -726,7 +1240,8 @@
 \param[in] dividend, divisor The integers to operate on.
 
 \returns A \c divide_t class containing the quotient and remainder of \c
-dividend divided by \c divisor.
+dividend divided by \c divisor. The nothrow<true> version returns a \c divide_t
+with both items set to Not-a-Number instead of throwing.
 
 \exception exceptions::divide_by_zero if \c d2 is zero.
 
@@ -739,10 +1254,26 @@
 typename BOOST_XINT_INTEGER_TYPE::divide_t divide(const BOOST_XINT_INTEGER_TYPE
     dividend, const BOOST_XINT_INTEGER_TYPE divisor)
 {
- typename BOOST_XINT_INTEGER_TYPE::divide_t r;
- divide(r.quotient._data(), r.remainder._data(), dividend._data(),
- divisor._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (dividend.is_nan() || divisor.is_nan()) return typename
+ BOOST_XINT_INTEGER_TYPE::divide_t(BOOST_XINT_INTEGER_TYPE::nan(),
+ BOOST_XINT_INTEGER_TYPE::nan());
+ try {
+ typename BOOST_XINT_INTEGER_TYPE::datatype::divide_t rr =
+ detail::divide(dividend._data(), divisor._data());
+ typename BOOST_XINT_INTEGER_TYPE::divide_t r(rr.quotient,
+ rr.remainder);
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return typename BOOST_XINT_INTEGER_TYPE::divide_t(
+ BOOST_XINT_INTEGER_TYPE::nan(), BOOST_XINT_INTEGER_TYPE::nan());
+ }
+ } else {
+ typename BOOST_XINT_INTEGER_TYPE::datatype::divide_t rr =
+ detail::divide(dividend._data(), divisor._data());
+ typename BOOST_XINT_INTEGER_TYPE::divide_t r(rr.quotient, rr.remainder);
+ return BOOST_XINT_MOVE(r);
+ }
 }
 //!@}
 
@@ -761,13 +1292,25 @@
 
 \returns \c n times \c n.
 
-This function uses a more-efficient algorithm than standard multiplication.
+The repetitive nature of the input (multiplying a number by itself) allows this
+function to use a more-efficient algorithm than standard multiplication.
 */
 BOOST_XINT_INTEGER_TPL
 BOOST_XINT_INTEGER_TYPE square(const BOOST_XINT_INTEGER_TYPE n) {
- BOOST_XINT_INTEGER_TYPE r;
- square(r._data(), n._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return n;
+ try {
+ BOOST_XINT_INTEGER_TYPE r = detail::square(n._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r = detail::square(n._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate the value of n<sup>e</sup>
@@ -782,9 +1325,22 @@
 BOOST_XINT_INTEGER_TYPE pow(const BOOST_XINT_INTEGER_TYPE n, const
     BOOST_XINT_INTEGER_TYPE e)
 {
- BOOST_XINT_INTEGER_TYPE r;
- pow(r._data(), n._data(), e._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan() || e.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r;
+ pow(r._data(), n._data(), e._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r;
+ pow(r._data(), n._data(), e._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate the square root of \c an integer.
@@ -800,10 +1356,21 @@
 \exception exceptions::cannot_represent if \c n is negative.
 */
 BOOST_XINT_INTEGER_TPL
-BOOST_XINT_INTEGER_TYPE sqrt(const BOOST_XINT_INTEGER_TYPE n) {
- BOOST_XINT_INTEGER_TYPE r;
- sqrt(r._data(), n._data());
- return BOOST_XINT_MOVE(r);
+BOOST_XINT_INTEGER_TYPE square_root(const BOOST_XINT_INTEGER_TYPE n) {
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return n;
+ try {
+ BOOST_XINT_INTEGER_TYPE r = square_root(n._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r = square_root(n._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 //!@}
 
@@ -824,11 +1391,20 @@
 \exception exceptions::too_big if \c n would not fit into the specified type.
 
 This function provides the most efficient means of converting to a built-in
-integral type.
+integral type. The nothrow<true> version returns T(0) instead of throwing.
 */
-template <typename Type, class Alloc, bool Threadsafe, bool Secure>
-Type to(const BOOST_XINT_INTEGER_TYPE n) {
- return to<Type>(n._data());
+template <typename T, class A0, class A1, class A2, class A3, class A4>
+T to(const BOOST_XINT_INTEGER_TYPE n) {
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return T(0);
+ try {
+ return to<T>(n._data());
+ } catch (std::exception&) {
+ return T(0);
+ }
+ } else {
+ return to<T>(n._data());
+ }
 }
 
 /*! \brief Creates a string representation of the specified %integer.
@@ -841,7 +1417,8 @@
 \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.
+\returns The string value of \c n. The nothrow<true> version returns the string
+"#NaN#" if \c n is a Not-a-Number, and an empty string instead of throwing.
 
 \exception exceptions::invalid_base if base is less than two or greater than 36.
 
@@ -854,7 +1431,16 @@
 std::string to_string(const BOOST_XINT_INTEGER_TYPE n, size_t base = 10, bool
     uppercase = false)
 {
- return to_string(n._data(), base, uppercase);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return nan_text;
+ try {
+ return to_string(n._data(), base, uppercase);
+ } catch (std::exception&) {
+ return std::string();
+ }
+ } else {
+ return to_string(n._data(), base, uppercase);
+ }
 }
 
 /*! \brief Creates a binary representation of an %integer.
@@ -868,7 +1454,8 @@
 unsigned character type.
 
 \returns An \c xint::binary_t containing the binary representation, lowest byte
-first.
+first. The nothrow<true> version returns an empty \c binary_t object instead of
+throwing.
 
 \exception exceptions::invalid_argument if \c bits is greater than the number of
 bits in an unsigned character.
@@ -885,7 +1472,16 @@
 */
 BOOST_XINT_INTEGER_TPL
 xint::binary_t to_binary(const BOOST_XINT_INTEGER_TYPE n, bitsize_t bits = 0) {
- return to_binary(n._data(), bits);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return xint::binary_t();
+ try {
+ return to_binary(n._data(), bits);
+ } catch (std::exception&) {
+ return xint::binary_t();
+ }
+ } else {
+ return to_binary(n._data(), bits);
+ }
 }
 //!@}
 
@@ -900,11 +1496,20 @@
 \param[in] bit The zero-based index of the bit you're asking about.
 
 \returns \c true if the specified bit is set (has a value of one), \c false if
-it is clear.
+it is clear. The nothrow<true> version returns \c false instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 bool getbit(const BOOST_XINT_INTEGER_TYPE n, bitsize_t bit) {
- return getbit(n._data(), bit);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return false;
+ try {
+ return getbit(n._data(), bit);
+ } catch (std::exception&) {
+ return false;
+ }
+ } else {
+ return getbit(n._data(), bit);
+ }
 }
 
 /*! \brief Sets a specific bit in an integer to one.
@@ -918,7 +1523,17 @@
 */
 BOOST_XINT_INTEGER_TPL
 void setbit(BOOST_XINT_INTEGER_TYPE& n, bitsize_t bit) {
- setbit(n._data(), bit);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (!n.is_nan()) {
+ try {
+ setbit(n._data(), bit);
+ } catch (std::exception&) {
+ // Do nothing.
+ }
+ }
+ } else {
+ setbit(n._data(), bit);
+ }
 }
 
 /*! \brief Sets a specific bit in an integer to zero.
@@ -932,7 +1547,17 @@
 */
 BOOST_XINT_INTEGER_TPL
 void clearbit(BOOST_XINT_INTEGER_TYPE& n, bitsize_t bit) {
- clearbit(n._data(), bit);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (!n.is_nan()) {
+ try {
+ clearbit(n._data(), bit);
+ } catch (std::exception&) {
+ // Do nothing.
+ }
+ }
+ } else {
+ clearbit(n._data(), bit);
+ }
 }
 
 /*! \brief Obtains the index of the lowest bit in an integer with a value of
@@ -945,13 +1570,23 @@
 correct answer in that case).
 
 \returns The zero-based index of the lowest one-bit in the integer, or \c
-return_if_zero if the integer contains no set bits.
+return_if_zero if the integer contains no set bits. The nothrow<true> version
+returns \c return_if_zero instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 bitsize_t lowestbit(const BOOST_XINT_INTEGER_TYPE n, bitsize_t return_if_zero =
     0)
 {
- return lowestbit(n._data(), return_if_zero);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return return_if_zero;
+ try {
+ return lowestbit(n._data(), return_if_zero);
+ } catch (std::exception&) {
+ return return_if_zero;
+ }
+ } else {
+ return lowestbit(n._data(), return_if_zero);
+ }
 }
 
 /*! \brief Obtains the index of the highest bit in an integer with a value of
@@ -964,13 +1599,23 @@
 correct answer in that case).
 
 \returns The zero-based index of the highest one-bit in the integer, or \c
-return_if_zero if the integer contains no set bits.
+return_if_zero if the integer contains no set bits. The nothrow<true> version
+returns \c return_if_zero instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 bitsize_t highestbit(const BOOST_XINT_INTEGER_TYPE n, bitsize_t return_if_zero =
     0)
 {
- return highestbit(n._data(), return_if_zero);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return return_if_zero;
+ try {
+ return highestbit(n._data(), return_if_zero);
+ } catch (std::exception&) {
+ return return_if_zero;
+ }
+ } else {
+ return highestbit(n._data(), return_if_zero);
+ }
 }
 //!@}
 
@@ -1002,9 +1647,23 @@
 BOOST_XINT_INTEGER_TYPE mulmod(const BOOST_XINT_INTEGER_TYPE n, const
     BOOST_XINT_INTEGER_TYPE by, const BOOST_XINT_INTEGER_TYPE modulus)
 {
- BOOST_XINT_INTEGER_TYPE r;
- mulmod(r._data(), n._data(), by._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan() || by.is_nan() || modulus.is_nan()) return
+ BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r = mulmod(n._data(), by._data(),
+ modulus._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r = mulmod(n._data(), by._data(),
+ modulus._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Get the modular product of squaring an integer.
@@ -1025,9 +1684,20 @@
 BOOST_XINT_INTEGER_TYPE sqrmod(const BOOST_XINT_INTEGER_TYPE n, const
     BOOST_XINT_INTEGER_TYPE modulus)
 {
- BOOST_XINT_INTEGER_TYPE r;
- sqrmod(r._data(), n._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return n;
+ try {
+ BOOST_XINT_INTEGER_TYPE r = sqrmod(n._data(), modulus._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r = sqrmod(n._data(), modulus._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Get the result of \c n<sup>e</sup> % \c m, keeping the intermediate
@@ -1058,9 +1728,23 @@
     BOOST_XINT_INTEGER_TYPE exponent, const BOOST_XINT_INTEGER_TYPE modulus,
     bool no_monty = false)
 {
- BOOST_XINT_INTEGER_TYPE r;
- powmod(r._data(), n._data(), exponent._data(), modulus._data(), no_monty);
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan() || exponent.is_nan() || modulus.is_nan()) return
+ BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r = powmod(n._data(), exponent._data(),
+ modulus._data(), no_monty);
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r = powmod(n._data(), exponent._data(),
+ modulus._data(), no_monty);
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Get the modular inverse of a number in a modulus, if there is one.
@@ -1079,9 +1763,21 @@
 BOOST_XINT_INTEGER_TYPE invmod(const BOOST_XINT_INTEGER_TYPE n, const
     BOOST_XINT_INTEGER_TYPE modulus)
 {
- BOOST_XINT_INTEGER_TYPE r;
- invmod(r._data(), n._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan() || modulus.is_nan()) return
+ BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r = invmod(n._data(), modulus._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r = invmod(n._data(), modulus._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 //!@}
 
@@ -1101,7 +1797,8 @@
 the operation. If it returns \c false, the function will immediately return.
 
 \returns 1 if \c n seems to be prime, 0 if it isn't, or -1 if the provided
-callback function cancelled the operation.
+callback function cancelled the operation. The nothrow<true> version returns -2
+instead of throwing.
 
 \exception exceptions::invalid_argument if \c n is less than 2.
 
@@ -1118,33 +1815,116 @@
 BOOST_XINT_INTEGER_TPL
 int is_prime(const BOOST_XINT_INTEGER_TYPE n, callback_t callback = no_callback)
 {
- return is_prime(n._data(), callback);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return -2;
+ try {
+ return is_prime(n._data(), callback);
+ } catch (std::exception&) {
+ return -2;
+ }
+ } else {
+ return is_prime(n._data(), callback);
+ }
 }
 //!@}
 
 /*! \name Comparison Operators
 
+ The nothrow<true> versions of these functions return \c false instead of
+ throwing.
+
     \see compare(integer_t, integer_t, bool)
 */
 //!@{
 BOOST_XINT_INTEGER_TPL bool operator<(const BOOST_XINT_INTEGER_TYPE n1, const
- BOOST_XINT_INTEGER_TYPE n2) { return operator<(n1._data(),
- n2._data()); }
+ BOOST_XINT_INTEGER_TYPE n2)
+{
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return false;
+ try {
+ return operator<(n1._data(), n2._data());
+ } catch (std::exception&) {
+ return false;
+ }
+ } else {
+ return operator<(n1._data(), n2._data());
+ }
+}
+
 BOOST_XINT_INTEGER_TPL bool operator>(const BOOST_XINT_INTEGER_TYPE n1, const
- BOOST_XINT_INTEGER_TYPE n2) { return operator>(n1._data(),
- n2._data()); }
+ BOOST_XINT_INTEGER_TYPE n2)
+{
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return false;
+ try {
+ return operator>(n1._data(), n2._data());
+ } catch (std::exception&) {
+ return false;
+ }
+ } else {
+ return operator>(n1._data(), n2._data());
+ }
+}
+
 BOOST_XINT_INTEGER_TPL bool operator<=(const BOOST_XINT_INTEGER_TYPE n1, const
- BOOST_XINT_INTEGER_TYPE n2) { return operator<=(n1._data(),
- n2._data()); }
+ BOOST_XINT_INTEGER_TYPE n2)
+{
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return false;
+ try {
+ return operator<=(n1._data(), n2._data());
+ } catch (std::exception&) {
+ return false;
+ }
+ } else {
+ return operator<=(n1._data(), n2._data());
+ }
+}
+
 BOOST_XINT_INTEGER_TPL bool operator>=(const BOOST_XINT_INTEGER_TYPE n1, const
- BOOST_XINT_INTEGER_TYPE n2) { return operator>=(n1._data(),
- n2._data()); }
+ BOOST_XINT_INTEGER_TYPE n2)
+{
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return false;
+ try {
+ return operator>=(n1._data(), n2._data());
+ } catch (std::exception&) {
+ return false;
+ }
+ } else {
+ return operator>=(n1._data(), n2._data());
+ }
+}
+
 BOOST_XINT_INTEGER_TPL bool operator==(const BOOST_XINT_INTEGER_TYPE n1, const
- BOOST_XINT_INTEGER_TYPE n2) { return operator==(n1._data(),
- n2._data()); }
+ BOOST_XINT_INTEGER_TYPE n2)
+{
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return false;
+ try {
+ return operator==(n1._data(), n2._data());
+ } catch (std::exception&) {
+ return false;
+ }
+ } else {
+ return operator==(n1._data(), n2._data());
+ }
+}
+
 BOOST_XINT_INTEGER_TPL bool operator!=(const BOOST_XINT_INTEGER_TYPE n1, const
- BOOST_XINT_INTEGER_TYPE n2) { return operator!=(n1._data(),
- n2._data()); }
+ BOOST_XINT_INTEGER_TYPE n2)
+{
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return false;
+ try {
+ return operator!=(n1._data(), n2._data());
+ } catch (std::exception&) {
+ return false;
+ }
+ } else {
+ return operator!=(n1._data(), n2._data());
+ }
+}
 //!@}
 
 /*! \name Mathematical and Bitwise Operators
@@ -1165,8 +1945,18 @@
 BOOST_XINT_INTEGER_TYPE operator+(const BOOST_XINT_INTEGER_TYPE n1, const
     BOOST_XINT_INTEGER_TYPE n2)
 {
- BOOST_XINT_INTEGER_TYPE r(n1._data() + n2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() + n2._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() + n2._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate the difference between two integers.
@@ -1181,8 +1971,18 @@
 BOOST_XINT_INTEGER_TYPE operator-(const BOOST_XINT_INTEGER_TYPE n1, const
     BOOST_XINT_INTEGER_TYPE n2)
 {
- BOOST_XINT_INTEGER_TYPE r(n1._data() - n2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() - n2._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() - n2._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate the product of two integers.
@@ -1201,8 +2001,18 @@
 BOOST_XINT_INTEGER_TYPE operator*(const BOOST_XINT_INTEGER_TYPE n1, const
     BOOST_XINT_INTEGER_TYPE n2)
 {
- BOOST_XINT_INTEGER_TYPE r(n1._data() * n2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() * n2._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() * n2._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate how many \c dividends would fit into \c divisor.
@@ -1219,8 +2029,19 @@
 BOOST_XINT_INTEGER_TYPE operator/(const BOOST_XINT_INTEGER_TYPE dividend, const
     BOOST_XINT_INTEGER_TYPE divisor)
 {
- BOOST_XINT_INTEGER_TYPE r(dividend._data() / divisor._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (dividend.is_nan() || divisor.is_nan()) return
+ BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(dividend._data() / divisor._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(dividend._data() / divisor._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Get the remainder after dividing a number by another.
@@ -1236,8 +2057,18 @@
 BOOST_XINT_INTEGER_TYPE operator%(const BOOST_XINT_INTEGER_TYPE n1, const
     BOOST_XINT_INTEGER_TYPE n2)
 {
- BOOST_XINT_INTEGER_TYPE r(n1._data() % n2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() % n2._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() % n2._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Combine two integers using a bitwise \c AND operation.
@@ -1253,8 +2084,18 @@
 BOOST_XINT_INTEGER_TYPE operator&(const BOOST_XINT_INTEGER_TYPE n1, const
     BOOST_XINT_INTEGER_TYPE n2)
 {
- BOOST_XINT_INTEGER_TYPE r(n1._data() & n2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() & n2._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() & n2._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Combine two integers using a bitwise \c OR operation.
@@ -1270,8 +2111,18 @@
 BOOST_XINT_INTEGER_TYPE operator|(const BOOST_XINT_INTEGER_TYPE n1, const
     BOOST_XINT_INTEGER_TYPE n2)
 {
- BOOST_XINT_INTEGER_TYPE r(n1._data() | n2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() | n2._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() | n2._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Combine two integers using a bitwise \c XOR operation.
@@ -1287,8 +2138,18 @@
 BOOST_XINT_INTEGER_TYPE operator^(const BOOST_XINT_INTEGER_TYPE n1, const
     BOOST_XINT_INTEGER_TYPE n2)
 {
- BOOST_XINT_INTEGER_TYPE r(n1._data() ^ n2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() ^ n2._data());
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r(n1._data() ^ n2._data());
+ return BOOST_XINT_MOVE(r);
+ }
 }
 //!@}
 
@@ -1308,9 +2169,23 @@
 BOOST_XINT_INTEGER_TYPE gcd(const BOOST_XINT_INTEGER_TYPE num1, const
     BOOST_XINT_INTEGER_TYPE num2)
 {
- BOOST_XINT_INTEGER_TYPE r;
- gcd(r._data(), num1._data(), num2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (num1.is_nan() || num2.is_nan()) return
+ BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r;
+ gcd(r._data(), num1._data(), num2._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r;
+ gcd(r._data(), num1._data(), num2._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Calculate the Least Common Multiple of two integers.
@@ -1327,9 +2202,23 @@
 BOOST_XINT_INTEGER_TYPE lcm(const BOOST_XINT_INTEGER_TYPE num1, const
     BOOST_XINT_INTEGER_TYPE num2)
 {
- BOOST_XINT_INTEGER_TYPE r;
- lcm(r._data(), num1._data(), num2._data());
- return BOOST_XINT_MOVE(r);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (num1.is_nan() || num2.is_nan()) return
+ BOOST_XINT_INTEGER_TYPE::nan();
+ try {
+ BOOST_XINT_INTEGER_TYPE r;
+ lcm(r._data(), num1._data(), num2._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ } catch (std::exception&) {
+ return BOOST_XINT_INTEGER_TYPE::nan();
+ }
+ } else {
+ BOOST_XINT_INTEGER_TYPE r;
+ lcm(r._data(), num1._data(), num2._data());
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique();
+ return BOOST_XINT_MOVE(r);
+ }
 }
 
 /*! \brief Compare two integer objects.
@@ -1341,14 +2230,23 @@
 \param[in] ignoresign If \c true, the absolute values of n1 and n2 are compared,
 instead of their signed values. Used internally.
 
-\returns A negative number if \c n1 < \c n2; zero if \c n1 == \c n2, or a
-positive number if \c n1 > \c n2.
+\returns -1 if \c n1 < \c n2; zero if \c n1 == \c n2, or 1 if \c n1 > \c n2. The
+nothrow<true> version returns 2 instead of throwing.
 */
 BOOST_XINT_INTEGER_TPL
 int compare(const BOOST_XINT_INTEGER_TYPE n1, const BOOST_XINT_INTEGER_TYPE n2,
     bool ignoresign = false)
 {
- return compare(n1._data(), n2._data(), ignoresign);
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n1.is_nan() || n2.is_nan()) return 2;
+ try {
+ return compare(n1._data(), n2._data(), ignoresign);
+ } catch (std::exception&) {
+ return 2;
+ }
+ } else {
+ return compare(n1._data(), n2._data(), ignoresign);
+ }
 }
 
 /*! \brief Get the log<sub>2</sub> value of an integer.
@@ -1357,7 +2255,8 @@
 
 \param[in] n The %integer to operate on.
 
-\returns The %integer log<sub>2</sub> value of the integer.
+\returns The %integer log<sub>2</sub> value of the integer. The nothrow<true>
+version returns zero instead of throwing.
 
 \remarks
 pow2(log2(n)-1) will give you an integer with the highest set bit of \c n,
@@ -1368,20 +2267,45 @@
 */
 BOOST_XINT_INTEGER_TPL
 size_t log2(const BOOST_XINT_INTEGER_TYPE n) {
- return log2(n._data());
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+ if (n.is_nan()) return 0;
+ try {
+ return log2(n._data());
+ } catch (std::exception&) {
+ return 0;
+ }
+ } else {
+ return log2(n._data());
+ }
 }
 //!@}
 
 //! Allows for comparisons between integer_t types and other integral values.
 #define BOOST_XINT_ANY_COMPARE(rtype, op) \
- template <class Alloc, bool Threadsafe, bool Secure, typename N> \
+ template <class A0, class A1, class A2, class A3, class A4, typename N> \
     rtype op(const BOOST_XINT_INTEGER_TYPE n1, const N n2) { \
- return op(n1, BOOST_XINT_INTEGER_TYPE(n2)); \
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \
+ try { \
+ return op(n1, BOOST_XINT_INTEGER_TYPE(n2)); \
+ } catch (std::exception&) { \
+ return rtype(0); \
+ } \
+ } else { \
+ return op(n1, BOOST_XINT_INTEGER_TYPE(n2)); \
+ } \
     } \
     \
- template <typename N, class Alloc, bool Threadsafe, bool Secure> \
+ template <typename N, class A0, class A1, class A2, class A3, class A4> \
     rtype op(const N n1, const BOOST_XINT_INTEGER_TYPE n2) { \
- return op(BOOST_XINT_INTEGER_TYPE(n1), n2); \
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \
+ try { \
+ return op(BOOST_XINT_INTEGER_TYPE(n1), n2); \
+ } catch (std::exception&) { \
+ return rtype(0); \
+ } \
+ } else { \
+ return op(BOOST_XINT_INTEGER_TYPE(n1), n2); \
+ } \
     }
 
 BOOST_XINT_ANY_COMPARE(bool, operator<)
@@ -1394,22 +2318,38 @@
 
 //! Allows for operations between integer_t types and other integral values.
 #define BOOST_XINT_ANY_MATH(op) \
- template <class Alloc, bool Threadsafe, bool Secure, typename N> \
- BOOST_XINT_INTEGER_TYPE op(const integer_t<Alloc, Threadsafe, \
- Secure> n1, const N n2) \
- { \
- BOOST_XINT_INTEGER_TYPE r(op(n1, integer_t<Alloc, Threadsafe, \
- Secure>(n2))); \
- return BOOST_XINT_MOVE(r); \
+ template <class A0, class A1, class A2, class A3, class A4, typename N> \
+ BOOST_XINT_INTEGER_TYPE op(const BOOST_XINT_INTEGER_TYPE n1, const N n2) { \
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \
+ try { \
+ BOOST_XINT_INTEGER_TYPE r(op(n1, BOOST_XINT_INTEGER_TYPE(n2)));\
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \
+ return BOOST_XINT_MOVE(r); \
+ } catch (std::exception&) { \
+ return BOOST_XINT_INTEGER_TYPE::nan(); \
+ } \
+ } else { \
+ BOOST_XINT_INTEGER_TYPE r(op(n1, BOOST_XINT_INTEGER_TYPE(n2))); \
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \
+ return BOOST_XINT_MOVE(r); \
+ } \
     } \
     \
- template <typename N, class Alloc, bool Threadsafe, bool Secure> \
- BOOST_XINT_INTEGER_TYPE op(const N n1, const integer_t<Alloc, Threadsafe, \
- Secure> n2) \
- { \
- BOOST_XINT_INTEGER_TYPE r(op(integer_t<Alloc, Threadsafe, Secure>(n1), \
- n2)); \
- return BOOST_XINT_MOVE(r); \
+ template <typename N, class A0, class A1, class A2, class A3, class A4> \
+ BOOST_XINT_INTEGER_TYPE op(const N n1, const BOOST_XINT_INTEGER_TYPE n2) { \
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \
+ try { \
+ BOOST_XINT_INTEGER_TYPE r(op(BOOST_XINT_INTEGER_TYPE(n1), n2));\
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \
+ return BOOST_XINT_MOVE(r); \
+ } catch (std::exception&) { \
+ return BOOST_XINT_INTEGER_TYPE::nan(); \
+ } \
+ } else { \
+ BOOST_XINT_INTEGER_TYPE r(op(BOOST_XINT_INTEGER_TYPE(n1), n2)); \
+ if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \
+ return BOOST_XINT_MOVE(r); \
+ } \
     }
 
 BOOST_XINT_ANY_MATH(pow)
@@ -1430,18 +2370,40 @@
 
 //! \name Stream input/output functions
 //!@{
-template <typename charT, typename traits, class Alloc, bool Threadsafe, bool
- Secure> inline std::basic_ostream<charT,traits>& operator<<(
- std::basic_ostream<charT, traits>& out, const integer_t<Alloc, Threadsafe,
- Secure> n)
+template <typename charT, typename traits, class A0, class A1, class A2, class
+ A3, class A4> inline std::basic_ostream<charT,traits>&
+ operator<<(std::basic_ostream<charT, traits>& out, const
+ BOOST_XINT_INTEGER_TYPE n)
 {
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow && n.is_nan()) return operator<<(out,
+ nan_text);
     return operator<<(out, n._data());
 }
 
-template <typename charT, typename traits, class Alloc, bool Threadsafe, bool
- Secure> inline std::basic_istream<charT,traits>& operator>>(
- std::basic_istream<charT, traits>& in, BOOST_XINT_INTEGER_TYPE& n)
-{
+template <typename charT, typename traits, class A0, class A1, class A2, class
+ A3, class A4> inline std::basic_istream<charT,traits>&
+ operator>>(std::basic_istream<charT, traits>& in, BOOST_XINT_INTEGER_TYPE&
+ n)
+{
+ if (BOOST_XINT_INTEGER_TYPE::Nothrow && in.peek()=='#') {
+ // Must be either #NaN# or an error
+ char buffer[6];
+
+ // These are efficient and safe, but MSVC complains about them anyway.
+ //std::streamsize size = in.readsome(buffer, 5);
+ //buffer[size]=0;
+
+ // Replacing them with these.
+ char *p = buffer, *pe = p + 5;
+ while (p != pe) in >> *p++;
+ *p = 0;
+
+ std::string str(buffer);
+
+ if (str == boost::xint::nan_text) n = n.nan();
+ else in.setstate(std::ios::failbit);
+ return in;
+ }
     return operator>>(in, n._data());
 }
 //!@}
@@ -1458,56 +2420,155 @@
 */
 typedef integer_t<> integer;
 
+/*! \brief The default arbitrary-length nothrow_integer type.
+
+ This uses the default parameters for the integer_t template, other than the
+ \c nothrow one.
+*/
+typedef integer_t<options::nothrow<true> > nothrow_integer;
+
 } // namespace xint
 } // namespace boost
 
+#ifndef BOOST_XINT_DOXYGEN_IGNORE
 namespace std {
-template<>
-class numeric_limits<boost::xint::integer> {
+
+#define BOOST_XINT_INTEGER_TYPENAME boost::xint::integer_t<A0, A1, A2, A3, A4>
+
+BOOST_XINT_INTEGER_TPL
+class numeric_limits<BOOST_XINT_INTEGER_TYPENAME> {
     public:
- static const bool is_specialized = true;
+ static const bool is_specialized;
 
- static boost::xint::integer min() throw() { return 0; } // Not applicable
- static boost::xint::integer max() throw() { return 0; } // Not applicable
+ static BOOST_XINT_INTEGER_TYPENAME min BOOST_PREVENT_MACRO_SUBSTITUTION()
+ throw()
+ {
+ if (BOOST_XINT_INTEGER_TYPENAME::Bits)
+ return -~(BOOST_XINT_INTEGER_TYPENAME());
+ else return 0;
+ }
+ static BOOST_XINT_INTEGER_TYPENAME max BOOST_PREVENT_MACRO_SUBSTITUTION()
+ throw()
+ {
+ if (BOOST_XINT_INTEGER_TYPENAME::Bits)
+ return ~(BOOST_XINT_INTEGER_TYPENAME());
+ else return 0;
+ }
 
- 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
+ static const int digits;
+ static const int digits10;
+ static const bool is_signed;
+ static const bool is_integer;
+ static const bool is_exact;
+ static const int radix;
+ static BOOST_XINT_INTEGER_TYPENAME epsilon() throw() { return 0; }
+ static BOOST_XINT_INTEGER_TYPENAME round_error() throw() { return 0; }
+
+ static const int min_exponent; // N/A
+ static const int min_exponent10; // N/A
+ static const int max_exponent; // N/A
+ static const int max_exponent10; // N/A
+
+ static const bool has_infinity; // N/A
+ static const bool has_quiet_NaN;
+ static const bool has_signaling_NaN; // N/A
+ static const float_denorm_style has_denorm; // N/A
+ static const bool has_denorm_loss; // N/A
+
+ static BOOST_XINT_INTEGER_TYPENAME infinity() throw() { return 0; } // N/A
+ static BOOST_XINT_INTEGER_TYPENAME quiet_NaN() throw() {
+ if (BOOST_XINT_INTEGER_TYPENAME::Nothrow)
+ return BOOST_XINT_INTEGER_TYPENAME::nan();
+ else return 0;
+ }
+ static BOOST_XINT_INTEGER_TYPENAME signaling_NaN() throw() { return 0; } // N/A
+ static BOOST_XINT_INTEGER_TYPENAME denorm_min() throw() { return 0; } // N/A
+
+ static const bool is_iec559; // N/A
+ static const bool is_bounded;
+ static const bool is_modulo;
+
+ static const bool traps; // I assume this means exceptions?
+ static const bool tinyness_before; // N/A
+ static const float_round_style round_style; // N/A
 };
-} // namespace std
 
-#ifdef _WIN32
- // Return the warning setting to its original value.
- #pragma warning(pop)
-#endif
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::is_specialized = true;
+
+BOOST_XINT_INTEGER_TPL
+const int numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::digits =
+ static_cast<int>(BOOST_XINT_INTEGER_TYPENAME::Bits);
+
+BOOST_XINT_INTEGER_TPL
+const int numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::digits10 =
+ static_cast<int>(boost::xint::detail::log10_bits(
+ BOOST_XINT_INTEGER_TYPENAME::Bits));
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::is_signed = true;
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::is_integer = true;
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::is_exact = true;
+
+BOOST_XINT_INTEGER_TPL
+const int numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::radix = 2;
+
+BOOST_XINT_INTEGER_TPL
+const int numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::min_exponent = 0;
+
+BOOST_XINT_INTEGER_TPL
+const int numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::min_exponent10 = 0;
+
+BOOST_XINT_INTEGER_TPL
+const int numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::max_exponent = 0;
 
+BOOST_XINT_INTEGER_TPL
+const int numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::max_exponent10 = 0;
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::has_infinity = false;
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::has_quiet_NaN =
+ (BOOST_XINT_INTEGER_TYPENAME::Nothrow ? true : false);
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::has_signaling_NaN =
+ false;
+
+BOOST_XINT_INTEGER_TPL
+const float_denorm_style numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::has_denorm
+ = denorm_absent;
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::has_denorm_loss = false;
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::is_iec559 = false;
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::is_bounded =
+ (BOOST_XINT_INTEGER_TYPENAME::Bits == 0 ? false : true);
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::is_modulo =
+ (BOOST_XINT_INTEGER_TYPENAME::Bits == 0 ? false : true);
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::traps =
+ (BOOST_XINT_INTEGER_TYPENAME::Nothrow ? false : true);
+
+BOOST_XINT_INTEGER_TPL
+const bool numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::tinyness_before = false;
+
+BOOST_XINT_INTEGER_TPL
+const float_round_style numeric_limits<BOOST_XINT_INTEGER_TYPENAME>::round_style
+ = round_indeterminate;
+
+} // namespace std
+#endif // BOOST_XINT_DOXYGEN_IGNORE
 #endif // BOOST_INCLUDED_XINT_INTEGER_HPP

Deleted: sandbox/xint/boost/xint/nothrow_integer.hpp
==============================================================================
--- sandbox/xint/boost/xint/nothrow_integer.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,1357 +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 \c xint::nothrow_integer class.
-*/
-
-#ifndef BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP
-#define BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP
-
-#include "detail/internals.hpp"
-#include "random.hpp"
-
-namespace boost {
-namespace xint {
-
-#ifdef _WIN32
- // The file's constructors make heavy use of the 'this' pointer, in a safe
- // manner. MSVC isn't smart enough to know that it's safe.
- #pragma warning(push)
- #pragma warning(disable: 4355)
-#endif
-
-#ifdef BOOST_XINT_DOXYGEN_IGNORE
- // The documentation should see a simplified version of the functions.
- #define BOOST_XINT_INTEGER_INITIAL_TPL template<...>
- #define BOOST_XINT_INTEGER_TPL template<...>
- #define BOOST_XINT_NTINTEGER_TYPE nothrow_integer_t
-#else
- namespace detail { struct nan_t { }; }
-
- #define BOOST_XINT_INTEGER_INITIAL_TPL template <class Alloc = \
- std::allocator<detail::digit_t>, bool Threadsafe = true, bool Secure = \
- false>
- #define BOOST_XINT_INTEGER_TPL template<class Alloc, bool Threadsafe, bool \
- Secure>
- #define BOOST_XINT_NTINTEGER_TYPE nothrow_integer_t<Alloc, Threadsafe, \
- Secure>
-#endif
-
-/*! \brief The %nothrow_integer_t class template.
-
- Operations 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.
-
- \tparam Alloc The allocator to use. It must be for the \c
- boost::xint::detail::digit_t type.
-
- \tparam Threadsafe If \c true, the library ensures that each object has its
- own unique storage before returning it. If \c false, identical objects are
- allowed to share storage using a copy-on-write design, potentially
- increasing the speed of the library, but making it unsafe for multithreaded
- use (with \ref threadsafe "some exceptions"). The library allows
- copy-on-write for internal functions regardless of this parameter, which is
- safe because the internal functions are single-threaded.
-
- \tparam Secure If \c true, the library zeros out all memory before
- deallocating it, for maximum security.
-*/
-BOOST_XINT_INTEGER_INITIAL_TPL
-class nothrow_integer_t: public detail::digitmanager_t<Alloc, Threadsafe,
- Secure>, public any_integer
-{
- public:
- typedef BOOST_XINT_NTINTEGER_TYPE type;
-
- //! \name Constructors & Destructors
- //!@{
- nothrow_integer_t();
- nothrow_integer_t(const BOOST_XINT_NTINTEGER_TYPE& b, bool
- force_thread_safety = false);
- nothrow_integer_t(BOOST_XINT_RV_REF(type) b): any_integer(*this, 1) {
- _swap(b); }
- explicit nothrow_integer_t(const char *str, size_t base = 10);
- explicit nothrow_integer_t(const char *str, char **endptr, size_t base =
- 10);
- explicit nothrow_integer_t(const std::string& str, size_t base = 10);
- explicit nothrow_integer_t(const xint::binary_t b, bitsize_t bits = 0);
- explicit nothrow_integer_t(const any_integer& other, bool
- force_thread_safety = false);
- template <typename Type> nothrow_integer_t(const Type n, typename
- boost::enable_if<boost::is_integral<Type> >::type* = 0);
-
- #ifndef BOOST_XINT_DOXYGEN_IGNORE
- //! This one is used internally.
- nothrow_integer_t(const detail::data_t c): detail::digitmanager_t<Alloc,
- Threadsafe, Secure>(*c.holder()), any_integer(*this, c.length,
- c.negative) { data.beginendmod(); }
- nothrow_integer_t(const detail::nan_t& c): detail::digitmanager_t<Alloc,
- Threadsafe, Secure>(0), any_integer(*this, 0) { }
- #endif
- //!@}
-
- /*! \name Mathematical and Bitwise Operators
- \brief These operate exactly like their counterparts for the built-in
- %integer types.
- */
- //@{
- BOOST_XINT_NTINTEGER_TYPE& operator=(BOOST_XINT_COPY_ASSIGN_REF(type) c);
- BOOST_XINT_NTINTEGER_TYPE& operator=(BOOST_XINT_RV_REF(type) c) { _swap(c);
- return *this; }
- template <typename Type> BOOST_XINT_NTINTEGER_TYPE& operator=(const Type n)
- { BOOST_XINT_NTINTEGER_TYPE nn(n); _swap(nn); return *this; }
-
- bool operator!() const { return data.is_zero(); }
- BOOST_XINT_NTINTEGER_TYPE operator-() const;
- BOOST_XINT_NTINTEGER_TYPE& operator+() { return *this; }
- const BOOST_XINT_NTINTEGER_TYPE& operator+() const { return *this; }
- BOOST_XINT_NTINTEGER_TYPE operator~() const;
-
- BOOST_XINT_NTINTEGER_TYPE& operator+=(const BOOST_XINT_NTINTEGER_TYPE b);
- BOOST_XINT_NTINTEGER_TYPE& operator-=(const BOOST_XINT_NTINTEGER_TYPE b);
- BOOST_XINT_NTINTEGER_TYPE& operator*=(const BOOST_XINT_NTINTEGER_TYPE b);
- BOOST_XINT_NTINTEGER_TYPE& operator/=(const BOOST_XINT_NTINTEGER_TYPE b);
- BOOST_XINT_NTINTEGER_TYPE& operator%=(const BOOST_XINT_NTINTEGER_TYPE b);
-
- BOOST_XINT_NTINTEGER_TYPE& operator++();
- BOOST_XINT_NTINTEGER_TYPE& operator--();
- BOOST_XINT_NTINTEGER_TYPE operator++(int);
- BOOST_XINT_NTINTEGER_TYPE operator--(int);
-
- BOOST_XINT_NTINTEGER_TYPE& operator&=(const BOOST_XINT_NTINTEGER_TYPE n);
- BOOST_XINT_NTINTEGER_TYPE& operator|=(const BOOST_XINT_NTINTEGER_TYPE n);
- BOOST_XINT_NTINTEGER_TYPE& operator^=(const BOOST_XINT_NTINTEGER_TYPE n);
- BOOST_XINT_NTINTEGER_TYPE operator<<(bitsize_t shift) const;
- BOOST_XINT_NTINTEGER_TYPE operator>>(bitsize_t shift) const;
- BOOST_XINT_NTINTEGER_TYPE& operator<<=(bitsize_t shift);
- BOOST_XINT_NTINTEGER_TYPE& operator>>=(bitsize_t shift);
- //@}
-
- //! \name Miscellaneous Functions
- //!@{
- bool is_odd() const;
- bool is_even() const;
- bool is_nan() const { return _is_nan(); }
- int sign(bool signed_zero = false) const;
- size_t hex_digits() const;
- //!@}
-
- typedef base_divide_t<BOOST_XINT_NTINTEGER_TYPE> divide_t;
-
- /*! \name Static Member Functions
-
- These are functions that return a nothrow_integer_t, but don't take one
- as a parameter. To use them as free functions, you would have to specify
- the return type anyway, so I made them static member functions of the
- type instead.
- */
- //!@{
- static BOOST_XINT_NTINTEGER_TYPE pow2(size_t exponent);
- static BOOST_XINT_NTINTEGER_TYPE factorial(size_t n);
- static BOOST_XINT_NTINTEGER_TYPE nan() { return _nan; }
- template <class Type> static BOOST_XINT_NTINTEGER_TYPE random_by_size(Type&
- gen, bitsize_t size_in_bits, bool high_bit_on = false, bool low_bit_on =
- false, bool can_be_negative = false);
- template <class Type> static BOOST_XINT_NTINTEGER_TYPE random_prime(Type&
- gen, bitsize_t size_in_bits, callback_t callback = no_callback);
- //!@}
-
- void _swap(BOOST_XINT_NTINTEGER_TYPE& s) { using std::swap; swap(data,
- s.data); }
- static std::string _nan_text() { return "#NaN#"; }
-
- private:
- static BOOST_XINT_NTINTEGER_TYPE _nan;
- BOOST_XINT_COPYABLE_AND_MOVABLE(type)
-};
-
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::_nan =
- BOOST_XINT_NTINTEGER_TYPE(detail::nan_t());
-
-////////////////////////////////////////////////////////////////////////////////
-// Function template definitions
-
-//! \copydoc integer_t::integer_t()
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(): any_integer(*this, 1) {
- // Don't need to do anything, already preinitialized to zero.
-}
-
-//! \copydoc integer_t::integer_t(const integer_t&, bool)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(const BOOST_XINT_NTINTEGER_TYPE& b,
- bool force_thread_safety): any_integer(*this, 1)
-{
- try {
- data = b.data;
- if (!is_nan()) {
- data.beginendmod();
- if (force_thread_safety && Threadsafe == false) data.make_unique();
- }
- } catch (std::exception&) {
- *this = nan();
- }
-}
-
-//! \copydoc integer_t::integer_t(const std::string&, size_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(const char *str, size_t base):
- any_integer(*this, 1)
-{
- try {
- data.from_string(str, strlen(str), base);
- } catch (std::exception&) {
- *this = nan();
- }
-}
-
-//! \copydoc integer_t::integer_t(const char *, char **, size_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(const char *str, char **endptr,
- size_t base): any_integer(*this, 1)
-{
- try {
- data.from_string(str, endptr, base);
- } catch (std::exception&) {
- *this = nan();
- }
-}
-
-//! \copydoc integer_t::integer_t(const std::string&, size_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(const std::string& str, size_t
- base): any_integer(*this, 1)
-{
- try {
- data.from_string(str.c_str(), str.length(), base);
- } catch (std::exception&) {
- *this = nan();
- }
-}
-
-//! \copydoc integer_t::integer_t(const xint::binary_t, bitsize_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(const xint::binary_t b, bitsize_t
- bits): any_integer(*this, 1)
-{
- try {
- data.from_binary(b, bits);
- } catch (std::exception&) {
- *this = nan();
- }
-}
-
-//! \copydoc integer_t::integer_t(const any_integer&, bool)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(const any_integer& c, bool):
- any_integer(*this, 1)
-{
- if (c._data().is_nan()) {
- *this = nan();
- } else {
- try {
- data.duplicate_data(c._data());
- } catch (std::exception&) {
- *this = nan();
- }
- }
-}
-
-/*!
- Constructs a new integer object with the value of the built-in %integer type
- passed to it.
-
- \param[in] n The value for the new object.
- \tparam Type The type of \c n.
-
- You can ignore the \c enable_if parameter, it's there only to tell the
- compiler what types the function applies to.
-
- \overload
-*/
-BOOST_XINT_INTEGER_TPL
-template <typename Type> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(const Type
- n, typename boost::enable_if<boost::is_integral<Type> >::type*):
- any_integer(*this, 1)
-{
- try {
- if (std::numeric_limits<Type>::is_signed) data.set_signed(n);
- else data.set_unsigned(n);
- } catch (std::exception&) {
- *this = nan();
- }
-}
-
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator=(
- BOOST_XINT_COPY_ASSIGN_REF(type) c)
-{
- try {
- data = c.data;
- if (!is_nan()) data.beginendmod();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \copydoc integer_t::operator-
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::operator-() const {
- try {
- if (is_nan()) return *this;
- BOOST_XINT_NTINTEGER_TYPE r(-data);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return nan();
- }
-}
-
-//! \see operator+(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator+=(const
- BOOST_XINT_NTINTEGER_TYPE b)
-{
- try {
- if (!is_nan() && !b.is_nan()) data += b.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \see operator-(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator-=(const
- BOOST_XINT_NTINTEGER_TYPE b)
-{
- try {
- if (!is_nan() && !b.is_nan()) data -= b.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \see operator*(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator*=(const
- BOOST_XINT_NTINTEGER_TYPE b)
-{
- try {
- if (!is_nan() && !b.is_nan()) data *= b.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \see operator/(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator/=(const
- BOOST_XINT_NTINTEGER_TYPE b)
-{
- try {
- if (!is_nan() && !b.is_nan()) data /= b.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \see operator%(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator%=(const
- BOOST_XINT_NTINTEGER_TYPE b)
-{
- try {
- if (!is_nan() && !b.is_nan()) data %= b.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \copydoc integer_t::operator++
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator++() {
- try {
- if (!is_nan()) ++data;
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \copydoc integer_t::operator--
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator--() {
- try {
- if (!is_nan()) --data;
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \copydoc integer_t::operator++(int)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::operator++(int) {
- try {
- if (is_nan()) return *this;
- BOOST_XINT_NTINTEGER_TYPE r(data++);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return nan();
- }
-}
-
-//! \copydoc integer_t::operator--(int)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::operator--(int) {
- try {
- if (is_nan()) return *this;
- BOOST_XINT_NTINTEGER_TYPE r(data--);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return nan();
- }
-}
-
-//! \see operator&(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator&=(const
- BOOST_XINT_NTINTEGER_TYPE n)
-{
- try {
- if (!is_nan() && !n.is_nan()) data &= n.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \see operator|(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator|=(const
- BOOST_XINT_NTINTEGER_TYPE n)
-{
- try {
- if (!is_nan() && !n.is_nan()) data |= n.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \see operator^(nothrow_integer_t, nothrow_integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator^=(const
- BOOST_XINT_NTINTEGER_TYPE n)
-{
- try {
- if (!is_nan() && !n.is_nan()) data ^= n.data;
- else *this = nan();
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \copydoc integer_t::operator<<(bitsize_t) const
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::operator<<(bitsize_t shift)
- const
-{
- try {
- if (is_nan()) return *this;
- BOOST_XINT_NTINTEGER_TYPE r(data << shift);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return BOOST_XINT_NTINTEGER_TYPE::nan();
- }
-}
-
-//! \copydoc integer_t::operator>>(bitsize_t) const
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::operator>>(bitsize_t shift)
- const
-{
- try {
- if (is_nan()) return *this;
- BOOST_XINT_NTINTEGER_TYPE r(data >> shift);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return BOOST_XINT_NTINTEGER_TYPE::nan();
- }
-}
-
-//! \see nothrow_integer_t::operator<<(bitsize_t) const
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator<<=(bitsize_t
- shift)
-{
- try {
- if (!is_nan()) data <<= shift;
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-//! \see nothrow_integer_t::operator>>(bitsize_t) const
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE& BOOST_XINT_NTINTEGER_TYPE::operator>>=(bitsize_t
- shift)
-{
- try {
- if (!is_nan()) data >>= shift;
- } catch (std::exception&) {
- *this = nan();
- }
- return *this;
-}
-
-/*! \copydoc integer_t::is_odd
-
- Returns false instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-bool BOOST_XINT_NTINTEGER_TYPE::is_odd() const {
- try {
- return (is_nan() ? false : data.is_odd());
- } catch (std::exception&) {
- return false;
- }
-}
-
-/*! \copydoc integer_t::is_even
-
- Returns false instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-bool BOOST_XINT_NTINTEGER_TYPE::is_even() const {
- try {
- return (is_nan() ? false : data.is_even());
- } catch (std::exception&) {
- return false;
- }
-}
-
-/*! \copydoc integer_t::sign
-
- Returns zero instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-int BOOST_XINT_NTINTEGER_TYPE::sign(bool signed_zero) const {
- try {
- return (is_nan() ? 0 : data.sign(signed_zero));
- } catch (std::exception&) {
- return 0;
- }
-}
-
-/*! \copydoc integer_t::hex_digits
-
- Returns zero instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-size_t BOOST_XINT_NTINTEGER_TYPE::hex_digits() const {
- try {
- return (is_nan() ? 0 : data.hex_digits());
- } catch (std::exception&) {
- return 0;
- }
-}
-
-//! \copydoc integer_t::pow2
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::pow2(size_t exponent) {
- try {
- BOOST_XINT_NTINTEGER_TYPE r;
- detail::pow2(r.data, exponent);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return BOOST_XINT_NTINTEGER_TYPE::nan();
- }
-}
-
-//! \copydoc integer_t::factorial
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::factorial(size_t n) {
- try {
- BOOST_XINT_NTINTEGER_TYPE r;
- detail::factorial(r.data, n);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return BOOST_XINT_NTINTEGER_TYPE::nan();
- }
-}
-
-//! \copydoc integer_t::random_by_size
-BOOST_XINT_INTEGER_TPL
-template <class Type>
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::random_by_size(Type& gen,
- bitsize_t size_in_bits, bool high_bit_on, bool low_bit_on, bool
- can_be_negative)
-{
- try {
- detail::random_generator<Type> rgen(gen);
-
- BOOST_XINT_NTINTEGER_TYPE r;
- detail::random_by_size(r._data(), rgen, size_in_bits, high_bit_on,
- low_bit_on, can_be_negative);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return BOOST_XINT_NTINTEGER_TYPE::nan();
- }
-}
-
-//! \copydoc integer_t::random_prime
-BOOST_XINT_INTEGER_TPL
-template <class Type>
-BOOST_XINT_NTINTEGER_TYPE BOOST_XINT_NTINTEGER_TYPE::random_prime(Type& gen,
- bitsize_t size_in_bits, callback_t callback)
-{
- try {
- detail::random_generator<Type> rgen(gen);
-
- BOOST_XINT_NTINTEGER_TYPE r;
- detail::random_prime(r._data(), rgen, size_in_bits, callback);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return BOOST_XINT_NTINTEGER_TYPE::nan();
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Free function template definitions
-
-//! \name Mathematical primitives
-//!@{
-
-//! \copydoc abs(integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE abs(const BOOST_XINT_NTINTEGER_TYPE n) {
- try {
- if (n.is_nan()) return n;
- BOOST_XINT_NTINTEGER_TYPE r(abs(n._data()));
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-
-/*! \copydoc divide(integer_t, integer_t)
-
-\note Returns two Not-a-Number values instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-typename BOOST_XINT_NTINTEGER_TYPE::divide_t divide(const
- BOOST_XINT_NTINTEGER_TYPE dividend, const BOOST_XINT_NTINTEGER_TYPE divisor)
-{
- try {
- if (dividend.is_nan() || divisor.is_nan())
- return std::make_pair(dividend.nan(), dividend.nan());
- typename BOOST_XINT_NTINTEGER_TYPE::divide_t r;
- divide(r.quotient._data(), r.remainder._data(), dividend._data(),
- divisor._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return std::make_pair(dividend.nan(), dividend.nan());
- }
-}
-//!@}
-
-//! \name Powers and roots
-//!@{
-
-//! \copydoc square(integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE square(const BOOST_XINT_NTINTEGER_TYPE n) {
- try {
- if (n.is_nan()) return n;
- BOOST_XINT_NTINTEGER_TYPE r;
- square(r._data(), n._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-
-//! \copydoc pow(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE pow(const BOOST_XINT_NTINTEGER_TYPE n, const
- BOOST_XINT_NTINTEGER_TYPE e)
-{
- try {
- if (n.is_nan() || e.is_nan()) return n.nan();
- BOOST_XINT_NTINTEGER_TYPE r;
- pow(r._data(), n._data(), e._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-
-//! \copydoc sqrt(integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE sqrt(const BOOST_XINT_NTINTEGER_TYPE n) {
- try {
- if (n.is_nan()) return n;
- BOOST_XINT_NTINTEGER_TYPE r;
- sqrt(r._data(), n._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-//!@}
-
-//! \name Conversion functions
-//!@{
-
-/*! \copydoc to(integer_t)
-
-\note Returns T(0) instead of throwing.
-*/
-template <typename Type, class Alloc, bool Threadsafe, bool Secure>
-Type to(const BOOST_XINT_NTINTEGER_TYPE n) {
- try {
- if (n.is_nan()) return Type(0);
- return to<Type>(n._data());
- } catch (std::exception&) {
- return Type(0);
- }
-}
-
-/*! \copydoc to_string(integer_t, size_t, bool)
-
-\note Returns an empty string instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-std::string to_string(const BOOST_XINT_NTINTEGER_TYPE n, size_t base = 10, bool
- uppercase = false)
-{
- try {
- if (n.is_nan()) return n._nan_text();
- return to_string(n._data(), base, uppercase);
- } catch (std::exception&) {
- return std::string();
- }
-}
-
-/*! \copydoc to_binary(integer_t, size_t)
-
-\note Returns an empty \c binary_t object instead of throwing. Note that a zero
-value will also return an empty \c binary_t object.
-*/
-BOOST_XINT_INTEGER_TPL
-xint::binary_t to_binary(const BOOST_XINT_NTINTEGER_TYPE n, bitsize_t bits = 0)
-{
- try {
- if (n.is_nan()) return xint::binary_t();
- return to_binary(n._data(), bits);
- } catch (std::exception&) {
- return xint::binary_t();
- }
-}
-//!@}
-
-//! \name Bit-manipulation functions
-//!@{
-
-/*! \copydoc getbit(const integer_t, bitsize_t)
-
-\note Returns false instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-bool getbit(const BOOST_XINT_NTINTEGER_TYPE n, bitsize_t bit) {
- try {
- if (n.is_nan()) return false;
- return getbit(n._data(), bit);
- } catch (std::exception&) {
- return false;
- }
-}
-
-/*! \copydoc setbit(integer_t&, bitsize_t)
-
-\note Does nothing instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-void setbit(BOOST_XINT_NTINTEGER_TYPE& n, bitsize_t bit) {
- try {
- if (!n.is_nan()) setbit(n._data(), bit);
- } catch (std::exception&) {
- // Do nothing.
- }
-}
-
-/*! \copydoc clearbit(integer_t&, bitsize_t)
-
-\note Does nothing instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-void clearbit(BOOST_XINT_NTINTEGER_TYPE& n, bitsize_t bit) {
- try {
- if (!n.is_nan()) clearbit(n._data(), bit);
- } catch (std::exception&) {
- // Do nothing.
- }
-}
-
-/*! \copydoc lowestbit(integer_t, bitsize_t)
-
-\note Returns \c return_if_zero instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-bitsize_t lowestbit(const BOOST_XINT_NTINTEGER_TYPE n, bitsize_t return_if_zero
- = 0)
-{
- try {
- if (n.is_nan()) return return_if_zero;
- return lowestbit(n._data(), return_if_zero);
- } catch (std::exception&) {
- return return_if_zero;
- }
-}
-
-/*! \copydoc highestbit(integer_t, bitsize_t)
-
-\note Returns \c return_if_zero instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-bitsize_t highestbit(const BOOST_XINT_NTINTEGER_TYPE n, bitsize_t return_if_zero
- = 0)
-{
- try {
- if (n.is_nan()) return return_if_zero;
- return highestbit(n._data(), return_if_zero);
- } catch (std::exception&) {
- return return_if_zero;
- }
-}
-//!@}
-
-//! \name Modular math functions
-//!@{
-
-//! \copydoc mulmod(integer_t, integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE mulmod(const BOOST_XINT_NTINTEGER_TYPE n, const
- BOOST_XINT_NTINTEGER_TYPE by, const BOOST_XINT_NTINTEGER_TYPE modulus)
-{
- try {
- if (n.is_nan() || by.is_nan() || modulus.is_nan()) return n.nan();
- BOOST_XINT_NTINTEGER_TYPE r;
- mulmod(r._data(), n._data(), by._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-
-//! \copydoc sqrmod(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE sqrmod(const BOOST_XINT_NTINTEGER_TYPE n, const
- BOOST_XINT_NTINTEGER_TYPE modulus)
-{
- try {
- if (n.is_nan() || modulus.is_nan()) return n.nan();
- BOOST_XINT_NTINTEGER_TYPE r;
- sqrmod(r._data(), n._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-
-//! \copydoc powmod(integer_t, integer_t, integer_t, bool)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE powmod(const BOOST_XINT_NTINTEGER_TYPE n, const
- BOOST_XINT_NTINTEGER_TYPE exponent, const BOOST_XINT_NTINTEGER_TYPE modulus,
- bool no_monty)
-{
- try {
- if (n.is_nan() || exponent.is_nan() || modulus.is_nan()) return n.nan();
- BOOST_XINT_NTINTEGER_TYPE r;
- powmod(r._data(), n._data(), exponent._data(), modulus._data(),
- no_monty);
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-
-//! \copydoc invmod(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE invmod(const BOOST_XINT_NTINTEGER_TYPE n, const
- BOOST_XINT_NTINTEGER_TYPE modulus)
-{
- try {
- if (n.is_nan() || modulus.is_nan()) return n.nan();
- BOOST_XINT_NTINTEGER_TYPE r;
- invmod(r._data(), n._data(), modulus._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n.nan();
- }
-}
-//!@}
-
-//! \name Random and prime number functions
-//!@{
-
-/*! \copydoc is_prime(integer_t, callback_t)
-
-\note Returns -2 instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-int is_prime(const BOOST_XINT_NTINTEGER_TYPE n, callback_t callback =
- no_callback)
-{
- try {
- if (n.is_nan()) return -2;
- return is_prime(n._data(), callback);
- } catch (std::exception&) {
- return -2;
- }
-}
-//!@}
-
-//! \name Comparison Operators
-//!@{
-
-BOOST_XINT_INTEGER_TPL bool operator<(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- return operator<(n1._data(), n2._data());
- } catch (std::exception&) {
- return false;
- }
-}
-
-BOOST_XINT_INTEGER_TPL bool operator>(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- return operator>(n1._data(), n2._data());
- } catch (std::exception&) {
- return false;
- }
-}
-
-BOOST_XINT_INTEGER_TPL bool operator<=(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- return operator<=(n1._data(), n2._data());
- } catch (std::exception&) {
- return false;
- }
-}
-
-BOOST_XINT_INTEGER_TPL bool operator>=(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- return operator>=(n1._data(), n2._data());
- } catch (std::exception&) {
- return false;
- }
-}
-
-BOOST_XINT_INTEGER_TPL bool operator==(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- return operator==(n1._data(), n2._data());
- } catch (std::exception&) {
- return false;
- }
-}
-
-BOOST_XINT_INTEGER_TPL bool operator!=(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- return operator!=(n1._data(), n2._data());
- } catch (std::exception&) {
- return false;
- }
-}
-//!@}
-
-//! \name Mathematical and Bitwise Operators
-//!@{
-
-//! \copydoc operator+(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator+(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(n1._data() + n2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n1.nan();
- }
-}
-
-//! \copydoc operator-(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator-(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(n1._data() - n2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n1.nan();
- }
-}
-
-//! \copydoc operator*(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator*(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(n1._data() * n2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n1.nan();
- }
-}
-
-//! \copydoc operator/(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator/(const BOOST_XINT_NTINTEGER_TYPE dividend,
- const BOOST_XINT_NTINTEGER_TYPE divisor)
-{
- if (dividend.is_nan() || divisor.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(dividend._data() /
- divisor._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return dividend.nan();
- }
-}
-
-//! \copydoc operator%(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator%(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(n1._data() % n2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n1.nan();
- }
-}
-
-//! \copydoc operator&(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator&(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(n1._data() & n2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n1.nan();
- }
-}
-
-//! \copydoc operator|(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator|(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(n1._data() | n2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n1.nan();
- }
-}
-
-//! \copydoc operator^(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE operator^(const BOOST_XINT_NTINTEGER_TYPE n1, const
- BOOST_XINT_NTINTEGER_TYPE n2)
-{
- if (n1.is_nan() || n2.is_nan()) return false;
- try {
- BOOST_XINT_NTINTEGER_TYPE r(n1._data() ^ n2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return n1.nan();
- }
-}
-//!@}
-
-//! \name Miscellaneous functions
-//!@{
-
-//! \copydoc gcd(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE gcd(const BOOST_XINT_NTINTEGER_TYPE num1, const
- BOOST_XINT_NTINTEGER_TYPE num2)
-{
- if (num1.is_nan() || num2.is_nan()) return num1.nan();
- try {
- BOOST_XINT_NTINTEGER_TYPE r;
- gcd(r._data(), num1._data(), num2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return num1.nan();
- }
-}
-
-//! \copydoc lcm(integer_t, integer_t)
-BOOST_XINT_INTEGER_TPL
-BOOST_XINT_NTINTEGER_TYPE lcm(const BOOST_XINT_NTINTEGER_TYPE num1, const
- BOOST_XINT_NTINTEGER_TYPE num2)
-{
- if (num1.is_nan() || num2.is_nan()) return num1.nan();
- try {
- BOOST_XINT_NTINTEGER_TYPE r;
- lcm(r._data(), num1._data(), num2._data());
- return BOOST_XINT_MOVE(r);
- } catch (std::exception&) {
- return num1.nan();
- }
-}
-
-/*! \copydoc compare(integer_t, integer_t, bool)
-
-\note Returns 2 instead of throwing, so say that the items are not equal.
-*/
-BOOST_XINT_INTEGER_TPL
-int compare(const BOOST_XINT_NTINTEGER_TYPE n1, const BOOST_XINT_NTINTEGER_TYPE
- n2, bool ignoresign = false)
-{
- if (n1.is_nan() || n2.is_nan()) return 2;
- try {
- return compare(n1._data(), n2._data(), ignoresign);
- } catch (std::exception&) {
- return 2;
- }
-}
-
-/*! \copydoc log2(integer_t)
-
-\note Returns zero instead of throwing.
-*/
-BOOST_XINT_INTEGER_TPL
-size_t log2(const BOOST_XINT_NTINTEGER_TYPE n) {
- try {
- return (n.is_nan() ? 0 : log2(n._data()));
- } catch (std::exception&) {
- return 0;
- }
-}
-//!@}
-
-//! Allows for comparisons between nothrow_integer_t types and other integral
-//! values.
-#define BOOST_XINT_NOTHROW_ANY_COMPARE(rtype, op) \
- template <class Alloc, bool Threadsafe, bool Secure, typename N> \
- rtype op(const BOOST_XINT_NTINTEGER_TYPE n1, const N n2) { \
- return op(n1, BOOST_XINT_NTINTEGER_TYPE(n2)); \
- } \
- \
- template <typename N, class Alloc, bool Threadsafe, bool Secure> \
- rtype op(const N n1, const BOOST_XINT_NTINTEGER_TYPE n2) { \
- return op(BOOST_XINT_NTINTEGER_TYPE(n1), n2); \
- }
-
-BOOST_XINT_NOTHROW_ANY_COMPARE(bool, operator<)
-BOOST_XINT_NOTHROW_ANY_COMPARE(bool, operator>)
-BOOST_XINT_NOTHROW_ANY_COMPARE(bool, operator<=)
-BOOST_XINT_NOTHROW_ANY_COMPARE(bool, operator>=)
-BOOST_XINT_NOTHROW_ANY_COMPARE(bool, operator==)
-BOOST_XINT_NOTHROW_ANY_COMPARE(bool, operator!=)
-BOOST_XINT_NOTHROW_ANY_COMPARE(int, compare)
-
-//! Allows for operations between nothrow_integer_t types and other integral
-//! values.
-#define BOOST_XINT_NOTHROW_ANY_MATH(op) \
- template <class Alloc, bool Threadsafe, bool Secure, typename N> \
- BOOST_XINT_NTINTEGER_TYPE op(const BOOST_XINT_NTINTEGER_TYPE n1, const N \
- n2) \
- { \
- BOOST_XINT_NTINTEGER_TYPE r(op(n1, BOOST_XINT_NTINTEGER_TYPE(n2))); \
- return BOOST_XINT_MOVE(r); \
- } \
- \
- template <typename N, class Alloc, bool Threadsafe, bool Secure> \
- BOOST_XINT_NTINTEGER_TYPE op(const N n1, const BOOST_XINT_NTINTEGER_TYPE \
- n2) \
- { \
- BOOST_XINT_NTINTEGER_TYPE r(op(BOOST_XINT_NTINTEGER_TYPE(n1), n2)); \
- return BOOST_XINT_MOVE(r); \
- }
-
-BOOST_XINT_NOTHROW_ANY_MATH(pow)
-BOOST_XINT_NOTHROW_ANY_MATH(mulmod)
-BOOST_XINT_NOTHROW_ANY_MATH(sqrmod)
-BOOST_XINT_NOTHROW_ANY_MATH(powmod)
-BOOST_XINT_NOTHROW_ANY_MATH(invmod)
-BOOST_XINT_NOTHROW_ANY_MATH(operator+)
-BOOST_XINT_NOTHROW_ANY_MATH(operator-)
-BOOST_XINT_NOTHROW_ANY_MATH(operator*)
-BOOST_XINT_NOTHROW_ANY_MATH(operator/)
-BOOST_XINT_NOTHROW_ANY_MATH(operator%)
-BOOST_XINT_NOTHROW_ANY_MATH(operator&)
-BOOST_XINT_NOTHROW_ANY_MATH(operator|)
-BOOST_XINT_NOTHROW_ANY_MATH(operator^)
-BOOST_XINT_NOTHROW_ANY_MATH(gcd)
-BOOST_XINT_NOTHROW_ANY_MATH(lcm)
-
-//! \name Stream input/output functions
-//!@{
-template <typename charT, typename traits, class Alloc, bool Threadsafe, bool
- Secure> inline std::basic_ostream<charT,traits>&
- operator<<(std::basic_ostream<charT, traits>& out, const
- BOOST_XINT_NTINTEGER_TYPE n)
-{
- if (n.is_nan()) return operator<<(out, n._nan_text());
- return operator<<(out, n._data());
-}
-
-template <typename charT, typename traits, class Alloc, bool Threadsafe, bool
- Secure> inline std::basic_istream<charT,traits>&
- operator>>(std::basic_istream<charT, traits>& in, BOOST_XINT_NTINTEGER_TYPE&
- n)
-{
- if (in.peek()=='#') {
- // Must be either #NaN# or an error
- char buffer[6];
-
- // These are efficient and safe, but MSVC complains about them anyway.
- //std::streamsize size=in.readsome(buffer, 5);
- //buffer[size]=0;
-
- // Replacing them with these.
- char *p = buffer, *pe = p + 5;
- while (p != pe) in >> *p++;
- *p = 0;
-
- std::string str(buffer);
-
- if (str == n._nan_text()) n = n.nan();
- else in.setstate(std::ios::failbit);
- return in;
- } else {
- return operator>>(in, n._data());
- }
-}
-//!@}
-
-BOOST_XINT_INTEGER_TPL
-inline void swap(BOOST_XINT_NTINTEGER_TYPE& left, BOOST_XINT_NTINTEGER_TYPE&
- right)
-{
- left._swap(right);
-}
-
-/*! \brief The default nothrow_integer type.
-
- This uses the default parameters for the nothrow_integer_t template.
-*/
-typedef nothrow_integer_t<> nothrow_integer;
-
-} // 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
-
-#ifdef _WIN32
- // Return the warning setting to its original value.
- #pragma warning(pop)
-#endif
-
-#endif // BOOST_INCLUDED_XINT_NOTHROW_INTEGER_HPP

Modified: sandbox/xint/boost/xint/random.hpp
==============================================================================
--- sandbox/xint/boost/xint/random.hpp (original)
+++ sandbox/xint/boost/xint/random.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -18,7 +18,6 @@
 #ifndef BOOST_INCLUDED_XINT_RANDOM_HPP
 #define BOOST_INCLUDED_XINT_RANDOM_HPP
 
-#include "detail/internals.hpp"
 #include <ctime>
 #include <boost/random/uniform_int.hpp>
 #include <boost/random/variate_generator.hpp>
@@ -72,11 +71,6 @@
         gen_t gen;
     };
 
- void random_by_size(data_t& target, base_random_generator& gen, size_t bits,
- bool high_bit_on, bool low_bit_on, bool can_be_negative);
- void random_prime(data_t& target, base_random_generator& gen, size_t
- size_in_bits, callback_t callback = no_callback);
-
 //! @endcond detail
 } // namespace detail
 

Modified: sandbox/xint/boost/xint/xint.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint.hpp (original)
+++ sandbox/xint/boost/xint/xint.hpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -18,10 +18,8 @@
 #ifndef BOOST_INCLUDED_XINT_HPP
 #define BOOST_INCLUDED_XINT_HPP
 
+// Everything is presently included by including integer.hpp. This file is
+// provided for future expansion.
 #include "integer.hpp"
-#include "nothrow_integer.hpp"
-#include "fixed_integer.hpp"
-#include "random.hpp"
-#include "exceptions.hpp"
 
 #endif // BOOST_INCLUDED_XINT_HPP

Modified: sandbox/xint/dev-ms/XInt.vcproj
==============================================================================
--- sandbox/xint/dev-ms/XInt.vcproj (original)
+++ sandbox/xint/dev-ms/XInt.vcproj 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -174,70 +174,6 @@
                         Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
                         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
- <File
- RelativePath="..\boost\xint\detail\addsubtract.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\andorxor.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\bitfunctions.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\compare.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\data_t.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\divide.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\gcd.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\modular.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\monty.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\multiply.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\powers.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\prime.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\random.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\roots.cpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\shift.cpp"
- >
- </File>
                         <Filter
                                 Name="test"
>
@@ -305,41 +241,117 @@
                         UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
                         <File
- RelativePath="..\boost\xint\detail\bitqueue.hpp"
- >
- </File>
- <File
                                 RelativePath="..\boost\xint\exceptions.hpp"
>
                         </File>
                         <File
- RelativePath="..\boost\xint\fixed_integer.hpp"
- >
- </File>
- <File
                                 RelativePath="..\boost\xint\integer.hpp"
>
                         </File>
                         <File
- RelativePath="..\boost\xint\detail\internals.hpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\detail\monty.hpp"
- >
- </File>
- <File
- RelativePath="..\boost\xint\nothrow_integer.hpp"
- >
- </File>
- <File
                                 RelativePath="..\boost\xint\random.hpp"
>
                         </File>
- <File
- RelativePath="..\boost\xint\xint.hpp"
+ <Filter
+ Name="detail"
>
- </File>
+ <File
+ RelativePath="..\boost\xint\detail\addsubtract.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\andorxor.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\basic_types_and_includes.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\bitfunctions.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\bitqueue.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\compare.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\convert.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\divide.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\gcd.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\internals.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\log2.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\magnitude_manager.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\modular.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\monty.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\multiply.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\options.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\policies.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\powers.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\prime.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\random_by_size.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\randomgen.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\raw_integer.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\roots.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\boost\xint\detail\shift.hpp"
+ >
+ </File>
+ </Filter>
                 </Filter>
                 <Filter
                         Name="Resource Files"

Modified: sandbox/xint/dev/Docs.project
==============================================================================
--- sandbox/xint/dev/Docs.project (original)
+++ sandbox/xint/dev/Docs.project 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -15,7 +15,6 @@
     <File Name="../libs/xint/doc/dox/dependencies.dox"/>
     <File Name="../libs/xint/doc/dox/ex_fibonacci.dox"/>
     <File Name="../libs/xint/doc/dox/exceptions.dox"/>
- <File Name="../libs/xint/doc/dox/fixed_and_variable.dox"/>
     <File Name="../libs/xint/doc/dox/history.dox"/>
     <File Name="../libs/xint/doc/dox/index.dox"/>
     <File Name="../libs/xint/doc/dox/nan.dox"/>
@@ -37,6 +36,8 @@
     <File Name="../libs/xint/doc/dox/testing.dox"/>
     <File Name="../libs/xint/doc/dox/zero.dox"/>
     <File Name="../libs/xint/doc/dox/threadsafe.dox"/>
+ <File Name="../libs/xint/doc/dox/fixedlength.dox"/>
+ <File Name="../../../../xint/libs/xint/doc/dox/r_whynotx.dox"/>
   </VirtualDirectory>
   <VirtualDirectory Name="Project">
     <File Name="../libs/xint/doc/dox/Doxyfile"/>

Modified: sandbox/xint/dev/Example-Exceptions.project
==============================================================================
--- sandbox/xint/dev/Example-Exceptions.project (original)
+++ sandbox/xint/dev/Example-Exceptions.project 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -3,15 +3,6 @@
   <Description/>
   <Dependencies/>
   <Settings Type="Executable">
- <GlobalSettings>
- <Compiler Options="">
- <IncludePath Value="."/>
- </Compiler>
- <Linker Options="">
- <LibraryPath Value="."/>
- </Linker>
- <ResourceCompiler Options=""/>
- </GlobalSettings>
     <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
       <Compiler Options="-g" Required="yes" PreCompiledHeader="">
         <IncludePath Value="."/>
@@ -68,6 +59,16 @@
         <CustomPreBuild/>
       </AdditionalRules>
     </Configuration>
+ <GlobalSettings>
+ <Compiler Options="">
+ <IncludePath Value="."/>
+ <IncludePath Value="/home/chad/projects/xint"/>
+ </Compiler>
+ <Linker Options="">
+ <LibraryPath Value="."/>
+ </Linker>
+ <ResourceCompiler Options=""/>
+ </GlobalSettings>
   </Settings>
   <VirtualDirectory Name="src">
     <File Name="../libs/xint/example/exceptions.cpp"/>

Modified: sandbox/xint/dev/Example-Fibonacci.project
==============================================================================
--- sandbox/xint/dev/Example-Fibonacci.project (original)
+++ sandbox/xint/dev/Example-Fibonacci.project 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -3,15 +3,6 @@
   <Description/>
   <Dependencies/>
   <Settings Type="Executable">
- <GlobalSettings>
- <Compiler Options="">
- <IncludePath Value="."/>
- </Compiler>
- <Linker Options="">
- <LibraryPath Value="."/>
- </Linker>
- <ResourceCompiler Options=""/>
- </GlobalSettings>
     <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
       <Compiler Options="-g" Required="yes" PreCompiledHeader="">
         <IncludePath Value="."/>
@@ -68,6 +59,16 @@
         <CustomPreBuild/>
       </AdditionalRules>
     </Configuration>
+ <GlobalSettings>
+ <Compiler Options="">
+ <IncludePath Value="."/>
+ <IncludePath Value="/home/chad/projects/xint"/>
+ </Compiler>
+ <Linker Options="">
+ <LibraryPath Value="."/>
+ </Linker>
+ <ResourceCompiler Options=""/>
+ </GlobalSettings>
   </Settings>
   <VirtualDirectory Name="src">
     <File Name="../libs/xint/example/fibonacci.cpp"/>

Modified: sandbox/xint/dev/Example-GenPrime.project
==============================================================================
--- sandbox/xint/dev/Example-GenPrime.project (original)
+++ sandbox/xint/dev/Example-GenPrime.project 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -3,15 +3,6 @@
   <Description/>
   <Dependencies/>
   <Settings Type="Executable">
- <GlobalSettings>
- <Compiler Options="">
- <IncludePath Value="."/>
- </Compiler>
- <Linker Options="">
- <LibraryPath Value="."/>
- </Linker>
- <ResourceCompiler Options=""/>
- </GlobalSettings>
     <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
       <Compiler Options="-g" Required="yes" PreCompiledHeader="">
         <IncludePath Value="."/>
@@ -68,6 +59,16 @@
         <CustomPreBuild/>
       </AdditionalRules>
     </Configuration>
+ <GlobalSettings>
+ <Compiler Options="">
+ <IncludePath Value="."/>
+ <IncludePath Value="/home/chad/projects/xint"/>
+ </Compiler>
+ <Linker Options="">
+ <LibraryPath Value="."/>
+ </Linker>
+ <ResourceCompiler Options=""/>
+ </GlobalSettings>
   </Settings>
   <VirtualDirectory Name="src">
     <File Name="../libs/xint/example/genprime.cpp"/>

Modified: sandbox/xint/dev/XInt.project
==============================================================================
--- sandbox/xint/dev/XInt.project (original)
+++ sandbox/xint/dev/XInt.project 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -7,51 +7,6 @@
   </Plugins>
   <Description/>
   <Dependencies/>
- <VirtualDirectory Name="xint">
- <File Name="../boost/xint/exceptions.hpp"/>
- <File Name="../boost/xint/fixed_integer.hpp"/>
- <File Name="../boost/xint/integer.hpp"/>
- <File Name="../boost/xint/nothrow_integer.hpp"/>
- <File Name="../boost/xint/random.hpp"/>
- <File Name="../boost/xint/xint.hpp"/>
- <VirtualDirectory Name="detail">
- <File Name="../boost/xint/detail/addsubtract.cpp"/>
- <File Name="../boost/xint/detail/andorxor.cpp"/>
- <File Name="../boost/xint/detail/bitfunctions.cpp"/>
- <File Name="../boost/xint/detail/bitqueue.hpp"/>
- <File Name="../boost/xint/detail/compare.cpp"/>
- <File Name="../boost/xint/detail/convert.cpp"/>
- <File Name="../boost/xint/detail/data_t.cpp"/>
- <File Name="../boost/xint/detail/divide.cpp"/>
- <File Name="../boost/xint/detail/gcd.cpp"/>
- <File Name="../boost/xint/detail/internals.hpp"/>
- <File Name="../boost/xint/detail/modular.cpp"/>
- <File Name="../boost/xint/detail/monty.cpp"/>
- <File Name="../boost/xint/detail/monty.hpp"/>
- <File Name="../boost/xint/detail/multiply.cpp"/>
- <File Name="../boost/xint/detail/powers.cpp"/>
- <File Name="../boost/xint/detail/prime.cpp"/>
- <File Name="../boost/xint/detail/random.cpp"/>
- <File Name="../boost/xint/detail/roots.cpp"/>
- <File Name="../boost/xint/detail/shift.cpp"/>
- </VirtualDirectory>
- </VirtualDirectory>
- <VirtualDirectory Name="test">
- <File Name="../libs/xint/test/test_add.cpp"/>
- <File Name="../libs/xint/test/test_bit_manipulations.cpp"/>
- <File Name="../libs/xint/test/test_compare.cpp"/>
- <File Name="../libs/xint/test/test_convert.cpp"/>
- <File Name="../libs/xint/test/test_divide.cpp"/>
- <File Name="../libs/xint/test/test_fixed.cpp"/>
- <File Name="../libs/xint/test/test_main.cpp"/>
- <File Name="../libs/xint/test/test_misc.cpp"/>
- <File Name="../libs/xint/test/test_modular.cpp"/>
- <File Name="../libs/xint/test/test_monty.cpp"/>
- <File Name="../libs/xint/test/test_multiply.cpp"/>
- <File Name="../libs/xint/test/test_nothrow.cpp"/>
- <File Name="../libs/xint/test/test_powers.cpp"/>
- <File Name="../libs/xint/test/test_streams.cpp"/>
- </VirtualDirectory>
   <Dependencies Name="Debug"/>
   <Dependencies Name="Debug, Header Only"/>
   <Dependencies Name="Release"/>
@@ -59,10 +14,59 @@
   <VirtualDirectory Name="other">
     <File Name="../.gitignore"/>
     <File Name="../README.TXT"/>
+ <File Name="../libs/xint/test/Jamfile"/>
+ </VirtualDirectory>
+ <VirtualDirectory Name="include">
+ <VirtualDirectory Name="detail">
+ <File Name="../boost/xint/detail/basic_types_and_includes.hpp"/>
+ <File Name="../boost/xint/detail/internals.hpp"/>
+ <File Name="../boost/xint/detail/magnitude_manager.hpp"/>
+ <File Name="../boost/xint/detail/policies.hpp"/>
+ <File Name="../boost/xint/detail/addsubtract.hpp"/>
+ <File Name="../boost/xint/detail/compare.hpp"/>
+ <File Name="../boost/xint/detail/raw_integer.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/bitqueue.hpp"/>
+ <File Name="../boost/xint/detail/random_by_size.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/bitfunctions.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/multiply.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/divide.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/convert.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/shift.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/prime.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/powers.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/andorxor.hpp"/>
+ <File Name="../boost/xint/detail/log2.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/gcd.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/modular.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/roots.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/monty.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/randomgen.hpp"/>
+ <File Name="../../../../xint/boost/xint/detail/options.hpp"/>
+ </VirtualDirectory>
+ <File Name="../../../../xint/boost/xint/random.hpp"/>
+ <File Name="../../../../xint/boost/xint/exceptions.hpp"/>
+ <File Name="../../../../xint/boost/xint/integer.hpp"/>
+ <File Name="../../../../xint/boost/xint/xint.hpp"/>
+ </VirtualDirectory>
+ <VirtualDirectory Name="test">
+ <File Name="../libs/xint/test/test_main.cpp"/>
+ <File Name="../libs/xint/test/test_add.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_multiply.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_convert.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_bit_manipulations.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_compare.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_divide.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_fixed.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_streams.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_misc.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_modular.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_powers.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_monty.cpp"/>
+ <File Name="../../../../xint/libs/xint/test/test_nothrow.cpp"/>
   </VirtualDirectory>
   <Settings Type="Executable">
     <Configuration Name="Debug" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
- <Compiler Options="-g;-Wall" Required="yes" PreCompiledHeader="">
+ <Compiler Options="-g;-Wall" Required="yes" PreCompiledHeader="/home/chad/Private/projects/xint/boost/xint/integer.hpp">
         <IncludePath Value="."/>
         <Preprocessor Value="BOOST_XINT_SINGLE_TEST_PROGRAM"/>
         <Preprocessor Value="BOOST_TEST_DYN_LINK"/>
@@ -93,7 +97,7 @@
       </AdditionalRules>
     </Configuration>
     <Configuration Name="Debug, Header Only" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
- <Compiler Options="-g;-Wall" Required="yes" PreCompiledHeader="">
+ <Compiler Options="-g;-Wall" Required="yes" PreCompiledHeader="/home/chad/Private/projects/xint/boost/xint/integer.hpp">
         <IncludePath Value="."/>
         <Preprocessor Value="BOOST_XINT_SINGLE_TEST_PROGRAM"/>
         <Preprocessor Value="BOOST_TEST_DYN_LINK"/>
@@ -123,7 +127,7 @@
       </AdditionalRules>
     </Configuration>
     <Configuration Name="Release" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
- <Compiler Options="-O2;-Wall" Required="yes" PreCompiledHeader="">
+ <Compiler Options="-O2;-Wall" Required="yes" PreCompiledHeader="/home/chad/Private/projects/xint/boost/xint/integer.hpp">
         <IncludePath Value="."/>
         <Preprocessor Value="BOOST_XINT_SINGLE_TEST_PROGRAM"/>
         <Preprocessor Value="BOOST_TEST_DYN_LINK"/>
@@ -154,7 +158,7 @@
       </AdditionalRules>
     </Configuration>
     <Configuration Name="Release, Header Only" CompilerType="gnu g++" DebuggerType="GNU gdb debugger" Type="Executable" BuildCmpWithGlobalSettings="append" BuildLnkWithGlobalSettings="append" BuildResWithGlobalSettings="append">
- <Compiler Options="-O2;-Wall" Required="yes" PreCompiledHeader="">
+ <Compiler Options="-O2;-Wall" Required="yes" PreCompiledHeader="/home/chad/Private/projects/xint/boost/xint/integer.hpp">
         <IncludePath Value="."/>
         <Preprocessor Value="BOOST_XINT_SINGLE_TEST_PROGRAM"/>
         <Preprocessor Value="BOOST_TEST_DYN_LINK"/>
@@ -186,6 +190,7 @@
     <GlobalSettings>
       <Compiler Options="">
         <IncludePath Value="."/>
+ <IncludePath Value="/home/chad/projects/xint"/>
       </Compiler>
       <Linker Options="">
         <LibraryPath Value="."/>

Modified: sandbox/xint/libs/xint/doc/acknowledgements.html
==============================================================================
--- sandbox/xint/libs/xint/doc/acknowledgements.html (original)
+++ sandbox/xint/libs/xint/doc/acknowledgements.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -52,13 +52,13 @@
 <li>Robert Stewart, for a thorough review of the headers.</li>
 <li>John Bytheway, for an idea for simplifying the template documentation greatly.</li>
 <li>David Abrahams, for contributing a thought on how to use Boost.Parameter effectively with multiple <code>bool</code> parameters.</li>
+<li>Christopher Jefferson, for sharing the best way to support <code>BOOST_NO_EXCEPTIONS</code>.</li>
 </ul>
 <p>And the other Boost development list members who joined the discussion:</p>
 <ul>
 <li>Anders Dalvander</li>
 <li>Arash Partow</li>
 <li>Frank Mori Hess</li>
-<li>Christopher Jefferson</li>
 <li>Daniel (Herring?)</li>
 <li>"OvermindDL1"</li>
 <li>Marius Stoica</li>
@@ -66,10 +66,11 @@
 <li>Mathias Gaunard</li>
 <li>Giovanni Piero Deretta</li>
 <li>Daniel F.</li>
+<li>Lucanus J Simonson</li>
 </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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/acknowledgements_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/acknowledgements_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/acknowledgements_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/addsubtract_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/addsubtract_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/addsubtract.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>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>detail/addsubtract.cpp File Reference</h1>
-<p>Contains the definitions of the addition and subtraction functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions of the addition and subtraction functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="addsubtract_8cpp_source.html">addsubtract.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/addsubtract_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/addsubtract_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,250 +0,0 @@
-<!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: detail/addsubtract.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>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>detail/addsubtract.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<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 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keywordtype">void</span> sub_increment(data_t&amp; n, <span class="keywordtype">bool</span> absolute_value = <span class="keyword">false</span>);
-<a name="l00032"></a>00032 <span class="keywordtype">void</span> sub_decrement(data_t&amp; n, <span class="keywordtype">bool</span> absolute_value = <span class="keyword">false</span>);
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> sub_add(data_t&amp; n, <span class="keyword">const</span> data_t n2) {
-<a name="l00035"></a>00035 n.beginmod((std::max)(n.length, n2.length) + 1, <span class="keyword">true</span>);
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 digit_t *ndig = n.digits(), *t = ndig, *te = t + n.max_length();
-<a name="l00038"></a>00038 <span class="keyword">const</span> digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length,
-<a name="l00039"></a>00039 n.max_length());
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 digit_t carry = 0;
-<a name="l00042"></a>00042 <span class="keywordflow">while</span> (p != pe) {
-<a name="l00043"></a>00043 doubledigit_t tmp = doubledigit_t(*t) + *p++ + carry;
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (tmp &gt;= digit_overflowbit) {
-<a name="l00045"></a>00045 carry = 1;
-<a name="l00046"></a>00046 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp - digit_overflowbit);
-<a name="l00047"></a>00047 } <span class="keywordflow">else</span> {
-<a name="l00048"></a>00048 carry = 0;
-<a name="l00049"></a>00049 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp);
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordflow">if</span> (carry) {
-<a name="l00054"></a>00054 <span class="keywordflow">while</span> (t != te) {
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (*t == digit_mask) *t++ = 0;
-<a name="l00056"></a>00056 <span class="keywordflow">else</span> { *t++ += 1; <span class="keywordflow">break</span>; }
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 n.length = (std::max)(n.length, <span class="keywordtype">size_t</span>(t - ndig));
-<a name="l00061"></a>00061 n.endmod();
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> sub_subtract(data_t&amp; n, <span class="keyword">const</span> data_t n2) {
-<a name="l00065"></a>00065 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a> = (<a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(n, n2, <span class="keyword">true</span>) &lt; 0);
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 n.beginmod((std::max)(n.length, n2.length), <span class="keyword">true</span>);
-<a name="l00068"></a>00068 digit_t *ndig = n.digits(), *t = ndig, *te = t + n.length;
-<a name="l00069"></a>00069 <span class="keyword">const</span> digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length, n.length);
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="comment">// Now subtract the digits, starting at the least-significant one.</span>
-<a name="l00072"></a>00072 digit_t borrow = 0;
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (swap) {
-<a name="l00074"></a>00074 <span class="comment">// abs(n2) is greater than abs(n). Requires slightly different handling.</span>
-<a name="l00075"></a>00075 <span class="keywordflow">while</span> (p != pe) {
-<a name="l00076"></a>00076 doubledigit_t tmp = digit_overflowbit + *p++ - *t - borrow;
-<a name="l00077"></a>00077 <span class="keywordflow">if</span> (tmp &lt; digit_overflowbit) {
-<a name="l00078"></a>00078 borrow = 1;
-<a name="l00079"></a>00079 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp);
-<a name="l00080"></a>00080 } <span class="keywordflow">else</span> {
-<a name="l00081"></a>00081 borrow = 0;
-<a name="l00082"></a>00082 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp - digit_overflowbit);
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 n.length = size_t(t - ndig);
-<a name="l00087"></a>00087 n.negative = !n.negative;
-<a name="l00088"></a>00088 } <span class="keywordflow">else</span> {
-<a name="l00089"></a>00089 <span class="keywordflow">while</span> (p != pe) {
-<a name="l00090"></a>00090 doubledigit_t tmp = digit_overflowbit + *t - *p++ - borrow;
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (tmp &lt; digit_overflowbit) {
-<a name="l00092"></a>00092 borrow = 1;
-<a name="l00093"></a>00093 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp);
-<a name="l00094"></a>00094 } <span class="keywordflow">else</span> {
-<a name="l00095"></a>00095 borrow = 0;
-<a name="l00096"></a>00096 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp - digit_overflowbit);
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (borrow) {
-<a name="l00101"></a>00101 <span class="keywordflow">while</span> (t != te) {
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (*t == 0) *t++ = digit_mask;
-<a name="l00103"></a>00103 <span class="keywordflow">else</span> { *t++ -= 1; borrow = 0; <span class="keywordflow">break</span>; }
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 n.length = (std::max)(n.length, <span class="keywordtype">size_t</span>(t - ndig));
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 assert(borrow == 0);
-<a name="l00110"></a>00110 n.endmod();
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> sub_increment(data_t&amp; n, <span class="keywordtype">bool</span> absolute_value) {
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (n.is_zero()) {
-<a name="l00115"></a>00115 n.set(1);
-<a name="l00116"></a>00116 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!absolute_value &amp;&amp; n.negative) {
-<a name="l00117"></a>00117 sub_decrement(n, <span class="keyword">true</span>);
-<a name="l00118"></a>00118 } <span class="keywordflow">else</span> {
-<a name="l00119"></a>00119 n.beginmod(n.length + 1, <span class="keyword">true</span>);
-<a name="l00120"></a>00120 digit_t *p = n.digits(), *pe = p + n.length;
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keywordflow">while</span> (p &lt; pe) {
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (*p == digit_mask) *p++ = 0;
-<a name="l00124"></a>00124 <span class="keywordflow">else</span> { *p++ += 1; <span class="keywordflow">break</span>; }
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 n.endmod();
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> sub_decrement(data_t&amp; n, <span class="keywordtype">bool</span> absolute_value) {
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (n.is_zero()) {
-<a name="l00132"></a>00132 n.set(-1);
-<a name="l00133"></a>00133 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!absolute_value &amp;&amp; n.negative) {
-<a name="l00134"></a>00134 sub_increment(n, <span class="keyword">true</span>);
-<a name="l00135"></a>00135 } <span class="keywordflow">else</span> {
-<a name="l00136"></a>00136 n.beginmod(n.length);
-<a name="l00137"></a>00137 digit_t *p = n.digits(), *pe = p + n.length;
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="keywordflow">while</span> (p &lt; pe) {
-<a name="l00140"></a>00140 <span class="keywordflow">if</span> (*p == 0) *p++ = digit_mask;
-<a name="l00141"></a>00141 <span class="keywordflow">else</span> { *p++ -= 1; <span class="keywordflow">break</span>; }
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 n.endmod();
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator++() {
-<a name="l00148"></a>00148 sub_increment(*<span class="keyword">this</span>);
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator--() {
-<a name="l00153"></a>00153 sub_decrement(*<span class="keyword">this</span>);
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t data_t::operator++(<span class="keywordtype">int</span>) {
-<a name="l00158"></a>00158 data_t r(*<span class="keyword">this</span>);
-<a name="l00159"></a>00159 sub_increment(*<span class="keyword">this</span>);
-<a name="l00160"></a>00160 <span class="keywordflow">return</span> r;
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t data_t::operator--(<span class="keywordtype">int</span>) {
-<a name="l00164"></a>00164 data_t r(*<span class="keyword">this</span>);
-<a name="l00165"></a>00165 sub_decrement(*<span class="keyword">this</span>);
-<a name="l00166"></a>00166 <span class="keywordflow">return</span> r;
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">data_t::operator-</a>()<span class="keyword"> const </span>{
-<a name="l00170"></a>00170 data_t r(negate());
-<a name="l00171"></a>00171 r.beginmod();
-<a name="l00172"></a>00172 r.endmod(<span class="keyword">true</span>);
-<a name="l00173"></a>00173 <span class="keywordflow">return</span> r;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator+=(<span class="keyword">const</span> data_t n) {
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (!n.is_zero()) {
-<a name="l00178"></a>00178 beginmod();
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 <span class="keywordflow">if</span> (is_zero()) {
-<a name="l00181"></a>00181 duplicate_data(n);
-<a name="l00182"></a>00182 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (negative != n.negative) {
-<a name="l00183"></a>00183 sub_subtract(*<span class="keyword">this</span>, n.negate());
-<a name="l00184"></a>00184 } <span class="keywordflow">else</span> {
-<a name="l00185"></a>00185 sub_add(*<span class="keyword">this</span>, n);
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 endmod();
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator-=(<span class="keyword">const</span> data_t n) {
-<a name="l00194"></a>00194 <span class="keywordflow">if</span> (!n.is_zero()) {
-<a name="l00195"></a>00195 beginmod();
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> (is_zero()) {
-<a name="l00198"></a>00198 duplicate_data(n.negate());
-<a name="l00199"></a>00199 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (negative != n.negative) {
-<a name="l00200"></a>00200 sub_add(*<span class="keyword">this</span>, n.negate());
-<a name="l00201"></a>00201 } <span class="keywordflow">else</span> {
-<a name="l00202"></a>00202 sub_subtract(*<span class="keyword">this</span>, n);
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 endmod();
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00211"></a>00211 data_t r(n1);
-<a name="l00212"></a>00212 r+=n2;
-<a name="l00213"></a>00213 <span class="keywordflow">return</span> r;
-<a name="l00214"></a>00214 }
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00217"></a>00217 data_t r(n1);
-<a name="l00218"></a>00218 r-=n2;
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> r;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222 } <span class="comment">// namespace detail</span>
-<a name="l00223"></a>00223 } <span class="comment">// namespace xint</span>
-<a name="l00224"></a>00224 } <span class="comment">// namespace boost</span>
-<a name="l00226"></a>00226 <span class="comment"></span>
-<a name="l00227"></a>00227 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/addsubtract_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/addsubtract_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/addsubtract_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/addsubtract_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/addsubtract.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/addsubtract.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/addsubtract.cpp File Reference</h1>
+<h1>detail/addsubtract.hpp File Reference</h1>
 <p>Contains the definitions of the addition and subtraction 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the definitions of the addition and subtraction functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="addsubtract_8cpp_source.html">addsubtract.cpp</a>.</p>
+<p>Definition in file <a class="el" href="addsubtract_8hpp_source.html">addsubtract.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/addsubtract_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/addsubtract_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,249 @@
+<!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: detail/addsubtract.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>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>detail/addsubtract.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_ADDSUBTRACT_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_ADDSUBTRACT_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 <span class="keywordtype">void</span> sub_increment(BOOST_XINT_RAWINT&amp; n, <span class="keywordtype">bool</span> absolute_value = <span class="keyword">false</span>);
+<a name="l00030"></a>00030 BOOST_XINT_RAWINT_TPL
+<a name="l00031"></a>00031 <span class="keywordtype">void</span> sub_decrement(BOOST_XINT_RAWINT&amp; n, <span class="keywordtype">bool</span> absolute_value = <span class="keyword">false</span>);
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 BOOST_XINT_RAWINT_TPL
+<a name="l00034"></a>00034 <span class="keywordtype">void</span> sub_add(BOOST_XINT_RAWINT&amp; n, <span class="keyword">const</span> BOOST_XINT_RAWINT n2) {
+<a name="l00035"></a>00035 digit_t *ndig = n.digits((std::max)(n.length, n2.length) + 1,
+<a name="l00036"></a>00036 realloc::extend), *t = ndig, *te = t + n.length;
+<a name="l00037"></a>00037 <span class="keyword">const</span> digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length, n.length);
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 digit_t carry = 0;
+<a name="l00040"></a>00040 <span class="keywordflow">while</span> (p != pe) {
+<a name="l00041"></a>00041 doubledigit_t tmp = doubledigit_t(*t) + *p++ + carry;
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (tmp &gt;= digit_overflowbit) {
+<a name="l00043"></a>00043 carry = 1;
+<a name="l00044"></a>00044 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp - digit_overflowbit);
+<a name="l00045"></a>00045 } <span class="keywordflow">else</span> {
+<a name="l00046"></a>00046 carry = 0;
+<a name="l00047"></a>00047 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp);
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (carry) {
+<a name="l00052"></a>00052 <span class="keywordflow">while</span> (t != te) {
+<a name="l00053"></a>00053 <span class="keywordflow">if</span> (*t == digit_mask) *t++ = 0;
+<a name="l00054"></a>00054 <span class="keywordflow">else</span> { *t++ += 1; <span class="keywordflow">break</span>; }
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 n.length = (std::max)(n.length, <span class="keywordtype">size_t</span>(t - ndig));
+<a name="l00059"></a>00059 n.trim();
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 BOOST_XINT_RAWINT_TPL
+<a name="l00063"></a>00063 <span class="keywordtype">void</span> sub_subtract(BOOST_XINT_RAWINT&amp; n, <span class="keyword">const</span> BOOST_XINT_RAWINT n2) {
+<a name="l00064"></a>00064 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a> = (<a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(n, n2, <span class="keyword">true</span>) &lt; 0);
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 digit_t *ndig = n.digits((std::max)(n.length, n2.length), realloc::extend),
+<a name="l00067"></a>00067 *t = ndig, *te = t + n.length;
+<a name="l00068"></a>00068 <span class="keyword">const</span> digit_t *p = n2.digits(), *pe = p + (std::min)(n2.length, n.length);
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="comment">// Now subtract the digits, starting at the least-significant one.</span>
+<a name="l00071"></a>00071 digit_t borrow = 0;
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (swap) {
+<a name="l00073"></a>00073 <span class="comment">// abs(n2) is greater than abs(n). Requires slightly different handling.</span>
+<a name="l00074"></a>00074 <span class="keywordflow">while</span> (p != pe) {
+<a name="l00075"></a>00075 doubledigit_t tmp = digit_overflowbit + *p++ - *t - borrow;
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (tmp &lt; digit_overflowbit) {
+<a name="l00077"></a>00077 borrow = 1;
+<a name="l00078"></a>00078 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp);
+<a name="l00079"></a>00079 } <span class="keywordflow">else</span> {
+<a name="l00080"></a>00080 borrow = 0;
+<a name="l00081"></a>00081 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp - digit_overflowbit);
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 n.length = size_t(t - ndig);
+<a name="l00086"></a>00086 n.negative = !n.negative;
+<a name="l00087"></a>00087 } <span class="keywordflow">else</span> {
+<a name="l00088"></a>00088 <span class="keywordflow">while</span> (p != pe) {
+<a name="l00089"></a>00089 doubledigit_t tmp = digit_overflowbit + *t - *p++ - borrow;
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (tmp &lt; digit_overflowbit) {
+<a name="l00091"></a>00091 borrow = 1;
+<a name="l00092"></a>00092 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp);
+<a name="l00093"></a>00093 } <span class="keywordflow">else</span> {
+<a name="l00094"></a>00094 borrow = 0;
+<a name="l00095"></a>00095 *t++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp - digit_overflowbit);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="keywordflow">if</span> (borrow) {
+<a name="l00100"></a>00100 <span class="keywordflow">while</span> (t != te) {
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (*t == 0) *t++ = digit_mask;
+<a name="l00102"></a>00102 <span class="keywordflow">else</span> { *t++ -= 1; borrow = 0; <span class="keywordflow">break</span>; }
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105 n.length = (std::max)(n.length, <span class="keywordtype">size_t</span>(t - ndig));
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 assert(borrow == 0);
+<a name="l00109"></a>00109 n.trim();
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 BOOST_XINT_RAWINT_TPL
+<a name="l00113"></a>00113 <span class="keywordtype">void</span> sub_increment(BOOST_XINT_RAWINT&amp; n, <span class="keywordtype">bool</span> absolute_value) {
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (n.is_zero()) {
+<a name="l00115"></a>00115 n.set(1);
+<a name="l00116"></a>00116 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!absolute_value &amp;&amp; n.negative) {
+<a name="l00117"></a>00117 sub_decrement(n, <span class="keyword">true</span>);
+<a name="l00118"></a>00118 } <span class="keywordflow">else</span> {
+<a name="l00119"></a>00119 <span class="keywordtype">size_t</span> overflow = (n.digits()[n.length - 1] == digit_mask ? 1 : 0);
+<a name="l00120"></a>00120 digit_t *d = n.digits(n.length + overflow, realloc::extend), *p = d, *pe
+<a name="l00121"></a>00121 = p + n.length;
+<a name="l00122"></a>00122 <span class="keywordflow">while</span> (p &lt; pe) {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (*p == digit_mask) *p++ = 0;
+<a name="l00124"></a>00124 <span class="keywordflow">else</span> { *p++ += 1; <span class="keywordflow">break</span>; }
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126 n.trim();
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 BOOST_XINT_RAWINT_TPL
+<a name="l00131"></a>00131 <span class="keywordtype">void</span> sub_decrement(BOOST_XINT_RAWINT&amp; n, <span class="keywordtype">bool</span> absolute_value) {
+<a name="l00132"></a>00132 <span class="keywordflow">if</span> (n.is_zero()) {
+<a name="l00133"></a>00133 n.set(-1);
+<a name="l00134"></a>00134 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!absolute_value &amp;&amp; n.negative) {
+<a name="l00135"></a>00135 sub_increment(n, <span class="keyword">true</span>);
+<a name="l00136"></a>00136 } <span class="keywordflow">else</span> {
+<a name="l00137"></a>00137 digit_t *p = n.digits(0), *pe = p + n.length;
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keywordflow">while</span> (p &lt; pe) {
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (*p == 0) *p++ = digit_mask;
+<a name="l00141"></a>00141 <span class="keywordflow">else</span> { *p++ -= 1; <span class="keywordflow">break</span>; }
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 n.trim();
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 BOOST_XINT_RAWINT_TPL
+<a name="l00148"></a>00148 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator++() {
+<a name="l00149"></a>00149 sub_increment(*<span class="keyword">this</span>);
+<a name="l00150"></a>00150 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 BOOST_XINT_RAWINT_TPL
+<a name="l00154"></a>00154 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator--() {
+<a name="l00155"></a>00155 sub_decrement(*<span class="keyword">this</span>);
+<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>00159 BOOST_XINT_RAWINT_TPL
+<a name="l00160"></a>00160 BOOST_XINT_RAWINT BOOST_XINT_RAWINT::operator++(<span class="keywordtype">int</span>) {
+<a name="l00161"></a>00161 BOOST_XINT_RAWINT r(*<span class="keyword">this</span>);
+<a name="l00162"></a>00162 sub_increment(*<span class="keyword">this</span>);
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> r;
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 BOOST_XINT_RAWINT_TPL
+<a name="l00167"></a>00167 BOOST_XINT_RAWINT BOOST_XINT_RAWINT::operator--(<span class="keywordtype">int</span>) {
+<a name="l00168"></a>00168 BOOST_XINT_RAWINT r(*<span class="keyword">this</span>);
+<a name="l00169"></a>00169 sub_decrement(*<span class="keyword">this</span>);
+<a name="l00170"></a>00170 <span class="keywordflow">return</span> r;
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 BOOST_XINT_RAWINT_TPL
+<a name="l00174"></a>00174 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator+=(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!n.is_zero()) {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (is_zero()) {
+<a name="l00177"></a>00177 *<span class="keyword">this</span> = n;
+<a name="l00178"></a>00178 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (negative != n.negative) {
+<a name="l00179"></a>00179 sub_subtract(*<span class="keyword">this</span>, n.negate());
+<a name="l00180"></a>00180 } <span class="keywordflow">else</span> {
+<a name="l00181"></a>00181 sub_add(*<span class="keyword">this</span>, n);
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 BOOST_XINT_RAWINT_TPL
+<a name="l00188"></a>00188 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator-=(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (!n.is_zero()) {
+<a name="l00190"></a>00190 <span class="keywordflow">if</span> (is_zero()) {
+<a name="l00191"></a>00191 *<span class="keyword">this</span> = n.negate();
+<a name="l00192"></a>00192 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (negative != n.negative) {
+<a name="l00193"></a>00193 sub_add(*<span class="keyword">this</span>, n.negate());
+<a name="l00194"></a>00194 } <span class="keywordflow">else</span> {
+<a name="l00195"></a>00195 sub_subtract(*<span class="keyword">this</span>, n);
+<a name="l00196"></a>00196 }
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 BOOST_XINT_RAWINT_TPL
+<a name="l00202"></a>00202 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915" title="Calculate the sum of two integers.">operator+</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00203"></a>00203 n2)
+<a name="l00204"></a>00204 {
+<a name="l00205"></a>00205 BOOST_XINT_RAWINT r(n1);
+<a name="l00206"></a>00206 r+=n2;
+<a name="l00207"></a>00207 <span class="keywordflow">return</span> r;
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 BOOST_XINT_RAWINT_TPL
+<a name="l00211"></a>00211 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27" title="Calculate the difference between two integers.">operator-</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00212"></a>00212 n2)
+<a name="l00213"></a>00213 {
+<a name="l00214"></a>00214 BOOST_XINT_RAWINT r(n1);
+<a name="l00215"></a>00215 r-=n2;
+<a name="l00216"></a>00216 <span class="keywordflow">return</span> r;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="comment">// note: once the test system is up and running, rewrite add/subtract code to write to a separate raw_integer &amp; return it, for greater efficiency.</span>
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 } <span class="comment">// namespace detail</span>
+<a name="l00222"></a>00222 } <span class="comment">// namespace xint</span>
+<a name="l00223"></a>00223 } <span class="comment">// namespace boost</span>
+<a name="l00225"></a>00225 <span class="comment"></span>
+<a name="l00226"></a>00226 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_ADDSUBTRACT_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/andorxor_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/andorxor_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/andorxor.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>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>detail/andorxor.cpp File Reference</h1>
-<p>Contains the functions for ANDing, ORing, and XORing.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the functions for ANDing, ORing, and XORing. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="andorxor_8cpp_source.html">andorxor.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/andorxor_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/andorxor_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,124 +0,0 @@
-<!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: detail/andorxor.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>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>detail/andorxor.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<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 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator&amp;=(<span class="keyword">const</span> data_t n) {
-<a name="l00032"></a>00032 <span class="keywordtype">size_t</span> len = (std::min)(length, n.length);
-<a name="l00033"></a>00033 beginmod(len);
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + len;
-<a name="l00036"></a>00036 digit_t *t = digits();
-<a name="l00037"></a>00037 <span class="keywordflow">while</span> (ns != nse) *t++ &amp;= *ns++;
-<a name="l00038"></a>00038 length = len;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 endmod();
-<a name="l00041"></a>00041 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator|=(<span class="keyword">const</span> data_t n) {
-<a name="l00045"></a>00045 <span class="keywordtype">size_t</span> len = (std::max)(length, n.length);
-<a name="l00046"></a>00046 beginmod(len);
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keywordflow">if</span> (length &gt; n.length) {
-<a name="l00049"></a>00049 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + n.length;
-<a name="l00050"></a>00050 digit_t *t = digits();
-<a name="l00051"></a>00051 <span class="keywordflow">while</span> (ns != nse) *t++ |= *ns++;
-<a name="l00052"></a>00052 } <span class="keywordflow">else</span> {
-<a name="l00053"></a>00053 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + len;
-<a name="l00054"></a>00054 digit_t *t = digits(), *te = t + length;
-<a name="l00055"></a>00055 <span class="keywordflow">while</span> (t != te) *t++ |= *ns++;
-<a name="l00056"></a>00056 <span class="keywordflow">while</span> (ns != nse) *t++ = *ns++;
-<a name="l00057"></a>00057 length = len;
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 endmod();
-<a name="l00061"></a>00061 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator^=(<span class="keyword">const</span> data_t n) {
-<a name="l00065"></a>00065 <span class="keywordtype">size_t</span> len = (std::max)(length, n.length);
-<a name="l00066"></a>00066 beginmod(len);
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (length &gt; n.length) {
-<a name="l00069"></a>00069 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + n.length;
-<a name="l00070"></a>00070 digit_t *t = digits();
-<a name="l00071"></a>00071 <span class="keywordflow">while</span> (ns != nse) *t++ ^= *ns++;
-<a name="l00072"></a>00072 } <span class="keywordflow">else</span> {
-<a name="l00073"></a>00073 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + len;
-<a name="l00074"></a>00074 digit_t *t = digits(), *te = t + length;
-<a name="l00075"></a>00075 <span class="keywordflow">while</span> (t != te) *t++ ^= *ns++;
-<a name="l00076"></a>00076 <span class="keywordflow">while</span> (ns != nse) *t++ = *ns++;
-<a name="l00077"></a>00077 length = len;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 endmod();
-<a name="l00081"></a>00081 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">operator&amp;</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> data_t(n1) &amp;= n2;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">operator|</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> data_t(n1) |= n2;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">operator^</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> data_t(n1) ^= n2;
-<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 } <span class="comment">// namespace xint</span>
-<a name="l00098"></a>00098 } <span class="comment">// namespace boost</span>
-<a name="l00100"></a>00100 <span class="comment"></span>
-<a name="l00101"></a>00101 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/andorxor_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/andorxor_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/andorxor_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/andorxor_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/andorxor.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/andorxor.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/andorxor.cpp File Reference</h1>
+<h1>detail/andorxor.hpp File Reference</h1>
 <p>Contains the functions for ANDing, ORing, and XORing.
 <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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the functions for ANDing, ORing, and XORing. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="andorxor_8cpp_source.html">andorxor.cpp</a>.</p>
+<p>Definition in file <a class="el" href="andorxor_8hpp_source.html">andorxor.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/andorxor_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/andorxor_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,124 @@
+<!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: detail/andorxor.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>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>detail/andorxor.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_ANDORXOR_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_ANDORXOR_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator&amp;=(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00030"></a>00030 <span class="keywordtype">size_t</span> len = (std::min)(length, n.length);
+<a name="l00031"></a>00031 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + len;
+<a name="l00032"></a>00032 digit_t *t = digits(len, realloc::extend);
+<a name="l00033"></a>00033 <span class="keywordflow">while</span> (ns != nse) *t++ &amp;= *ns++;
+<a name="l00034"></a>00034 length = len;
+<a name="l00035"></a>00035 trim();
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00037"></a>00037 }
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 BOOST_XINT_RAWINT_TPL
+<a name="l00040"></a>00040 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator|=(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00041"></a>00041 <span class="keywordtype">size_t</span> len = (std::max)(length, n.length);
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (length &gt; n.length) {
+<a name="l00043"></a>00043 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + n.length;
+<a name="l00044"></a>00044 digit_t *t = digits(len, realloc::extend);
+<a name="l00045"></a>00045 <span class="keywordflow">while</span> (ns != nse) *t++ |= *ns++;
+<a name="l00046"></a>00046 } <span class="keywordflow">else</span> {
+<a name="l00047"></a>00047 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + len;
+<a name="l00048"></a>00048 digit_t *t = digits(len, realloc::extend), *te = t + length;
+<a name="l00049"></a>00049 <span class="keywordflow">while</span> (t != te) *t++ |= *ns++;
+<a name="l00050"></a>00050 <span class="keywordflow">while</span> (ns != nse) *t++ = *ns++;
+<a name="l00051"></a>00051 length = len;
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053 trim();
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 BOOST_XINT_RAWINT_TPL
+<a name="l00058"></a>00058 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator^=(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00059"></a>00059 <span class="keywordtype">size_t</span> len = (std::max)(length, n.length);
+<a name="l00060"></a>00060 <span class="keywordflow">if</span> (length &gt; n.length) {
+<a name="l00061"></a>00061 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + n.length;
+<a name="l00062"></a>00062 digit_t *t = digits(len, realloc::extend);
+<a name="l00063"></a>00063 <span class="keywordflow">while</span> (ns != nse) *t++ ^= *ns++;
+<a name="l00064"></a>00064 } <span class="keywordflow">else</span> {
+<a name="l00065"></a>00065 <span class="keyword">const</span> digit_t *ns = n.digits(), *nse = ns + len;
+<a name="l00066"></a>00066 digit_t *t = digits(len, realloc::extend), *te = t + length;
+<a name="l00067"></a>00067 <span class="keywordflow">while</span> (t != te) *t++ ^= *ns++;
+<a name="l00068"></a>00068 <span class="keywordflow">while</span> (ns != nse) *t++ = *ns++;
+<a name="l00069"></a>00069 length = len;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 trim();
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 BOOST_XINT_RAWINT_TPL
+<a name="l00076"></a>00076 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3" title="Combine two integers using a bitwise AND operation.">operator&amp;</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00077"></a>00077 n2)
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> BOOST_XINT_RAWINT(n1) &amp;= n2;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 BOOST_XINT_RAWINT_TPL
+<a name="l00083"></a>00083 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075" title="Combine two integers using a bitwise OR operation.">operator|</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00084"></a>00084 n2)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> BOOST_XINT_RAWINT(n1) |= n2;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 BOOST_XINT_RAWINT_TPL
+<a name="l00090"></a>00090 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025" title="Combine two integers using a bitwise XOR operation.">operator^</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00091"></a>00091 n2)
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> BOOST_XINT_RAWINT(n1) ^= n2;
+<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 } <span class="comment">// namespace xint</span>
+<a name="l00098"></a>00098 } <span class="comment">// namespace boost</span>
+<a name="l00100"></a>00100 <span class="comment"></span>
+<a name="l00101"></a>00101 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_ANDORXOR_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/annotated.html
==============================================================================
--- sandbox/xint/libs/xint/doc/annotated.html (original)
+++ sandbox/xint/libs/xint/doc/annotated.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,7 +27,6 @@
 </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_1any__integer.html">boost::xint::any_integer</a></td><td class="indexvalue">A base class for all integer types </td></tr>
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">boost::xint::base_divide_t&lt; T &gt;</a></td><td class="indexvalue">Holds the results from a division-with-remainder call </td></tr>
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></td><td class="indexvalue">A convenience class for general-purpose (insecure) random numbers </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>
@@ -40,16 +39,19 @@
   <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_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="classboost_1_1xint_1_1exceptions_1_1too__big.html">boost::xint::exceptions::too_big</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td class="indexvalue">A fixed-size integer type </td></tr>
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td class="indexvalue">The <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> class template </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td class="indexvalue">The nothrow_integer_t class template </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength.html">boost::xint::options::fixedlength&lt; Bits &gt;</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">boost::xint::options::fixedlength_base</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">boost::xint::options::nothrow&lt; Value &gt;</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">boost::xint::options::nothrow_base</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1secure.html">boost::xint::options::secure&lt; Value &gt;</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">boost::xint::options::secure_base</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe.html">boost::xint::options::threadsafe&lt; Value &gt;</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">boost::xint::options::threadsafe_base</a></td><td class="indexvalue"></td></tr>
   <tr><td class="indexkey"><a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref&lt; T &gt;</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a></td><td class="indexvalue"></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&lt; boost::xint::integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</a></td><td class="indexvalue"></td></tr>
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/basic__types__and__includes_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/internals_8hpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/internals_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/basic__types__and__includes_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/internals.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/basic_types_and_includes.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,15 +25,13 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/internals.hpp File Reference</h1>
-<p>Contains the internal definitions required for all XInt types.
+<h1>detail/basic_types_and_includes.hpp File Reference</h1>
+<p>Contains the most basic types, constants, and includes.
 <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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1any__integer.html">boost::xint::any_integer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A base class for all integer types. More...<br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">boost::xint::base_divide_t&lt; T &gt;</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Holds the results from a division-with-remainder call. More...<br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref&lt; T &gt;</a></td></tr>
@@ -50,20 +48,22 @@
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(type)&nbsp;&nbsp;&nbsp;const type&amp;</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(type)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">BOOST_XINT_FORWARD</a>(type, value)&nbsp;&nbsp;&nbsp;value</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a7621c4fd1f5760b878ca8f5e5e6bb4c2">BOOST_XINT_FROM_HEADER</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a>&nbsp;&nbsp;&nbsp;inline</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(value)&nbsp;&nbsp;&nbsp;value</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(type)&nbsp;&nbsp;&nbsp;<a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>&lt;type&gt;</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="basic__types__and__includes_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(type)&nbsp;&nbsp;&nbsp;const type&amp;</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="basic__types__and__includes_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(type)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="basic__types__and__includes_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">BOOST_XINT_FORWARD</a>(type, value)&nbsp;&nbsp;&nbsp;value</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(value)&nbsp;&nbsp;&nbsp;value</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(type)&nbsp;&nbsp;&nbsp;<a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>&lt;type&gt;</td></tr>
 <tr><td colspan="2"><h2>Typedefs</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef std::vector&lt; unsigned <br class="typebreak"/>
 char &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">boost::xint::binary_t</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The format for the binary representations of integers. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">boost::xint::bitsize_t</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This makes it easier to tell when an item is measured in bits. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef boost::function&lt; bool()&gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint::callback_t</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function takes no parameters and returns a bool. <br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b">boost::xint::nan_text</a> (&quot;#NaN#&quot;)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is the string representation of the Not-a-Number value. <br/></td></tr>
 <tr><td colspan="2"><h2>Variables</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">const size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint::autobase</a> = (std::numeric_limits&lt;size_t&gt;::max)()</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A value that can be used for the 'base' parameter of the string-to-integer constructor functions. <br/></td></tr>
@@ -71,12 +71,12 @@
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An empty callback_t, used as a default parameter for some functions. <br/></td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the internal definitions required for all XInt types. </p>
+<p>Contains the most basic types, constants, and includes. </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>
+<p>Definition in file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 <hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a8177a6a6c68ea042f7e644d8ef7128f9"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_COPY_ASSIGN_REF" ref="a8177a6a6c68ea042f7e644d8ef7128f9" args="(type)" -->
+<a class="anchor" id="a8177a6a6c68ea042f7e644d8ef7128f9"></a><!-- doxytag: member="basic_types_and_includes.hpp::BOOST_XINT_COPY_ASSIGN_REF" ref="a8177a6a6c68ea042f7e644d8ef7128f9" args="(type)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -92,11 +92,11 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00051">51</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00060">60</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a5f5634ec80010f0f87b93320fa3419f9"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_COPYABLE_AND_MOVABLE" ref="a5f5634ec80010f0f87b93320fa3419f9" args="(type)" -->
+<a class="anchor" id="a5f5634ec80010f0f87b93320fa3419f9"></a><!-- doxytag: member="basic_types_and_includes.hpp::BOOST_XINT_COPYABLE_AND_MOVABLE" ref="a5f5634ec80010f0f87b93320fa3419f9" args="(type)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -112,11 +112,11 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00052">52</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00061">61</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ad30e9ec163d1981dfee69c97d09ffd28"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_FORWARD" ref="ad30e9ec163d1981dfee69c97d09ffd28" args="(type, value)" -->
+<a class="anchor" id="ad30e9ec163d1981dfee69c97d09ffd28"></a><!-- doxytag: member="basic_types_and_includes.hpp::BOOST_XINT_FORWARD" ref="ad30e9ec163d1981dfee69c97d09ffd28" args="(type, value)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -137,41 +137,11 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00055">55</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00064">64</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a7621c4fd1f5760b878ca8f5e5e6bb4c2"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_FROM_HEADER" ref="a7621c4fd1f5760b878ca8f5e5e6bb4c2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FROM_HEADER</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00649">649</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad98e63b2824264e53b562c9a833ffeab"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_INLINE" ref="ad98e63b2824264e53b562c9a833ffeab" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_INLINE&nbsp;&nbsp;&nbsp;inline</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00647">647</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a73c3b02410381da656b7cb59c7ba9314"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_MOVE" ref="a73c3b02410381da656b7cb59c7ba9314" args="(value)" -->
+<a class="anchor" id="a73c3b02410381da656b7cb59c7ba9314"></a><!-- doxytag: member="basic_types_and_includes.hpp::BOOST_XINT_MOVE" ref="a73c3b02410381da656b7cb59c7ba9314" args="(value)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -187,11 +157,11 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00054">54</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00063">63</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a0533c283bce9e4d9468ea9b3a5ab509b"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_RV_REF" ref="a0533c283bce9e4d9468ea9b3a5ab509b" args="(type)" -->
+<a class="anchor" id="a0533c283bce9e4d9468ea9b3a5ab509b"></a><!-- doxytag: member="basic_types_and_includes.hpp::BOOST_XINT_RV_REF" ref="a0533c283bce9e4d9468ea9b3a5ab509b" args="(type)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -207,12 +177,12 @@
 </div>
 <div class="memdoc">
 
-<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>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00062">62</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/basic__types__and__includes_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/basic__types__and__includes_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,175 @@
+<!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: detail/basic_types_and_includes.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>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>detail/basic_types_and_includes.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_BASIC_TYPES_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_BASIC_TYPES_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#ifdef _WIN32</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span> <span class="comment">// Solely for the strong random number generator.</span>
+<a name="l00025"></a>00025 <span class="preprocessor"> #define STRICT</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor"> #define WIN32_LEAN_AND_MEAN</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;windows.h&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;string&gt;</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;queue&gt;</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;limits&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// for size_t</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;cassert&gt;</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;sstream&gt;</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;fstream&gt;</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;ctime&gt;</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;boost/integer.hpp&gt;</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;boost/cstdint.hpp&gt;</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;boost/function.hpp&gt;</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;boost/parameter.hpp&gt;</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;boost/type_traits.hpp&gt;</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;boost/scoped_array.hpp&gt;</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span>
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="comment">// Uncomment this to use Boost.Move, which can improve the speed when using</span>
+<a name="l00048"></a>00048 <span class="comment">// extremely large numbers.</span>
+<a name="l00049"></a>00049 <span class="comment">//#define BOOST_XINT_USE_MOVE</span>
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="preprocessor">#ifdef BOOST_XINT_USE_MOVE</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;boost/move/move.hpp&gt;</span>
+<a name="l00053"></a>00053 <span class="preprocessor"> #define BOOST_XINT_COPY_ASSIGN_REF(type) BOOST_COPY_ASSIGN_REF(type)</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_COPYABLE_AND_MOVABLE(type) BOOST_COPYABLE_AND_MOVABLE(type)</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_RV_REF(type) BOOST_RV_REF(type)</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_MOVE(value) boost::move(value)</span>
+<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FORWARD(type, value) boost::forward&lt;type&gt;(value)</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00059"></a><a class="code" href="classdisable__boost__rv__ref.html">00059</a> <span class="preprocessor"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">class </span><a class="code" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>: <span class="keyword">public</span> T { };
+<a name="l00060"></a><a class="code" href="basic__types__and__includes_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">00060</a> <span class="preprocessor"> #define BOOST_XINT_COPY_ASSIGN_REF(type) const type&amp;</span>
+<a name="l00061"></a><a class="code" href="basic__types__and__includes_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">00061</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_COPYABLE_AND_MOVABLE(type)</span>
+<a name="l00062"></a><a class="code" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">00062</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_RV_REF(type) disable_boost_rv_ref&lt;type&gt;</span>
+<a name="l00063"></a><a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">00063</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_MOVE(value) value</span>
+<a name="l00064"></a><a class="code" href="basic__types__and__includes_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">00064</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FORWARD(type, value) value</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span>
+<a name="l00067"></a><a class="code" href="namespaceboost.html">00067</a> <span class="keyword">namespace </span>boost {
+<a name="l00068"></a><a class="code" href="namespaceboost_1_1xint.html">00068</a> <span class="keyword">namespace </span>xint {
+<a name="l00069"></a>00069
+<a name="l00071"></a><a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">00071</a> <span class="keyword">typedef</span> boost::function&lt;bool ()&gt; <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a>;
+<a name="l00072"></a>00072
+<a name="l00074"></a><a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">00074</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>;
+<a name="l00075"></a>00075
+<a name="l00077"></a><a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">00077</a> <span class="keyword">typedef</span> std::vector&lt;unsigned char&gt; <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">binary_t</a>;
+<a name="l00078"></a>00078
+<a name="l00081"></a><a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">00081</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a> = (std::numeric_limits&lt;size_t&gt;::max)();
+<a name="l00082"></a>00082
+<a name="l00084"></a><a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">00084</a> <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a>;
+<a name="l00085"></a>00085
+<a name="l00087"></a>00087 <span class="keyword">const</span> std::string <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>(<span class="stringliteral">&quot;#NaN#&quot;</span>);
+<a name="l00088"></a>00088
+<a name="l00090"></a>00090 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;
+<a name="l00091"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html">00091</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a> {
+<a name="l00092"></a>00092 <span class="keyword">public</span>:
+<a name="l00093"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">00093</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">base_divide_t</a>() { }
+<a name="l00094"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a1b7962768058ad19d8d3e848b1fc019e">00094</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a1b7962768058ad19d8d3e848b1fc019e">base_divide_t</a>(<span class="keyword">const</span> T&amp; q, <span class="keyword">const</span> T&amp; r): <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>(q), <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>(r) { }
+<a name="l00095"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa9f43e464f328b0cc618f67e6e4d1d6f">00095</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">base_divide_t</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t&lt;T&gt;</a>&amp; copy):
+<a name="l00096"></a>00096 <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>(copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>), <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>(copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>) { }
+<a name="l00097"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aaa2df86aa70e8ac849cd6289a1f459b1">00097</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aaa2df86aa70e8ac849cd6289a1f459b1">base_divide_t</a>(<a class="code" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>) move) {
+<a name="l00098"></a>00098 <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>._swap(move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>); <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>._swap(move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>); }
+<a name="l00099"></a>00099
+<a name="l00100"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">00100</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>&amp; <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">operator=</a>(<a class="code" href="basic__types__and__includes_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>) copy)
+<a name="l00101"></a>00101 { <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a> = copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>; <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a> = copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00102"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a5f66ee628dc58d181b8c2886354909fb">00102</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>&amp; <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a5f66ee628dc58d181b8c2886354909fb">operator=</a>(<a class="code" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>) move) {
+<a name="l00103"></a>00103 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">std::swap</a>;
+<a name="l00104"></a>00104 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>, move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>);
+<a name="l00105"></a>00105 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>, move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>);
+<a name="l00106"></a>00106 <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00107"></a>00107
+<a name="l00108"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">00108</a> T <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>, <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>;
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="keyword">private</span>:
+<a name="l00111"></a>00111 <a class="code" href="basic__types__and__includes_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>)
+<a name="l00112"></a>00112 };
+<a name="l00113"></a>00113
+<a name="l00114"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html">00114</a> <span class="keyword">namespace </span>detail {
+<a name="l00116"></a>00116
+<a name="l00122"></a>00122 <span class="keyword">typedef</span> boost::uintmax_t doubledigit_t;
+<a name="l00123"></a>00123
+<a name="l00129"></a>00129 <span class="keyword">typedef</span> boost::uint_t&lt;std::numeric_limits&lt;doubledigit_t&gt;::digits / 2&gt;::fast
+<a name="l00130"></a>00130 digit_t;
+<a name="l00131"></a>00131
+<a name="l00134"></a>00134 <span class="keyword">const</span> <span class="keywordtype">size_t</span> minimum_digits = 1;
+<a name="l00135"></a>00135 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bits_per_digit = std::numeric_limits&lt;digit_t&gt;::digits;
+<a name="l00136"></a>00136 <span class="keyword">const</span> <span class="keywordtype">size_t</span> digits_in_uintmax =
+<a name="l00137"></a>00137 (std::numeric_limits&lt;boost::uintmax_t&gt;::digits + bits_per_digit - 1) /
+<a name="l00138"></a>00138 bits_per_digit;
+<a name="l00139"></a>00139 <span class="keyword">const</span> digit_t digit_hibit = (digit_t(1) &lt;&lt; (bits_per_digit-1));
+<a name="l00140"></a>00140 <span class="keyword">const</span> doubledigit_t doubledigit_hibit = (doubledigit_t(1) &lt;&lt; (bits_per_digit*2-1));
+<a name="l00141"></a>00141 <span class="keyword">const</span> doubledigit_t digit_overflowbit = (doubledigit_t(1) &lt;&lt; bits_per_digit);
+<a name="l00142"></a>00142 <span class="keyword">const</span> digit_t digit_mask = digit_t(digit_overflowbit-1);
+<a name="l00144"></a>00144
+<a name="l00146"></a>00146
+<a name="l00149"></a>00149 <span class="keyword">struct </span>magnitude_t {
+<a name="l00150"></a>00150 <span class="keyword">private</span>:
+<a name="l00151"></a>00151 <span class="keywordtype">size_t</span> copy_count;
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">public</span>:
+<a name="l00154"></a>00154 <span class="keyword">const</span> <span class="keywordtype">bool</span> readonly;
+<a name="l00155"></a>00155 <span class="keyword">const</span> <span class="keywordtype">size_t</span> max_length;
+<a name="l00156"></a>00156 digit_t digits[minimum_digits]; <span class="comment">// Must be last data item, see &quot;struct hack&quot;</span>
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 magnitude_t(<span class="keywordtype">size_t</span> max_len = minimum_digits, <span class="keywordtype">bool</span> ro = <span class="keyword">false</span>):
+<a name="l00159"></a>00159 copy_count(0), readonly(ro), max_length(max_len) { }
+<a name="l00160"></a>00160 magnitude_t(<span class="keywordtype">size_t</span> max_len, <span class="keywordtype">bool</span> ro, digit_t init): copy_count(0),
+<a name="l00161"></a>00161 readonly(ro), max_length(max_len) { digits[0] = init; }
+<a name="l00162"></a>00162 <span class="keywordtype">size_t</span> copies()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> copy_count; }
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="keywordtype">void</span> inc() { ++copy_count; }
+<a name="l00165"></a>00165 <span class="keywordtype">bool</span> dec() { <span class="keywordflow">return</span> (--copy_count == 0); }
+<a name="l00166"></a>00166 };
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keyword">inline</span> <span class="keywordtype">size_t</span> bits_to_digits(<span class="keywordtype">size_t</span> bits) { <span class="keywordflow">return</span> (bits + bits_per_digit - 1) /
+<a name="l00169"></a>00169 bits_per_digit; }
+<a name="l00170"></a>00170
+<a name="l00172"></a>00172 } <span class="comment">// namespace detail</span>
+<a name="l00173"></a>00173 } <span class="comment">// namespace xint</span>
+<a name="l00174"></a>00174 } <span class="comment">// namespace boost</span>
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_BASIC_TYPES_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/bitfunctions_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/bitfunctions_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/bitfunctions.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>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>detail/bitfunctions.cpp File Reference</h1>
-<p>Contains the definitions for the bit-manipulation functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the bit-manipulation functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="bitfunctions_8cpp_source.html">bitfunctions.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/bitfunctions_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/bitfunctions_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,108 +0,0 @@
-<!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: detail/bitfunctions.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>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>detail/bitfunctions.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<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 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> bit_index) {
-<a name="l00032"></a>00032 <span class="keywordtype">size_t</span> index = bit_index / bits_per_digit;
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (index &lt; n.length) {
-<a name="l00034"></a>00034 digit_t mask=(digit_t(1) &lt;&lt; (bit_index % bits_per_digit));
-<a name="l00035"></a>00035 <span class="keywordflow">return</span> ((n[index] &amp; mask) != 0);
-<a name="l00036"></a>00036 } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00037"></a>00037 }
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(data_t&amp; n, <span class="keywordtype">size_t</span> bit_index) {
-<a name="l00040"></a>00040 <span class="keywordflow">if</span> (n.is_fixed_length() &amp;&amp; bit_index &gt;= (n.max_length() * bits_per_digit))
-<a name="l00041"></a>00041 <span class="keywordflow">return</span>;
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keywordtype">size_t</span> index = (bit_index / bits_per_digit);
-<a name="l00044"></a>00044 digit_t mask = (digit_t(1) &lt;&lt; (bit_index % bits_per_digit));
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 n.beginmod(index + 1, <span class="keyword">true</span>);
-<a name="l00047"></a>00047 n.digits()[index] |= mask;
-<a name="l00048"></a>00048 <span class="keywordflow">if</span> (n.length &lt; index + 1) n.length = index + 1;
-<a name="l00049"></a>00049 n.endmod();
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(data_t&amp; n, <span class="keywordtype">size_t</span> bit_index) {
-<a name="l00053"></a>00053 <span class="keywordtype">size_t</span> index = (bit_index / bits_per_digit);
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (index &gt;= n.length) <span class="keywordflow">return</span>; <span class="comment">// Bit can&#39;t be set, no need to clear it.</span>
-<a name="l00055"></a>00055 digit_t mask = (digit_t(1) &lt;&lt; (bit_index % bits_per_digit));
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 n.beginmod();
-<a name="l00058"></a>00058 n.digits()[index] &amp;= ~mask;
-<a name="l00059"></a>00059 n.endmod();
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (n.is_zero()) <span class="keywordflow">return</span> valueIfZero;
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keyword">const</span> digit_t *d = n.digits(), *p = d, *pe = p + n.length;
-<a name="l00066"></a>00066 <span class="keywordflow">while</span> (p != pe &amp;&amp; *p == 0) ++p;
-<a name="l00067"></a>00067 <span class="keywordtype">size_t</span> r = (bits_per_digit * (p - d));
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 digit_t digit = *p;
-<a name="l00070"></a>00070 <span class="keywordflow">while</span> ((digit &amp; 0x01)==0) { digit &gt;&gt;= 1; ++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
-<a name="l00075"></a>00075 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (n.is_zero()) <span class="keywordflow">return</span> valueIfZero;
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> ((n.length - 1) * bits_per_digit) + <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(n[n.length - 1]);
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 } <span class="comment">// namespace detail</span>
-<a name="l00081"></a>00081 } <span class="comment">// namespace xint</span>
-<a name="l00082"></a>00082 } <span class="comment">// namespace boost</span>
-<a name="l00084"></a>00084 <span class="comment"></span>
-<a name="l00085"></a>00085 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/bitfunctions_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/bitfunctions_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/bitfunctions_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/bitfunctions_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/bitfunctions.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/bitfunctions.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/bitfunctions.cpp File Reference</h1>
+<h1>detail/bitfunctions.hpp File Reference</h1>
 <p>Contains the definitions for the bit-manipulation 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the definitions for the bit-manipulation functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="bitfunctions_8cpp_source.html">bitfunctions.cpp</a>.</p>
+<p>Definition in file <a class="el" href="bitfunctions_8hpp_source.html">bitfunctions.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/bitfunctions_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/bitfunctions_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,121 @@
+<!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: detail/bitfunctions.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>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>detail/bitfunctions.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_BITFUNCTIONS_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_BITFUNCTIONS_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> bit_index) {
+<a name="l00030"></a>00030 <span class="keywordtype">size_t</span> index = bit_index / bits_per_digit;
+<a name="l00031"></a>00031 <span class="keywordflow">if</span> (index &lt; n.length) {
+<a name="l00032"></a>00032 digit_t mask = (digit_t(1) &lt;&lt; (bit_index % bits_per_digit));
+<a name="l00033"></a>00033 <span class="keywordflow">return</span> ((n[index] &amp; mask) != 0);
+<a name="l00034"></a>00034 } <span class="keywordflow">else</span> <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 BOOST_XINT_RAWINT_TPL
+<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(BOOST_XINT_RAWINT&amp; n, <span class="keywordtype">size_t</span> bit_index) {
+<a name="l00039"></a>00039 <span class="keywordflow">if</span> (Bits != 0 &amp;&amp; bit_index &gt;= (n.max_length() * bits_per_digit)) <span class="keywordflow">return</span>;
+<a name="l00040"></a>00040 <span class="keywordtype">size_t</span> index = (bit_index / bits_per_digit);
+<a name="l00041"></a>00041 digit_t mask = (digit_t(1) &lt;&lt; (bit_index % bits_per_digit));
+<a name="l00042"></a>00042 n.digits(index + 1, realloc::extend)[index] |= mask;
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (n.length &lt; index + 1) n.length = index + 1;
+<a name="l00044"></a>00044 n.trim();
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 BOOST_XINT_RAWINT_TPL
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175" title="Sets a specific bit in an integer to zero.">clearbit</a>(BOOST_XINT_RAWINT&amp; n, <span class="keywordtype">size_t</span> bit_index) {
+<a name="l00049"></a>00049 <span class="keywordtype">size_t</span> index = (bit_index / bits_per_digit);
+<a name="l00050"></a>00050 <span class="keywordflow">if</span> (index &gt;= n.length) <span class="keywordflow">return</span>; <span class="comment">// Bit can&#39;t be set, no need to clear it.</span>
+<a name="l00051"></a>00051 digit_t mask = (digit_t(1) &lt;&lt; (bit_index % bits_per_digit));
+<a name="l00052"></a>00052 n.digits(0)[index] &amp;= ~mask;
+<a name="l00053"></a>00053 n.trim();
+<a name="l00054"></a>00054 }
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 BOOST_XINT_RAWINT_TPL
+<a name="l00057"></a>00057 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (n.is_zero()) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="keyword">const</span> digit_t *d = n.digits(), *p = d, *pe = p + n.length;
+<a name="l00061"></a>00061 <span class="keywordflow">while</span> (p != pe &amp;&amp; *p == 0) ++p;
+<a name="l00062"></a>00062 <span class="keywordtype">size_t</span> r = (bits_per_digit * (p - d));
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 digit_t digit = *p;
+<a name="l00065"></a>00065 <span class="keywordflow">while</span> ((digit &amp; 0x01)==0) { digit &gt;&gt;= 1; ++r; }
+<a name="l00066"></a>00066
+<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 BOOST_XINT_RAWINT_TPL
+<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (n.is_zero()) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> ((n.length - 1) * bits_per_digit) + <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(n[n.length - 1]);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 BOOST_XINT_RAWINT_TPL
+<a name="l00077"></a>00077 BOOST_XINT_RAWINT BOOST_XINT_RAWINT::operator~()<span class="keyword"> const </span>{
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (Bits == 0) {
+<a name="l00079"></a>00079 <span class="keywordflow">throw</span> exceptions::too_big(<span class="stringliteral">&quot;operator~ on unlimited integers results in &quot;</span>
+<a name="l00080"></a>00080 <span class="stringliteral">&quot;an infinitely long number.&quot;</span>);
+<a name="l00081"></a>00081 } <span class="keywordflow">else</span> {
+<a name="l00082"></a>00082 BOOST_XINT_RAWINT r;
+<a name="l00083"></a>00083 <span class="keyword">const</span> digit_t *s = digits(), *se = s + length;
+<a name="l00084"></a>00084 digit_t *t = r.digits(r.max_length(), realloc::extend), *te = t +
+<a name="l00085"></a>00085 r.max_length();
+<a name="l00086"></a>00086 <span class="keywordflow">while</span> (s != se) *t++ = ~(*s++);
+<a name="l00087"></a>00087 <span class="keywordflow">while</span> (t != te) *t++ = ~0;
+<a name="l00088"></a>00088 r.trim();
+<a name="l00089"></a>00089 <span class="keywordflow">return</span> r;
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 } <span class="comment">// namespace detail</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="l00097"></a>00097 <span class="comment"></span>
+<a name="l00098"></a>00098 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_BITFUNCTIONS_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/bitqueue_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/bitqueue_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/bitqueue_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -38,7 +38,7 @@
 
 <p>Definition in file <a class="el" href="bitqueue_8hpp_source.html">bitqueue.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/bitqueue_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/bitqueue_8hpp_source.html (original)
+++ sandbox/xint/libs/xint/doc/bitqueue_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -105,7 +105,7 @@
 <a name="l00089"></a>00089 <span class="comment"></span>
 <a name="l00090"></a>00090 <span class="preprocessor">#endif // BOOST_XINT_INCLUDED_BITQUEUET_HPP</span>
 </pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,60 +0,0 @@
-<!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::any_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>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_1any__integer.html">any_integer</a>
- </div>
-</div>
-<div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
-<div class="dynsection">
- <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
-</map>
- </div>
-</div>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.png
==============================================================================
Binary file. No diff available.

Modified: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1base__divide__t-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1base__divide__t-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1base__divide__t-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -36,7 +36,7 @@
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a></td><td><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">boost::xint::base_divide_t&lt; T &gt;</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a></td><td><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">boost::xint::base_divide_t&lt; T &gt;</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1base__divide__t.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1base__divide__t.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1base__divide__t.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -51,7 +51,7 @@
 
 <p>Holds the results from a division-with-remainder call. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00078">78</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00091">91</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 <hr/><h2>Constructor &amp; Destructor Documentation</h2>
 <a class="anchor" id="a78e4dd66f424388d1db839ef53e25997"></a><!-- doxytag: member="boost::xint::base_divide_t::base_divide_t" ref="a78e4dd66f424388d1db839ef53e25997" args="()" -->
 <div class="memitem">
@@ -70,7 +70,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00080">80</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00093">93</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -101,7 +101,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00081">81</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00094">94</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -123,7 +123,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00082">82</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00095">95</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -145,7 +145,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00084">84</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00097">97</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -168,7 +168,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00089">89</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00102">102</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -190,7 +190,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00087">87</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00100">100</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -208,7 +208,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00095">95</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00108">108</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -225,15 +225,15 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00095">95</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00108">108</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+<li>detail/<a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1default__random__generator-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1default__random__generator-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1default__random__generator-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <h1>boost::xint::default_random_generator Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a>, including all inherited members.<table>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">default_random_generator</a>()</td><td><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1default__random__generator.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1default__random__generator.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1default__random__generator.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -46,7 +46,7 @@
 <dd>
 <a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">integer_t::random_prime</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="random_8hpp_source.html#l00092">92</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00086">86</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
 <hr/><h2>Constructor &amp; Destructor Documentation</h2>
 <a class="anchor" id="a4289636c47258469b78703ae791812f6"></a><!-- doxytag: member="boost::xint::default_random_generator::default_random_generator" ref="a4289636c47258469b78703ae791812f6" args="()" -->
 <div class="memitem">
@@ -63,7 +63,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="random_8hpp_source.html#l00094">94</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00088">88</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
 
 </div>
 </div>
@@ -71,7 +71,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;cannot represent the requested value&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1cannot__represent.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -65,7 +65,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;divide by zero error&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -65,7 +65,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;invalid argument&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__argument.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -65,7 +65,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;invalid base&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__base.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -65,7 +65,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;invalid digit&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__digit.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -65,7 +65,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;invalid modulus&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1invalid__modulus.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -65,7 +65,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;system does not have a strong random generator&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1no__strong__random.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -66,7 +66,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;attempted to use a Not-a-Number&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1not__a__number.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -66,7 +66,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;overflow error: can't obtain enough memory to represent the requested number&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1overflow__error.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -66,7 +66,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -29,7 +29,7 @@
 <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 &amp;what=&quot;value out of range for requested conversion&quot;)</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1exceptions_1_1too__big.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -65,7 +65,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,79 +0,0 @@
-<!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>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::fixed_integer&lt;&gt; Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">_swap</a>(fixed_integer &amp;s)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6919f6d6ac20e8a6dd2d539939ce1e38">divide_t</a> typedef</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2870a3a1b0b144dbfca6cc7f9134890c">factorial</a>(size_t n)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#acd32b9af167671d4edbe2b2f26f2fce7">fixed_integer</a>(const fixed_integer &amp;b, bool force_thread_safety=false)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a08b015ede2d74d353558d28e02a1c5ba">fixed_integer</a>(BOOST_XINT_RV_REF(type) b)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aef70310853aaca757ae564f2b5b3ba2f">fixed_integer</a>(const char *str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8d3981a928f5fcce48e3202760c70ae3">fixed_integer</a>(const char *str, char **endptr, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a00ad5031863762ad96f8c6f9e0dc6e05">fixed_integer</a>(const std::string &amp;str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#abcc8ca0500c3647d20cfbc501df485b6">fixed_integer</a>(const xint::binary_t b, bitsize_t bits=0)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a9caad2ce5da7b3a30385f6159903a680">fixed_integer</a>(const any_integer &amp;other, bool force_thread_safety=false)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac19dd3384f20dbad8d5aacafc541c773">fixed_integer</a>(const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a729023140c1b6edba03ffaa063c14e7f">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8d1217f7cded81d3ac3803ec4fd8a282">is_even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af7439d5c106032c8dd7909fca6ad8d12">is_odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a1833c141efc0b733cb6a3c1ccb012815">operator!</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a5be10cf23614f86487795d3a52c59fe0">operator%=</a>(const fixed_integer b)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aaa2bd5962f94dfecdb629fe91ca11916">operator&amp;=</a>(const fixed_integer n)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ae6933c0021c085aefef2c84871cf56aa">operator*=</a>(const fixed_integer b)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a946b6f16a5138e190ec6b3663a4e405f">operator+</a>()</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a25f6feb79f23377b9a070ac57dc3272d">operator+</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a88dbfe8b18a9ea266e7613a55e0c8008">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a43d91bef8635dbe48d89e6bcc6b7c644">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a41854f088fcd6eee52d9b99ad9f631f6">operator+=</a>(const fixed_integer b)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aff23f92ff8251cb1ef691e73ed3fe777">operator-</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad85b39d612438f84970e1d812f078b8a">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a54a920edd865aa7e8b26ff8ba457e826">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#affc385351bd34308be1681f9c3893f10">operator-=</a>(const fixed_integer b)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af114bab3ffdcabfbb1dd968e32c47cd0">operator/=</a>(const fixed_integer b)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a326278f38ee384d2469f758e2d91c941">operator&lt;&lt;</a>(bitsize_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a45846e1b9b7a31865ba2fb49b57ab138">operator&lt;&lt;=</a>(bitsize_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aa0aca358b7caa1ea3a4d32546ce438a3">operator=</a>(BOOST_XINT_COPY_ASSIGN_REF(type) c)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aad86c142066a690b214affe3e9338f3e">operator=</a>(BOOST_XINT_RV_REF(type) c)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a653c0a77740b27d6626daf6d3f75690f">operator=</a>(const Type n)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afaa0193c95ade2362b9e55dc4ebeb8f3">operator&gt;&gt;</a>(bitsize_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac13d7456ad391ce19c5b2c22c94dadf5">operator&gt;&gt;=</a>(bitsize_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad568affeea647ef91d0de1d88cc76192">operator^=</a>(const fixed_integer n)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2272dbf43c92ce1f56d5f0618a137425">operator|=</a>(const fixed_integer n)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2e924b61df38e812c682f86e540f37d6">operator~</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac4928defd092ad3f30af55e0a221bd90">pow2</a>(size_t exponent)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afe0884583cdf8c3a60dc3fd35fa40a31">random_by_size</a>(Type &amp;gen, bitsize_t size_in_bits, bool high_bit_on=false, bool low_bit_on=false, bool can_be_negative=false)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a7215f0327bf6d96d27f3ea805657e64c">random_prime</a>(Type &amp;gen, bitsize_t size_in_bits, callback_t callback=no_callback)</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8ee6b3914e05703471fde2057226ddb3">sign</a>(bool signed_zero=false) const </td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6db421b2d6ddf1d406e3d5770e221146">type</a> typedef</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td><td></td></tr>
-</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,1466 +0,0 @@
-<!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::fixed_integer&lt;&gt; 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>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_1fixed__integer.html">fixed_integer</a>
- </div>
-</div>
-<div class="contents">
-<h1>boost::xint::fixed_integer&lt;&gt; Class Template Reference</h1><!-- doxytag: class="boost::xint::fixed_integer" --><!-- doxytag: inherits="boost::xint::any_integer" -->
-<p>A fixed-size integer type.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::fixed_integer&lt;&gt;:</div>
-<div class="dynsection">
- <div class="center">
- <img src="classboost_1_1xint_1_1fixed__integer.png" usemap="#boost::xint::fixed_integer&lt;&gt;_map" alt=""/>
- <map id="boost::xint::fixed_integer&lt;&gt;_map" name="boost::xint::fixed_integer&lt;&gt;_map">
-<area href="classboost_1_1xint_1_1any__integer.html" alt="boost::xint::any_integer" shape="rect" coords="0,0,160,24"/>
-</map>
- </div>
-</div>
-
-<p>List of all members.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="2"><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a><br class="typebreak"/>
-&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6919f6d6ac20e8a6dd2d539939ce1e38">divide_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6db421b2d6ddf1d406e3d5770e221146">type</a></td></tr>
-<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">_swap</a> (<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;s)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Constructors &amp; 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="memTemplParams" colspan="2">template&lt;typename Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac19dd3384f20dbad8d5aacafc541c773">fixed_integer</a> (const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a> *=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a9caad2ce5da7b3a30385f6159903a680">fixed_integer</a> (const <a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a> &amp;other, bool force_thread_safety=false)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#abcc8ca0500c3647d20cfbc501df485b6">fixed_integer</a> (const <a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a> b, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a00ad5031863762ad96f8c6f9e0dc6e05">fixed_integer</a> (const std::string &amp;str, size_t base=10)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8d3981a928f5fcce48e3202760c70ae3">fixed_integer</a> (const char *str, char **endptr, size_t base=10)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aef70310853aaca757ae564f2b5b3ba2f">fixed_integer</a> (const char *str, size_t base=10)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a08b015ede2d74d353558d28e02a1c5ba">fixed_integer</a> (BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a>) b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#acd32b9af167671d4edbe2b2f26f2fce7">fixed_integer</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;b, bool force_thread_safety=false)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a> ()</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">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a729023140c1b6edba03ffaa063c14e7f">hex_digits</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8d1217f7cded81d3ac3803ec4fd8a282">is_even</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af7439d5c106032c8dd7909fca6ad8d12">is_odd</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8ee6b3914e05703471fde2057226ddb3">sign</a> (bool signed_zero=false) const </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>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a1833c141efc0b733cb6a3c1ccb012815">operator!</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a5be10cf23614f86487795d3a52c59fe0">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aaa2bd5962f94dfecdb629fe91ca11916">operator&amp;=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ae6933c0021c085aefef2c84871cf56aa">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a25f6feb79f23377b9a070ac57dc3272d">operator+</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a946b6f16a5138e190ec6b3663a4e405f">operator+</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a43d91bef8635dbe48d89e6bcc6b7c644">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a88dbfe8b18a9ea266e7613a55e0c8008">operator++</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a41854f088fcd6eee52d9b99ad9f631f6">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aff23f92ff8251cb1ef691e73ed3fe777">operator-</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a54a920edd865aa7e8b26ff8ba457e826">operator--</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad85b39d612438f84970e1d812f078b8a">operator--</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#affc385351bd34308be1681f9c3893f10">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af114bab3ffdcabfbb1dd968e32c47cd0">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a326278f38ee384d2469f758e2d91c941">operator&lt;&lt;</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a45846e1b9b7a31865ba2fb49b57ab138">operator&lt;&lt;=</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a653c0a77740b27d6626daf6d3f75690f">operator=</a> (const Type n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aad86c142066a690b214affe3e9338f3e">operator=</a> (BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a>) c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aa0aca358b7caa1ea3a4d32546ce438a3">operator=</a> (BOOST_XINT_COPY_ASSIGN_REF(<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a>) c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afaa0193c95ade2362b9e55dc4ebeb8f3">operator&gt;&gt;</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac13d7456ad391ce19c5b2c22c94dadf5">operator&gt;&gt;=</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad568affeea647ef91d0de1d88cc76192">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2272dbf43c92ce1f56d5f0618a137425">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2e924b61df38e812c682f86e540f37d6">operator~</a> () const </td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Bitwise Ones' Complement (i.e. bitwise NOT) operator. <br/></td></tr>
-<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Static Member Functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa31d6da946887ed6180c9a44a76c862f"></a> These are functions that return a <a class="el" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">fixed_integer</a>, but don't take one as a parameter. To use them as free functions, you would have to specify the return type anyway, so I made them static member functions of the type instead. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2870a3a1b0b144dbfca6cc7f9134890c">factorial</a> (size_t n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac4928defd092ad3f30af55e0a221bd90">pow2</a> (size_t exponent)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;class Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afe0884583cdf8c3a60dc3fd35fa40a31">random_by_size</a> (Type &amp;gen, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, bool high_bit_on=false, bool low_bit_on=false, bool can_be_negative=false)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;class Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a7215f0327bf6d96d27f3ea805657e64c">random_prime</a> (Type &amp;gen, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;...&gt;<br/>
- class boost::xint::fixed_integer&lt;&gt;</h3>
-
-<p>A fixed-size integer type. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Bits</em>&nbsp;</td><td>The number of bits that the magnitude of the fixed_integer type should be limited to. This can be any number greater than zero.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Alloc</em>&nbsp;</td><td>The allocator to use. It must be for the <code>boost::xint::detail::digit_t</code> type.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Threadsafe</em>&nbsp;</td><td>If <code>true</code>, the library ensures that each object has its own unique storage before returning it. If <code>false</code>, identical objects are allowed to share storage using a copy-on-write design, potentially increasing the speed of the library, but making it unsafe for multithreaded use (with <a class="el" href="threadsafe.html">some exceptions</a>). The library allows copy-on-write for internal functions regardless of this parameter, which is safe because the internal functions are single-threaded.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Secure</em>&nbsp;</td><td>If <code>true</code>, the library zeros out all memory before deallocating it, for maximum security.</td></tr>
- </table>
- </dd>
-</dl>
-<p>fixed_integer types are more processor-efficient than variable-sized integers, because they seldom need to do any allocation once they're created. However, they can be less memory-efficient for holding smaller values. They also silently discard the upper bits on any value that is too big for them, which can bite the unwary.</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>The number of bits refers only to the unsigned magnitude of the number. The sign is stored separately. This means that, for example, a <code>fixed_integer&lt;8&gt;</code> has a range of -255 to +255, not -128 to +127 like an <code>int8_t</code>.</dd></dl>
-<dl class="user"><dt><b></b></dt><dd>Also note that when calculating with fixed_integer types, the number does not "wrap around" when it exceeds the type's size like the built-in signed integer types do. It is truncated to the lower bits instead. For example, <code>fixed_integer&lt;8&gt;(-255) - 1</code> and <code>fixed_integer&lt;8&gt;(255) + 1</code> will both be zero. However, the sign (on non-zero answers) is preserved, so <code>fixed_integer&lt;8&gt;(-255) - 2</code> will be -1. </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00134">134</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a6919f6d6ac20e8a6dd2d539939ce1e38"></a><!-- doxytag: member="boost::xint::fixed_integer::divide_t" ref="a6919f6d6ac20e8a6dd2d539939ce1e38" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a>&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &gt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1base__divide__t.html">divide_t</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00208">208</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6db421b2d6ddf1d406e3d5770e221146"></a><!-- doxytag: member="boost::xint::fixed_integer::type" ref="a6db421b2d6ddf1d406e3d5770e221146" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00138">138</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a2319506640477364b75decc7151a5776"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="a2319506640477364b75decc7151a5776" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></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="fixed__integer_8hpp_source.html#l00236">236</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="acd32b9af167671d4edbe2b2f26f2fce7"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="acd32b9af167671d4edbe2b2f26f2fce7" args="(const fixed_integer &amp;b, bool force_thread_safety=false)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>b</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>force_thread_safety</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></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>&nbsp;</td><td valign="top"><em>b</em>&nbsp;</td><td>An existing integer.</td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>Threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter.</td></tr>
- </table>
- </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="fixed__integer_8hpp_source.html#l00242">242</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a08b015ede2d74d353558d28e02a1c5ba"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="a08b015ede2d74d353558d28e02a1c5ba" args="(BOOST_XINT_RV_REF(type) b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a>)&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00145">145</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aef70310853aaca757ae564f2b5b3ba2f"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="aef70310853aaca757ae564f2b5b3ba2f" args="(const char *str, size_t base=10)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Create an integer from a string representation. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>str</em>&nbsp;</td><td>A string representation of a number. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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><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>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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>&nbsp;</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 most common way to initialize literal 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>
-<dl class="note"><dt><b>Note:</b></dt><dd>This function does <em>not</em> stop when the fixed_integer's bits are full. It uses the entire string, then truncates the result to the proper number of bits. </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00258">258</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8d3981a928f5fcce48e3202760c70ae3"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="a8d3981a928f5fcce48e3202760c70ae3" args="(const char *str, char **endptr, size_t base=10)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char **&nbsp;</td>
- <td class="paramname"> <em>endptr</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Parse an integer from a string representation. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>str</em>&nbsp;</td><td>A string representation of a number. </td></tr>
- <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>endptr</em>&nbsp;</td><td>When the function returns, this will contain a pointer to the first character after the parsed integer. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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><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>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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>&nbsp;</td><td>if there are no valid digits before the first invalid character.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function is based on the <code>strtol</code> function from the standard library. Like <code>strtol</code>, it first discards any leading whitespace characters, then takes as many characters as are valid for the given <code>base</code> and interprets them as an integer. Then a pointer to the first character following the integer is stored in the object pointed by <code>endptr</code>.</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>
-<dl class="note"><dt><b>Note:</b></dt><dd>This function does <em>not</em> stop when the fixed_integer's bits are full. It continues as long as there are valid digits for the base in question, then truncates the result to the proper number of bits. </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00272">272</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a00ad5031863762ad96f8c6f9e0dc6e05"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="a00ad5031863762ad96f8c6f9e0dc6e05" args="(const std::string &amp;str, size_t base=10)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Create an integer from a string representation. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>str</em>&nbsp;</td><td>A string representation of a number. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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><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>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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>&nbsp;</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 most common way to initialize literal 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>
-<dl class="note"><dt><b>Note:</b></dt><dd>This function does <em>not</em> stop when the fixed_integer's bits are full. It uses the entire string, then truncates the result to the proper number of bits. </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00285">285</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abcc8ca0500c3647d20cfbc501df485b6"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="abcc8ca0500c3647d20cfbc501df485b6" args="(const xint::binary_t b, bitsize_t bits=0)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a>&nbsp;</td>
- <td class="paramname"> <em>b</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>bits</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Converts a portable binary representation of a number into an integer. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>b</em>&nbsp;</td><td>An <code><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a></code> containing the bytes to convert, lowest byte first. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bits</em>&nbsp;</td><td>The number of bits packed into each character (for portability with systems that might not have characters with the same number of bits), or zero (the default) to assume the number of bits in the current system's unsigned character type.</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__argument.html">exceptions::invalid_argument</a></em>&nbsp;</td><td>if <code>bits</code> is greater than the number of bits in an unsigned character.</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#ac1c6eb0f3c5166761d81503fa68f4b78">xint::to_binary</a></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>
-<dl class="note"><dt><b>Note:</b></dt><dd>This function does <em>not</em> stop when the fixed_integer's bits are full. It uses the entire <code>binary_t</code> item, then truncates the result to the proper number of bits. </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00299">299</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9caad2ce5da7b3a30385f6159903a680"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="a9caad2ce5da7b3a30385f6159903a680" args="(const any_integer &amp;other, bool force_thread_safety=false)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>force_thread_safety</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Constructs a new integer object from an existing integer object.Converts any existing <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a>, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">fixed_integer</a>, or nothrow_integer object to this type.<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>c</em>&nbsp;</td><td>An existing integer.</td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>Threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter. This parameter isn't really necessary on this version of the constructor, because objects of different types aren't allowed to share storage; it's here only for signature compatibility with the same-type copy constructor.</td></tr>
- </table>
- </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="fixed__integer_8hpp_source.html#l00307">307</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac19dd3384f20dbad8d5aacafc541c773"></a><!-- doxytag: member="boost::xint::fixed_integer::fixed_integer" ref="ac19dd3384f20dbad8d5aacafc541c773" args="(const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::type *=0)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> </td>
- <td>(</td>
- <td class="paramtype">const Type&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a> *&nbsp;</td>
- <td class="paramname"> = <code>0</code></td><td>&nbsp;</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 integer object with the value of the built-in integer type 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>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The value for the new object. </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>Type</em>&nbsp;</td><td>The type of <code>n</code>.</td></tr>
- </table>
- </dd>
-</dl>
-<p>You can ignore the <code>enable_if</code> parameter, it's there only to tell the compiler what types the function 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="fixed__integer_8hpp_source.html#l00327">327</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a0a87772618416f9a5522db186accea2e"></a><!-- doxytag: member="boost::xint::fixed_integer::_swap" ref="a0a87772618416f9a5522db186accea2e" args="(fixed_integer &amp;s)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::_swap </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>s</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00227">227</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2870a3a1b0b144dbfca6cc7f9134890c"></a><!-- doxytag: member="boost::xint::fixed_integer::factorial" ref="a2870a3a1b0b144dbfca6cc7f9134890c" args="(size_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::factorial </td>
- <td>(</td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of <code>n!</code> <ul>
-<li>Complexity: O(n<sup>3</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00535">535</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a729023140c1b6edba03ffaa063c14e7f"></a><!-- doxytag: member="boost::xint::fixed_integer::hex_digits" ref="a729023140c1b6edba03ffaa063c14e7f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">size_t <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::hex_digits </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tells you roughly how large <code>*this</code> is. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00521">521</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8d1217f7cded81d3ac3803ec4fd8a282"></a><!-- doxytag: member="boost::xint::fixed_integer::is_even" ref="a8d1217f7cded81d3ac3803ec4fd8a282" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::is_even </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tests the lowest bit of <code>*this</code> to determine evenness. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00509">509</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af7439d5c106032c8dd7909fca6ad8d12"></a><!-- doxytag: member="boost::xint::fixed_integer::is_odd" ref="af7439d5c106032c8dd7909fca6ad8d12" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::is_odd </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tests the lowest bit of <code>*this</code> to determine oddness. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00503">503</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1833c141efc0b733cb6a3c1ccb012815"></a><!-- doxytag: member="boost::xint::fixed_integer::operator!" ref="a1833c141efc0b733cb6a3c1ccb012815" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator! </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00174">174</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5be10cf23614f86487795d3a52c59fe0"></a><!-- doxytag: member="boost::xint::fixed_integer::operator%=" ref="a5be10cf23614f86487795d3a52c59fe0" args="(const fixed_integer b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator%= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">operator%(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00407">407</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaa2bd5962f94dfecdb629fe91ca11916"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&amp;=" ref="aaa2bd5962f94dfecdb629fe91ca11916" args="(const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator&amp;= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">operator&amp;(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00444">444</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae6933c0021c085aefef2c84871cf56aa"></a><!-- doxytag: member="boost::xint::fixed_integer::operator*=" ref="ae6933c0021c085aefef2c84871cf56aa" args="(const fixed_integer b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator*= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">operator*(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00389">389</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a25f6feb79f23377b9a070ac57dc3272d"></a><!-- doxytag: member="boost::xint::fixed_integer::operator+" ref="a25f6feb79f23377b9a070ac57dc3272d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator+ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00177">177</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a946b6f16a5138e190ec6b3663a4e405f"></a><!-- doxytag: member="boost::xint::fixed_integer::operator+" ref="a946b6f16a5138e190ec6b3663a4e405f" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator+ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00176">176</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a43d91bef8635dbe48d89e6bcc6b7c644"></a><!-- doxytag: member="boost::xint::fixed_integer::operator++" ref="a43d91bef8635dbe48d89e6bcc6b7c644" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator++ </td>
- <td>(</td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Postincrement operator<ul>
-<li>Complexity: O(n)</li>
-</ul>
-This is not recommended. It must make a copy before incrementing the <code>*this</code> object, making it noticeably less efficient than the preincrement operator. </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00430">430</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a88dbfe8b18a9ea266e7613a55e0c8008"></a><!-- doxytag: member="boost::xint::fixed_integer::operator++" ref="a88dbfe8b18a9ea266e7613a55e0c8008" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator++ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Preincrement operator<ul>
-<li>Complexity: amortized O(1) </li>
-</ul>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00416">416</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a41854f088fcd6eee52d9b99ad9f631f6"></a><!-- doxytag: member="boost::xint::fixed_integer::operator+=" ref="a41854f088fcd6eee52d9b99ad9f631f6" args="(const fixed_integer b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00371">371</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aff23f92ff8251cb1ef691e73ed3fe777"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&#45;" ref="aff23f92ff8251cb1ef691e73ed3fe777" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator- </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Return the additive inverse of an integer. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>*this</code> with the sign reversed. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00346">346</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a54a920edd865aa7e8b26ff8ba457e826"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&#45;&#45;" ref="a54a920edd865aa7e8b26ff8ba457e826" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator-- </td>
- <td>(</td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Postdecrement operator<ul>
-<li>Complexity: O(n)</li>
-</ul>
-This is not recommended. It must make a copy before decrementing the <code>*this</code> object, making it noticeably less efficient than the predecrement operator. </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00437">437</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad85b39d612438f84970e1d812f078b8a"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&#45;&#45;" ref="ad85b39d612438f84970e1d812f078b8a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator-- </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Predecrement operator<ul>
-<li>Complexity: amortized O(1) </li>
-</ul>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00423">423</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="affc385351bd34308be1681f9c3893f10"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&#45;=" ref="affc385351bd34308be1681f9c3893f10" args="(const fixed_integer b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00380">380</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af114bab3ffdcabfbb1dd968e32c47cd0"></a><!-- doxytag: member="boost::xint::fixed_integer::operator/=" ref="af114bab3ffdcabfbb1dd968e32c47cd0" args="(const fixed_integer b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator/= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">operator/(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00398">398</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a326278f38ee384d2469f758e2d91c941"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&lt;&lt;" ref="a326278f38ee384d2469f758e2d91c941" args="(bitsize_t shift) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator&lt;&lt; </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Left-shift an integer by a specified number of bits. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>shift</em>&nbsp;</td><td>The number of bits to left-shift the number.</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="fixed__integer_8hpp_source.html#l00471">471</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a45846e1b9b7a31865ba2fb49b57ab138"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&lt;&lt;=" ref="a45846e1b9b7a31865ba2fb49b57ab138" args="(bitsize_t shift)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator&lt;&lt;= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a326278f38ee384d2469f758e2d91c941">fixed_integer::operator&lt;&lt;(bitsize_t) const </a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00489">489</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a653c0a77740b27d6626daf6d3f75690f"></a><!-- doxytag: member="boost::xint::fixed_integer::operator=" ref="a653c0a77740b27d6626daf6d3f75690f" args="(const Type n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">const Type&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00171">171</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aad86c142066a690b214affe3e9338f3e"></a><!-- doxytag: member="boost::xint::fixed_integer::operator=" ref="aad86c142066a690b214affe3e9338f3e" args="(BOOST_XINT_RV_REF(type) c)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a>)&nbsp;</td>
- <td class="paramname"> <em>c</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00169">169</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa0aca358b7caa1ea3a4d32546ce438a3"></a><!-- doxytag: member="boost::xint::fixed_integer::operator=" ref="aa0aca358b7caa1ea3a4d32546ce438a3" args="(BOOST_XINT_COPY_ASSIGN_REF(type) c)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">BOOST_XINT_COPY_ASSIGN_REF(<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">type</a>)&nbsp;</td>
- <td class="paramname"> <em>c</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00337">337</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="afaa0193c95ade2362b9e55dc4ebeb8f3"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&gt;&gt;" ref="afaa0193c95ade2362b9e55dc4ebeb8f3" args="(bitsize_t shift) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator&gt;&gt; </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Right-shift an integer by a specified number of bits. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>shift</em>&nbsp;</td><td>The number of bits to right-shift the number.</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="fixed__integer_8hpp_source.html#l00480">480</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac13d7456ad391ce19c5b2c22c94dadf5"></a><!-- doxytag: member="boost::xint::fixed_integer::operator&gt;&gt;=" ref="ac13d7456ad391ce19c5b2c22c94dadf5" args="(bitsize_t shift)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator&gt;&gt;= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afaa0193c95ade2362b9e55dc4ebeb8f3">fixed_integer::operator&gt;&gt;(bitsize_t) const </a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00496">496</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad568affeea647ef91d0de1d88cc76192"></a><!-- doxytag: member="boost::xint::fixed_integer::operator^=" ref="ad568affeea647ef91d0de1d88cc76192" args="(const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator^= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">operator^(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00462">462</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2272dbf43c92ce1f56d5f0618a137425"></a><!-- doxytag: member="boost::xint::fixed_integer::operator|=" ref="a2272dbf43c92ce1f56d5f0618a137425" args="(const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator|= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">operator|(fixed_integer, fixed_integer)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00453">453</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2e924b61df38e812c682f86e540f37d6"></a><!-- doxytag: member="boost::xint::fixed_integer::operator~" ref="a2e924b61df38e812c682f86e540f37d6" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::operator~ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The Bitwise Ones' Complement (i.e. bitwise NOT) operator. </p>
-<p>This operator does not exist in the integer and nothrow_integer classes, because as their lengths are not limited, it would result in an infinitely long number. </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00357">357</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac4928defd092ad3f30af55e0a221bd90"></a><!-- doxytag: member="boost::xint::fixed_integer::pow2" ref="ac4928defd092ad3f30af55e0a221bd90" args="(size_t exponent)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::pow2 </td>
- <td>(</td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>exponent</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of 2<sup>e</sup> <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>exponent</em>&nbsp;</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>exponent</code>.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. It is also more efficient than using bit-shifting or the <code>pow</code> function to get the same result. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00527">527</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="afe0884583cdf8c3a60dc3fd35fa40a31"></a><!-- doxytag: member="boost::xint::fixed_integer::random_by_size" ref="afe0884583cdf8c3a60dc3fd35fa40a31" args="(Type &amp;gen, bitsize_t size_in_bits, bool high_bit_on=false, bool low_bit_on=false, bool can_be_negative=false)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;class Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::random_by_size </td>
- <td>(</td>
- <td class="paramtype">Type &amp;&nbsp;</td>
- <td class="paramname"> <em>gen</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>size_in_bits</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>high_bit_on</em> = <code>false</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>low_bit_on</em> = <code>false</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>can_be_negative</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Generates a random integer with specific attributes. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>gen</em>&nbsp;</td><td>The random number generator to use. This can be <a class="el" href="classboost_1_1xint_1_1default__random__generator.html" title="A convenience class for general-purpose (insecure) random numbers.">boost::xint::default_random_generator</a>, <a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f" title="A convenience class for cryptographically-secure random numbers.">boost::xint::strong_random_generator</a>, or any other class that supplies the member functions required by the Boost.Random random number generators. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size_in_bits</em>&nbsp;</td><td>The maximum number of bits that you want the returned number to have. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>high_bit_on</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>low_bit_on</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>can_be_negative</em>&nbsp;</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="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00544">544</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7215f0327bf6d96d27f3ea805657e64c"></a><!-- doxytag: member="boost::xint::fixed_integer::random_prime" ref="a7215f0327bf6d96d27f3ea805657e64c" args="(Type &amp;gen, bitsize_t size_in_bits, callback_t callback=no_callback)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;class Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::random_prime </td>
- <td>(</td>
- <td class="paramtype">Type &amp;&nbsp;</td>
- <td class="paramname"> <em>gen</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>size_in_bits</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>&nbsp;</td>
- <td class="paramname"> <em>callback</em> = <code><a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a></code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Generate a randomly-generated prime number of a particular bit-size. <ul>
-<li>Complexity: Varies</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>gen</em>&nbsp;</td><td>The random number generator to use. This can be <a class="el" href="classboost_1_1xint_1_1default__random__generator.html" title="A convenience class for general-purpose (insecure) random numbers.">boost::xint::default_random_generator</a>, <a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f" title="A convenience class for cryptographically-secure random numbers.">boost::xint::strong_random_generator</a>, or any other class that supplies the member functions required by the Boost.Random random number generators. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size_in_bits</em>&nbsp;</td><td>The number of bits that you want the returned value to have. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>callback</em>&nbsp;</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>&nbsp;</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#a0f70e8b365600e14df023c83435a56ff">xint::is_prime</a>. See the description of it for details of its limitations.</dd></dl>
-<dl class="user"><dt><b></b></dt><dd>See the <a class="el" href="random.html">Random Number Functions page</a> for details on 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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00559">559</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8ee6b3914e05703471fde2057226ddb3"></a><!-- doxytag: member="boost::xint::fixed_integer::sign" ref="a8ee6b3914e05703471fde2057226ddb3" args="(bool signed_zero=false) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">int <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;&gt;::sign </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>signed_zero</em> = <code>false</code></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tests the sign of <code>*this</code>. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>signed_zero</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00515">515</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1fixed__integer.png
==============================================================================
Binary file. No diff available.

Modified: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t-members.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,7 +27,6 @@
 </div>
 <div class="contents">
 <h1>boost::xint::integer_t&lt;&gt; Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">_swap</a>(integer_t &amp;s)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">divide_t</a> typedef</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">factorial</a>(size_t n)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
@@ -38,10 +37,12 @@
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#afc116db2b62cc68eb9b82ceb904ea187">integer_t</a>(const char *str, char **endptr, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a75d00d3e27a38ecbf666eaa6fa6aaf5a">integer_t</a>(const std::string &amp;str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e">integer_t</a>(const xint::binary_t b, bitsize_t bits=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#af942496633d24b7121682a6fda401b8d">integer_t</a>(const any_integer &amp;other, bool force_thread_safety=false)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#afcc80aaf55194eca5926d7a6d52489f0">integer_t</a>(const integer_t&lt; other &gt; &amp;other, bool force_thread_safety=false)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#ad159c2201f2cf1e1de1988cc41f8b4eb">integer_t</a>(const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790">is_even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5">is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">is_odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1">nan</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">operator!</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">operator%=</a>(const integer_t b)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">operator&amp;=</a>(const integer_t n)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
@@ -65,13 +66,13 @@
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">operator&gt;&gt;=</a>(bitsize_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">operator^=</a>(const integer_t n)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">operator|=</a>(const integer_t n)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#ad0328a5852615d76af78e99dbde3adc1">operator~</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">pow2</a>(size_t exponent)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2">random_by_size</a>(Type &amp;gen, bitsize_t size_in_bits, bool high_bit_on=false, bool low_bit_on=false, bool can_be_negative=false)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">random_prime</a>(Type &amp;gen, bitsize_t size_in_bits, callback_t callback=no_callback)</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">sign</a>(bool signed_zero=false) const </td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">type</a> typedef</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classboost_1_1xint_1_1integer__t.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t.html (original)
+++ sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,33 +28,22 @@
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::integer_t&lt;&gt; Class Template Reference</h1><!-- doxytag: class="boost::xint::integer_t" --><!-- doxytag: inherits="boost::xint::any_integer" -->
+<h1>boost::xint::integer_t&lt;&gt; Class Template Reference</h1><!-- doxytag: class="boost::xint::integer_t" -->
 <p>The <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> class template.
 <a href="#_details">More...</a></p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::integer_t&lt;&gt;:</div>
-<div class="dynsection">
- <div class="center">
- <img src="classboost_1_1xint_1_1integer__t.png" usemap="#boost::xint::integer_t&lt;&gt;_map" alt=""/>
- <map id="boost::xint::integer_t&lt;&gt;_map" name="boost::xint::integer_t&lt;&gt;_map">
-<area href="classboost_1_1xint_1_1any__integer.html" alt="boost::xint::any_integer" shape="rect" coords="0,0,140,24"/>
-</map>
- </div>
-</div>
 
 <p>List of all members.</p>
 <table border="0" cellpadding="0" cellspacing="0">
 <tr><td colspan="2"><h2>Public Types</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a>&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">divide_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">type</a></td></tr>
 <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">_swap</a> (<a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;s)</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Constructors &amp; 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="memTemplParams" colspan="2">template&lt;typename Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ad159c2201f2cf1e1de1988cc41f8b4eb">integer_t</a> (const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a> *=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#af942496633d24b7121682a6fda401b8d">integer_t</a> (const <a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a> &amp;other, bool force_thread_safety=false)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ad159c2201f2cf1e1de1988cc41f8b4eb">integer_t</a> (const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::type *=0)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#afcc80aaf55194eca5926d7a6d52489f0">integer_t</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&lt; other &gt; &amp;other, bool force_thread_safety=false)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e">integer_t</a> (const <a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a> b, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits=0)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a portable binary representation of a number into an integer. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a75d00d3e27a38ecbf666eaa6fa6aaf5a">integer_t</a> (const std::string &amp;str, size_t base=10)</td></tr>
@@ -62,7 +51,7 @@
 <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#afc116db2b62cc68eb9b82ceb904ea187">integer_t</a> (const char *str, char **endptr, size_t base=10)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse an integer from a string representation. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#aabfdab7fc4cc16f776be0a7c8b886d68">integer_t</a> (const char *str, size_t base=10)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a3e00410a0d4c027e51d9377cd8e469c8">integer_t</a> (BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a>) b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a3e00410a0d4c027e51d9377cd8e469c8">integer_t</a> (BOOST_XINT_RV_REF(type) b)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a6735b1926fb31c09537fb8f2bcc243ef">integer_t</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;b, bool force_thread_safety=false)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a copy of an existing integer. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb">integer_t</a> ()</td></tr>
@@ -74,13 +63,14 @@
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells you roughly how large <code>*this</code> is. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790">is_even</a> () const </td></tr>
 <tr><td class="mdescLeft">&nbsp;</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">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5">is_nan</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests whether the object is a Not-a-Number. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">is_odd</a> () const </td></tr>
 <tr><td class="mdescLeft">&nbsp;</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">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">sign</a> (bool signed_zero=false) const </td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests the sign of <code>*this</code>. <br/></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>
+<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>
 </div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">operator!</a> () const </td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> b)</td></tr>
@@ -102,19 +92,23 @@
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">operator&lt;&lt;=</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;typename Type &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a7798d6022dd3478a10b35b094347c95f">operator=</a> (const Type n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">operator=</a> (BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a>) c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">operator=</a> (BOOST_XINT_COPY_ASSIGN_REF(<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a>) c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">operator=</a> (BOOST_XINT_RV_REF(type) c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">operator=</a> (BOOST_XINT_COPY_ASSIGN_REF(type) c)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8">operator&gt;&gt;</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) const </td></tr>
 <tr><td class="mdescLeft">&nbsp;</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"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">operator&gt;&gt;=</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#ad0328a5852615d76af78e99dbde3adc1">operator~</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Bitwise Ones' Complement (i.e. bitwise NOT) operator. <br/></td></tr>
 <tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Static Member Functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa31d6da946887ed6180c9a44a76c862f"></a> These are functions that return an <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a>, but don't take one as a parameter. To use them as free functions, you would have to specify the return type anyway, so I made them static member functions of the type instead. </p>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa31d6da946887ed6180c9a44a76c862f"></a> These are functions that return an <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a>, but don't take one as a parameter. To use them as free functions, you would have to specify the return type anyway, so they're static member functions of the type instead. </p>
 </div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">factorial</a> (size_t n)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1">nan</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a Not-a-Number value, for types that support it. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">pow2</a> (size_t exponent)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;class Type &gt; </td></tr>
@@ -131,16 +125,29 @@
 <p>The <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> class template. </p>
 <p>This class implements the standard aribitrary-length integer type.</p>
 <p>There are only a few member functions, primarily operators. Most of the functionality is implemented using standalone functions.</p>
+<p>You can specify several template parameters for the type. Most of these parameters must be specified via helper classes defined in the <code><a class="el" href="namespaceboost_1_1xint_1_1options.html" title="Options for the integer_t template are stored in this namespace.">boost::xint::options</a></code> namespace. Thanks to the magic of Boost.Parameter, you can use as few or as many as you need, and in any order. The parameters are:</p>
 <dl><dt><b>Template Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Alloc</em>&nbsp;</td><td>The allocator to use. It must be for the <code>boost::xint::detail::digit_t</code> type.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Threadsafe</em>&nbsp;</td><td>If <code>true</code>, the library ensures that each object has its own unique storage before returning it. If <code>false</code>, identical objects are allowed to share storage using a copy-on-write design, potentially increasing the speed of the library, but making it unsafe for multithreaded use (with <a class="el" href="threadsafe.html">some exceptions</a>). The library allows copy-on-write for internal functions regardless of this parameter, which is safe because the internal functions are single-threaded.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Secure</em>&nbsp;</td><td>If <code>true</code>, the library zeros out all memory before deallocating it, for maximum security. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fixedlength&lt;Bits&gt;</em>&nbsp;</td><td>If <code>Bits</code> is non-zero, integers of this type are <a class="el" href="fixedlength.html">fixed-length</a>, limited to the specified number of bits. If zero (the default), the integer is limited only by your system's memory.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>threadsafe&lt;T&gt;</em>&nbsp;</td><td>If <code>T</code> is <code>true</code>, the library ensures that each object has its own unique storage before returning it. If <code>false</code>, identical objects are allowed to share storage using a copy-on-write design, potentially increasing the speed of the library, but making it unsafe for multithreaded use (with <a class="el" href="threadsafe.html">some exceptions</a>). The library allows copy-on-write for internal functions regardless of this parameter, which is safe because the internal functions only use one thread at a time. Defaults to <code>true</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>secure&lt;T&gt;</em>&nbsp;</td><td>If <code>T</code> is <code>true</code>, the library zeros out all memory before deallocating it, for maximum security. Defaults to <code>false</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>nothrow&lt;T&gt;</em>&nbsp;</td><td>If <code>T</code> is <code>true</code>, then operations 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. Defaults to <code>false</code>.</td></tr>
   </table>
   </dd>
 </dl>
+<p>You can also specify an allocator, which is just passed to the <code><a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a></code> template directly. If specified, it must be for the <code>boost::xint::detail::digit_t</code> type. Defaults to <code>std::allocator&lt;digit_t&gt;</code>.</p>
+<p>Here are some examples of how to specify an integer type:</p>
+<p><code></p>
+<pre>
+ namespace xopts = <a class="el" href="namespaceboost_1_1xint_1_1options.html" title="Options for the integer_t template are stored in this namespace.">boost::xint::options</a>;
+ typedef <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">boost::xint::integer_t</a>&lt;xopts::fixedlength&lt;512&gt;,
+ xopts::secure&lt;true&gt; &gt; secureint512;
+ typedef <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">boost::xint::integer_t</a>&lt;xopts::threadsafe&lt;false&gt;,
+ my_allocator&lt;boost::xint::detail::digit_t&gt; &gt; my_integer;
+</pre><p></code></p>
+<p>Note that the <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">integer</a> and <a class="el" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4">nothrow_integer</a> types are already typedef'd for you. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00070">70</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00102">102</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 <hr/><h2>Member Typedef Documentation</h2>
 <a class="anchor" id="a1c701a8337c775e18c26759d55398b58"></a><!-- doxytag: member="boost::xint::integer_t::divide_t" ref="a1c701a8337c775e18c26759d55398b58" args="" -->
 <div class="memitem">
@@ -155,24 +162,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00146">146</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa5b251ae919e7748c4fa1568d3560e44"></a><!-- doxytag: member="boost::xint::integer_t::type" ref="aa5b251ae919e7748c4fa1568d3560e44" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00074">74</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00198">198</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -196,7 +186,7 @@
 
 <p>Creates a new integer with an initial value of zero. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00177">177</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00257">257</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -231,13 +221,13 @@
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>b</em>&nbsp;</td><td>An existing integer.</td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>Threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter.</td></tr>
   </table>
   </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_8hpp_source.html#l00192">192</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00272">272</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -250,7 +240,7 @@
         <tr>
           <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> </td>
           <td>(</td>
- <td class="paramtype">BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a>)&nbsp;</td>
+ <td class="paramtype">BOOST_XINT_RV_REF(type)&nbsp;</td>
           <td class="paramname"> <em>b</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [inline]</code></td>
@@ -259,7 +249,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00081">81</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00132">132</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -309,7 +299,7 @@
 <dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the most common way to initialize literal 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_8hpp_source.html#l00203">203</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00292">292</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -368,7 +358,7 @@
 <dl class="remark"><dt><b>Remarks:</b></dt><dd>This function is based on the <code>strtol</code> function from the standard library. Like <code>strtol</code>, it first discards any leading whitespace characters, then takes as many characters as are valid for the given <code>base</code> and interprets them as an integer. Then a pointer to the first character following the integer is stored in the object pointed by <code>endptr</code>.</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_8hpp_source.html#l00238">238</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00337">337</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -420,7 +410,7 @@
 <dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the most common way to initialize literal 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_8hpp_source.html#l00269">269</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00383">383</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -469,24 +459,26 @@
   </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#ac1c6eb0f3c5166761d81503fa68f4b78">xint::to_binary</a></dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40" title="Creates a binary representation of an integer.">xint::to_binary</a></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_8hpp_source.html#l00297">297</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<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="af942496633d24b7121682a6fda401b8d"></a><!-- doxytag: member="boost::xint::integer_t::integer_t" ref="af942496633d24b7121682a6fda401b8d" args="(const any_integer &amp;other, bool force_thread_safety=false)" -->
+<a class="anchor" id="afcc80aaf55194eca5926d7a6d52489f0"></a><!-- doxytag: member="boost::xint::integer_t::integer_t" ref="afcc80aaf55194eca5926d7a6d52489f0" args="(const integer_t&lt; other &gt; &amp;other, bool force_thread_safety=false)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
+<div class="memtemplate">
+template&lt;... &gt; </div>
       <table class="memname">
         <tr>
           <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> </td>
           <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>c</em>, </td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&lt; other &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -503,17 +495,17 @@
 </div>
 <div class="memdoc">
 <p>Constructs a new integer object from an existing integer object.</p>
-<p>Converts any existing <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a>, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">fixed_integer</a>, or nothrow_integer object to this type.</p>
+<p>Converts any existing <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> object to this type.</p>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>c</em>&nbsp;</td><td>An existing integer.</td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>Threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter. This parameter isn't really necessary on this version of the constructor, because objects of different types aren't allowed to share storage; it's here only for signature compatibility with the same-type copy constructor.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>b</em>&nbsp;</td><td>An existing integer.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter.</td></tr>
   </table>
   </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_8hpp_source.html#l00320">320</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00444">444</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -534,7 +526,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a> *&nbsp;</td>
+ <td class="paramtype">typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::type *&nbsp;</td>
           <td class="paramname"> = <code>0</code></td><td>&nbsp;</td>
         </tr>
         <tr>
@@ -561,33 +553,11 @@
 <p>You can ignore the <code>enable_if</code> parameter, it's there only to tell the compiler what types the function 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="integer_8hpp_source.html#l00340">340</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00479">479</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="a27556439782519a285b917f5c75f5619"></a><!-- doxytag: member="boost::xint::integer_t::_swap" ref="a27556439782519a285b917f5c75f5619" args="(integer_t &amp;s)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::_swap </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&lt;&gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>s</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00165">165</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
 <a class="anchor" id="a6f3a91f5162f991ce61e9f925817129d"></a><!-- doxytag: member="boost::xint::integer_t::factorial" ref="a6f3a91f5162f991ce61e9f925817129d" args="(size_t n)" -->
 <div class="memitem">
 <div class="memproto">
@@ -617,9 +587,9 @@
   </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>
+<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 on an unlimited-size integer and with a large parameter, is the easiest way to exhaust the system's memory. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00617">617</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01074">1074</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -644,9 +614,9 @@
 <ul>
 <li>Complexity: O(1)</li>
 </ul>
-<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>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The number of hexadecimal digits that would be required to encode <code>this</code>. The nothrow&lt;true&gt; version returns zero instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00579">579</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01015">1015</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -671,9 +641,38 @@
 <ul>
 <li>Complexity: O(1)</li>
 </ul>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>. The nothrow&lt;true&gt; version returns false instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00957">957</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9afdf728b490f4fea0f6bd4805e96bd5"></a><!-- doxytag: member="boost::xint::integer_t::is_nan" ref="a9afdf728b490f4fea0f6bd4805e96bd5" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;... &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::is_nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests whether the object is a Not-a-Number. </p>
+<ul>
+<li>Complexity: O(1)</li>
+</ul>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is a Not-a-Number value, 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>
+<dl class="note"><dt><b>Note:</b></dt><dd>This will always return <code>false</code> on any type where the <code>nothrow</code> template parameter is <code>false</code>. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00551">551</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00978">978</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -698,9 +697,38 @@
 <ul>
 <li>Complexity: O(1)</li>
 </ul>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>. The nothrow&lt;true&gt; version returns false instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00940">940</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a49eff434d2a1f0729d7757e6349fd2c1"></a><!-- doxytag: member="boost::xint::integer_t::nan" ref="a49eff434d2a1f0729d7757e6349fd2c1" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;... &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns a Not-a-Number value, for types that support it. </p>
+<ul>
+<li>Complexity: O(1)</li>
+</ul>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A Not-a-Number value of the specified type.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If called on a type that does not support Not-a-Number values (i.e. any type whose <code>nothrow</code> template parameter is <code>false</code>), it will throw a <code>not_a_number</code> exception.</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="integer_8hpp_source.html#l00540">540</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01106">1106</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -721,7 +749,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00113">113</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00163">163</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -744,7 +772,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%(integer_t, integer_t)</a> </dd></dl>
 
-<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>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00658">658</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -767,7 +795,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3" title="Combine two integers using a bitwise AND operation.">operator&amp;(integer_t, integer_t)</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00462">462</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00774">774</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -790,7 +818,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455" title="Calculate the product of two integers.">operator*(integer_t, integer_t)</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00389">389</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00614">614</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -811,7 +839,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00116">116</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00166">166</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -832,7 +860,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00115">115</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00165">165</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -859,7 +887,7 @@
 </ul>
 <p>This is not recommended. It must make a copy before incrementing the <code>*this</code> object, making it noticeably less efficient than the preincrement operator. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00442">442</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00730">730</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -884,7 +912,7 @@
 <li>Complexity: amortized O(1) </li>
 </ul>
 
-<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>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00683">683</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -907,7 +935,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915" title="Calculate the sum of two integers.">operator+(integer_t, integer_t)</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00371">371</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00570">570</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -934,7 +962,7 @@
 </ul>
 <dl class="return"><dt><b>Returns:</b></dt><dd><code>*this</code> with the sign reversed. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00364">364</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00549">549</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -961,7 +989,7 @@
 </ul>
 <p>This is not recommended. It must make a copy before decrementing the <code>*this</code> object, making it noticeably less efficient than the predecrement operator. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00455">455</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00755">755</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -986,7 +1014,7 @@
 <li>Complexity: amortized O(1) </li>
 </ul>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00429">429</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00705">705</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1009,7 +1037,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27" title="Calculate the difference between two integers.">operator-(integer_t, integer_t)</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00380">380</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00592">592</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1032,7 +1060,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21" title="Calculate how many dividends would fit into divisor.">operator/(integer_t, integer_t)</a> </dd></dl>
 
-<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>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00636">636</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1066,7 +1094,7 @@
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00496">496</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00847">847</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1089,7 +1117,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd>operator&lt;&lt;(integer_t, integer_t) </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00521">521</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00896">896</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1113,7 +1141,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00110">110</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00160">160</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1126,7 +1154,7 @@
         <tr>
           <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&amp; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::operator= </td>
           <td>(</td>
- <td class="paramtype">BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a>)&nbsp;</td>
+ <td class="paramtype">BOOST_XINT_RV_REF(type)&nbsp;</td>
           <td class="paramname"> <em>c</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [inline]</code></td>
@@ -1135,7 +1163,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00108">108</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00158">158</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1148,7 +1176,7 @@
         <tr>
           <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::operator= </td>
           <td>(</td>
- <td class="paramtype">BOOST_XINT_COPY_ASSIGN_REF(<a class="el" href="classboost_1_1xint_1_1integer__t.html">type</a>)&nbsp;</td>
+ <td class="paramtype">BOOST_XINT_COPY_ASSIGN_REF(type)&nbsp;</td>
           <td class="paramname"> <em>c</em></td>
           <td>&nbsp;)&nbsp;</td>
           <td><code> [inline]</code></td>
@@ -1157,7 +1185,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00350">350</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00497">497</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1191,7 +1219,7 @@
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00512">512</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00875">875</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1214,7 +1242,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd>operator&gt;&gt;(integer_t, integer_t) </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00528">528</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00915">915</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1237,7 +1265,7 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025" title="Combine two integers using a bitwise XOR operation.">operator^(integer_t, integer_t)</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00480">480</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00818">818</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1260,7 +1288,34 @@
 <div class="memdoc">
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075" title="Combine two integers using a bitwise OR operation.">operator|(integer_t, integer_t)</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00471">471</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00796">796</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad0328a5852615d76af78e99dbde3adc1"></a><!-- doxytag: member="boost::xint::integer_t::operator~" ref="ad0328a5852615d76af78e99dbde3adc1" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;... &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t</a>&lt;&gt;::operator~ </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const<code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The Bitwise Ones' Complement (i.e. bitwise NOT) operator. </p>
+<ul>
+<li>Complexity: O(n)</li>
+</ul>
+<p>Note that this operator is only useful with fixed-size integers. If used with a variable-size integer, it will throw a <code>too_big</code> exception, because a proper implementation would result in an infinitely long number. </p>
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00525">525</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1295,7 +1350,7 @@
 <dl class="return"><dt><b>Returns:</b></dt><dd>2 to the power of <code>exponent</code>.</dd></dl>
 <dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. It is also more efficient than using bit-shifting or the <code>pow</code> function to get the same result. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00597">597</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01042">1042</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1363,7 +1418,7 @@
 <dl class="return"><dt><b>Returns:</b></dt><dd>A random integer with the requested attributes.</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></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00647">647</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01140">1140</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1421,11 +1476,11 @@
   </table>
   </dd>
 </dl>
-<dl class="note"><dt><b>Note:</b></dt><dd>This function uses <a class="el" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">xint::is_prime</a>. See the description of it for details of its limitations.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function uses <a class="el" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4" title="Tests an integer for primality.">xint::is_prime</a>. See the description of it for details of its limitations.</dd></dl>
 <dl class="user"><dt><b></b></dt><dd>See the <a class="el" href="random.html">Random Number Functions page</a> for details on 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>Definition at line <a class="el" href="integer_8hpp_source.html#l00688">688</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01186">1186</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1457,9 +1512,9 @@
   </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>
+<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. The nothrow&lt;true&gt; version returns zero instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00567">567</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00994">994</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -1467,7 +1522,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1integer__t.png
==============================================================================
Binary file. No diff available.

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,82 +0,0 @@
-<!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>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_t&lt;&gt; Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a2ff82a3986a4282910ea24d7e4f1da92">_nan_text</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">_swap</a>(nothrow_integer_t &amp;s)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a79eabe8735d1d487b39b4a69fbbe1e15">divide_t</a> typedef</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a1696a934f6dbcd3b5798f0b2d15f7283">factorial</a>(size_t n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a3f3d0b7be14b9a5858ac76302341e573">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aacf756407b2a37dfeec01c9e2d2baa55">is_even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aca45de2a1ab27699462dac63e47bc365">is_odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab3042e9b301c19ffed851b7a5bd35bc9">nothrow_integer_t</a>(const nothrow_integer_t &amp;b, bool force_thread_safety=false)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a7a9cf97c8ede54a22c7bd795f198dd42">nothrow_integer_t</a>(BOOST_XINT_RV_REF(type) b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a629c04b77763ee8ea795e031acf27765">nothrow_integer_t</a>(const char *str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a11a60ea239406b72d02e06a5034d056e">nothrow_integer_t</a>(const char *str, char **endptr, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a6032b171cf7fb29a9b58a77409126f20">nothrow_integer_t</a>(const std::string &amp;str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a227b5762857ac8b81a0ee4a1306060b8">nothrow_integer_t</a>(const xint::binary_t b, bitsize_t bits=0)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a097fd64e54708327f2392f5dd77b8031">nothrow_integer_t</a>(const any_integer &amp;other, bool force_thread_safety=false)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae91d394b346d787de41053bdbc565393">nothrow_integer_t</a>(const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a5ece8a816c760032dfbc2ec44853e608">operator!</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a4c05efc7570c68cf66097250a89983e3">operator%=</a>(const nothrow_integer_t b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#abdf888c46a80cd3ff27ce3cb7b1c926b">operator&amp;=</a>(const nothrow_integer_t n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#af385460d651cf5e55f1b98163157e542">operator*=</a>(const nothrow_integer_t b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a533d61d717d6c2776cd01f9953a40434">operator+</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a67f958af92a0a6eca7226cbc5d29212e">operator+</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab2c4f32b023d5993cac190f2d3b04d75">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0e5e783b5be631e256b1d3e5ba7af901">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0f789839445460824a6a9e0ae09438e9">operator+=</a>(const nothrow_integer_t b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ad432f2c0daa6aea3f416cf5f8c666a77">operator-</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a545623af583e6db95648e439136487a8">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a90da75f97d39014691268b338b74a801">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a9cf2199722b2ae7b84b13df8f25e30bb">operator-=</a>(const nothrow_integer_t b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa9e0d7a3b1c6468ddb6cafd8310cce33">operator/=</a>(const nothrow_integer_t b)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a337f26edac632e711f7636179c7905f4">operator&lt;&lt;</a>(bitsize_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0fbb396ca3e90adeb21af98101e6ca64">operator&lt;&lt;=</a>(bitsize_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae211b395180df8b906af6894ec2437ee">operator=</a>(BOOST_XINT_COPY_ASSIGN_REF(type) c)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acf7984f96e96e094cebc84945af84237">operator=</a>(BOOST_XINT_RV_REF(type) c)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a201e483d7d4c1e8abb23b129bf732278">operator=</a>(const Type n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a210d46fc5a4b686e403cf7aedfcc5674">operator&gt;&gt;</a>(bitsize_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a842db03f81eb40dbd2861379bbcb6f58">operator&gt;&gt;=</a>(bitsize_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97fb50e03fc95bace0ab7eb3390ef20b">operator^=</a>(const nothrow_integer_t n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97d99c9fdf91ac89641a7899fbb44f0f">operator|=</a>(const nothrow_integer_t n)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acd0fb55952130128a3fe7b2bf27c999a">operator~</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0c102b1fea546c819b8269d72548f93c">pow2</a>(size_t exponent)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0de2e10bd4405b0cb8700345425c52f1">random_by_size</a>(Type &amp;gen, bitsize_t size_in_bits, bool high_bit_on=false, bool low_bit_on=false, bool can_be_negative=false)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a72339e1215826ce74e3013c48d06598a">random_prime</a>(Type &amp;gen, bitsize_t size_in_bits, callback_t callback=no_callback)</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a19ed49ed07a32317aa3b57410908bfe3">sign</a>(bool signed_zero=false) const </td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">type</a> typedef</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td><td></td></tr>
-</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,1524 +0,0 @@
-<!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_t&lt;&gt; 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>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__t.html">nothrow_integer_t</a>
- </div>
-</div>
-<div class="contents">
-<h1>boost::xint::nothrow_integer_t&lt;&gt; Class Template Reference</h1><!-- doxytag: class="boost::xint::nothrow_integer_t" --><!-- doxytag: inherits="boost::xint::any_integer" -->
-<p>The nothrow_integer_t class template.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::nothrow_integer_t&lt;&gt;:</div>
-<div class="dynsection">
- <div class="center">
- <img src="classboost_1_1xint_1_1nothrow__integer__t.png" usemap="#boost::xint::nothrow_integer_t&lt;&gt;_map" alt=""/>
- <map id="boost::xint::nothrow_integer_t&lt;&gt;_map" name="boost::xint::nothrow_integer_t&lt;&gt;_map">
-<area href="classboost_1_1xint_1_1any__integer.html" alt="boost::xint::any_integer" shape="rect" coords="0,0,188,24"/>
-</map>
- </div>
-</div>
-
-<p>List of all members.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td colspan="2"><h2>Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a><br class="typebreak"/>
-&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a79eabe8735d1d487b39b4a69fbbe1e15">divide_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">type</a></td></tr>
-<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">_swap</a> (<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;s)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Constructors &amp; 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="memTemplParams" colspan="2">template&lt;typename Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae91d394b346d787de41053bdbc565393">nothrow_integer_t</a> (const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a> *=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a097fd64e54708327f2392f5dd77b8031">nothrow_integer_t</a> (const <a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a> &amp;other, bool force_thread_safety=false)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a227b5762857ac8b81a0ee4a1306060b8">nothrow_integer_t</a> (const <a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a> b, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits=0)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a6032b171cf7fb29a9b58a77409126f20">nothrow_integer_t</a> (const std::string &amp;str, size_t base=10)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a11a60ea239406b72d02e06a5034d056e">nothrow_integer_t</a> (const char *str, char **endptr, size_t base=10)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a629c04b77763ee8ea795e031acf27765">nothrow_integer_t</a> (const char *str, size_t base=10)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a7a9cf97c8ede54a22c7bd795f198dd42">nothrow_integer_t</a> (BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a>) b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab3042e9b301c19ffed851b7a5bd35bc9">nothrow_integer_t</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;b, bool force_thread_safety=false)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a> ()</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">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a3f3d0b7be14b9a5858ac76302341e573">hex_digits</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aacf756407b2a37dfeec01c9e2d2baa55">is_even</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aca45de2a1ab27699462dac63e47bc365">is_odd</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a19ed49ed07a32317aa3b57410908bfe3">sign</a> (bool signed_zero=false) const </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>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a5ece8a816c760032dfbc2ec44853e608">operator!</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a4c05efc7570c68cf66097250a89983e3">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#abdf888c46a80cd3ff27ce3cb7b1c926b">operator&amp;=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#af385460d651cf5e55f1b98163157e542">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a67f958af92a0a6eca7226cbc5d29212e">operator+</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a533d61d717d6c2776cd01f9953a40434">operator+</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0e5e783b5be631e256b1d3e5ba7af901">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab2c4f32b023d5993cac190f2d3b04d75">operator++</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0f789839445460824a6a9e0ae09438e9">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ad432f2c0daa6aea3f416cf5f8c666a77">operator-</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a90da75f97d39014691268b338b74a801">operator--</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a545623af583e6db95648e439136487a8">operator--</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a9cf2199722b2ae7b84b13df8f25e30bb">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa9e0d7a3b1c6468ddb6cafd8310cce33">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a337f26edac632e711f7636179c7905f4">operator&lt;&lt;</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0fbb396ca3e90adeb21af98101e6ca64">operator&lt;&lt;=</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a201e483d7d4c1e8abb23b129bf732278">operator=</a> (const Type n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acf7984f96e96e094cebc84945af84237">operator=</a> (BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a>) c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae211b395180df8b906af6894ec2437ee">operator=</a> (BOOST_XINT_COPY_ASSIGN_REF(<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a>) c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a210d46fc5a4b686e403cf7aedfcc5674">operator&gt;&gt;</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a842db03f81eb40dbd2861379bbcb6f58">operator&gt;&gt;=</a> (<a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97fb50e03fc95bace0ab7eb3390ef20b">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97d99c9fdf91ac89641a7899fbb44f0f">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acd0fb55952130128a3fe7b2bf27c999a">operator~</a> () const </td></tr>
-<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a2ff82a3986a4282910ea24d7e4f1da92">_nan_text</a> ()</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Static Member Functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa31d6da946887ed6180c9a44a76c862f"></a> These are functions that return a <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">nothrow_integer_t</a>, but don't take one as a parameter. To use them as free functions, you would have to specify the return type anyway, so I made them static member functions of the type instead. </p>
-</div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a1696a934f6dbcd3b5798f0b2d15f7283">factorial</a> (size_t n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0c102b1fea546c819b8269d72548f93c">pow2</a> (size_t exponent)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;class Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0de2e10bd4405b0cb8700345425c52f1">random_by_size</a> (Type &amp;gen, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, bool high_bit_on=false, bool low_bit_on=false, bool can_be_negative=false)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;class Type &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a72339e1215826ce74e3013c48d06598a">random_prime</a> (Type &amp;gen, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;...&gt;<br/>
- class boost::xint::nothrow_integer_t&lt;&gt;</h3>
-
-<p>The nothrow_integer_t class template. </p>
-<p>Operations 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>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Alloc</em>&nbsp;</td><td>The allocator to use. It must be for the <code>boost::xint::detail::digit_t</code> type.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Threadsafe</em>&nbsp;</td><td>If <code>true</code>, the library ensures that each object has its own unique storage before returning it. If <code>false</code>, identical objects are allowed to share storage using a copy-on-write design, potentially increasing the speed of the library, but making it unsafe for multithreaded use (with <a class="el" href="threadsafe.html">some exceptions</a>). The library allows copy-on-write for internal functions regardless of this parameter, which is safe because the internal functions are single-threaded.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Secure</em>&nbsp;</td><td>If <code>true</code>, the library zeros out all memory before deallocating it, for maximum security. </td></tr>
- </table>
- </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00074">74</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a79eabe8735d1d487b39b4a69fbbe1e15"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::divide_t" ref="a79eabe8735d1d487b39b4a69fbbe1e15" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a>&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &gt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1base__divide__t.html">divide_t</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00153">153</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a303b5898b723e7ea7aae736edebf9ba6"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::type" ref="a303b5898b723e7ea7aae736edebf9ba6" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00078">78</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="aa6bb6d3a98f05b84f3d03e0b574dc88f"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="aa6bb6d3a98f05b84f3d03e0b574dc88f" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></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_8hpp_source.html#l00191">191</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab3042e9b301c19ffed851b7a5bd35bc9"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="ab3042e9b301c19ffed851b7a5bd35bc9" args="(const nothrow_integer_t &amp;b, bool force_thread_safety=false)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>b</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>force_thread_safety</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></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>&nbsp;</td><td valign="top"><em>b</em>&nbsp;</td><td>An existing integer.</td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>Threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter.</td></tr>
- </table>
- </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_8hpp_source.html#l00197">197</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7a9cf97c8ede54a22c7bd795f198dd42"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="a7a9cf97c8ede54a22c7bd795f198dd42" args="(BOOST_XINT_RV_REF(type) b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a>)&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</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#l00085">85</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a629c04b77763ee8ea795e031acf27765"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="a629c04b77763ee8ea795e031acf27765" args="(const char *str, size_t base=10)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Create an integer from a string representation. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>str</em>&nbsp;</td><td>A string representation of a number. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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><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>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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>&nbsp;</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 most common way to initialize literal 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_8hpp_source.html#l00213">213</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a11a60ea239406b72d02e06a5034d056e"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="a11a60ea239406b72d02e06a5034d056e" args="(const char *str, char **endptr, size_t base=10)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">const char *&nbsp;</td>
- <td class="paramname"> <em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">char **&nbsp;</td>
- <td class="paramname"> <em>endptr</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Parse an integer from a string representation. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>str</em>&nbsp;</td><td>A string representation of a number. </td></tr>
- <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>endptr</em>&nbsp;</td><td>When the function returns, this will contain a pointer to the first character after the parsed integer. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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><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>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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>&nbsp;</td><td>if there are no valid digits before the first invalid character.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function is based on the <code>strtol</code> function from the standard library. Like <code>strtol</code>, it first discards any leading whitespace characters, then takes as many characters as are valid for the given <code>base</code> and interprets them as an integer. Then a pointer to the first character following the integer is stored in the object pointed by <code>endptr</code>.</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_8hpp_source.html#l00225">225</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6032b171cf7fb29a9b58a77409126f20"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="a6032b171cf7fb29a9b58a77409126f20" args="(const std::string &amp;str, size_t base=10)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">const std::string &amp;&nbsp;</td>
- <td class="paramname"> <em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Create an integer from a string representation. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>str</em>&nbsp;</td><td>A string representation of a number. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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><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>&nbsp;</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" title="A value that can be used for the &#39;base&#39; parameter of the string-to-integer...">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>&nbsp;</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 most common way to initialize literal 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_8hpp_source.html#l00237">237</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a227b5762857ac8b81a0ee4a1306060b8"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="a227b5762857ac8b81a0ee4a1306060b8" args="(const xint::binary_t b, bitsize_t bits=0)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a>&nbsp;</td>
- <td class="paramname"> <em>b</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>bits</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Converts a portable binary representation of a number into an integer. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>b</em>&nbsp;</td><td>An <code><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a></code> containing the bytes to convert, lowest byte first. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bits</em>&nbsp;</td><td>The number of bits packed into each character (for portability with systems that might not have characters with the same number of bits), or zero (the default) to assume the number of bits in the current system's unsigned character type.</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__argument.html">exceptions::invalid_argument</a></em>&nbsp;</td><td>if <code>bits</code> is greater than the number of bits in an unsigned character.</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#ac1c6eb0f3c5166761d81503fa68f4b78">xint::to_binary</a></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_8hpp_source.html#l00249">249</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a097fd64e54708327f2392f5dd77b8031"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="a097fd64e54708327f2392f5dd77b8031" args="(const any_integer &amp;other, bool force_thread_safety=false)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a> &amp;&nbsp;</td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>force_thread_safety</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Constructs a new integer object from an existing integer object.Converts any existing <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a>, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">fixed_integer</a>, or nothrow_integer object to this type.<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>c</em>&nbsp;</td><td>An existing integer.</td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>force_thread_safety</em>&nbsp;</td><td>If the <code>Threadsafe</code> template parameter is <code>false</code>, you can use this to make a thread-safe copy anyway. See <a class="el" href="threadsafe.html">this page</a> for a full treatment of the matter. This parameter isn't really necessary on this version of the constructor, because objects of different types aren't allowed to share storage; it's here only for signature compatibility with the same-type copy constructor.</td></tr>
- </table>
- </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_8hpp_source.html#l00261">261</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae91d394b346d787de41053bdbc565393"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nothrow_integer_t" ref="ae91d394b346d787de41053bdbc565393" args="(const Type n, typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::type *=0)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> </td>
- <td>(</td>
- <td class="paramtype">const Type&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename boost::enable_if&lt; boost::is_integral&lt; Type &gt; &gt;::<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a> *&nbsp;</td>
- <td class="paramname"> = <code>0</code></td><td>&nbsp;</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 integer object with the value of the built-in integer type 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>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The value for the new object. </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>Type</em>&nbsp;</td><td>The type of <code>n</code>.</td></tr>
- </table>
- </dd>
-</dl>
-<p>You can ignore the <code>enable_if</code> parameter, it's there only to tell the compiler what types the function 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#l00288">288</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="a2ff82a3986a4282910ea24d7e4f1da92"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::_nan_text" ref="a2ff82a3986a4282910ea24d7e4f1da92" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static std::string <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::_nan_text </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00175">175</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab55e40317f0aac0702fb2d66dcb9e535"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::_swap" ref="ab55e40317f0aac0702fb2d66dcb9e535" args="(nothrow_integer_t &amp;s)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::_swap </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>s</em></td>
- <td>&nbsp;)&nbsp;</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#l00173">173</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1696a934f6dbcd3b5798f0b2d15f7283"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::factorial" ref="a1696a934f6dbcd3b5798f0b2d15f7283" args="(size_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::factorial </td>
- <td>(</td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of <code>n!</code> <ul>
-<li>Complexity: O(n<sup>3</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00603">603</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3f3d0b7be14b9a5858ac76302341e573"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::hex_digits" ref="a3f3d0b7be14b9a5858ac76302341e573" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">size_t <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::hex_digits </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tells you roughly how large <code>*this</code> is. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<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>
-<p>Returns zero instead of throwing. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00581">581</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aacf756407b2a37dfeec01c9e2d2baa55"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::is_even" ref="aacf756407b2a37dfeec01c9e2d2baa55" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::is_even </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tests the lowest bit of <code>*this</code> to determine evenness. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<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>
-<p>Returns false instead of throwing. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00555">555</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaa77f6a448a26fb1e326101f00d964ba"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::is_nan" ref="aaa77f6a448a26fb1e326101f00d964ba" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::is_nan </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00148">148</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aca45de2a1ab27699462dac63e47bc365"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::is_odd" ref="aca45de2a1ab27699462dac63e47bc365" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::is_odd </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tests the lowest bit of <code>*this</code> to determine oddness. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<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>
-<p>Returns false instead of throwing. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00542">542</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0ae44add69e94e0caaf48d44b4feb019"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::nan" ref="a0ae44add69e94e0caaf48d44b4feb019" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::nan </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00165">165</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5ece8a816c760032dfbc2ec44853e608"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator!" ref="a5ece8a816c760032dfbc2ec44853e608" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator! </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00118">118</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4c05efc7570c68cf66097250a89983e3"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator%=" ref="a4c05efc7570c68cf66097250a89983e3" args="(const nothrow_integer_t b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator%= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#ad7e11b62950cda48aa1e8288f0f49bb1">operator%(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<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="abdf888c46a80cd3ff27ce3cb7b1c926b"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&amp;=" ref="abdf888c46a80cd3ff27ce3cb7b1c926b" args="(const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator&amp;= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a91a76dbe5320a452f31966aae35da0bc">operator&amp;(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00443">443</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af385460d651cf5e55f1b98163157e542"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator*=" ref="af385460d651cf5e55f1b98163157e542" args="(const nothrow_integer_t b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator*= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#ac8008de156c89f46eb421eb4a60fb90f">operator*(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<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>
-
-</div>
-</div>
-<a class="anchor" id="a67f958af92a0a6eca7226cbc5d29212e"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator+" ref="a67f958af92a0a6eca7226cbc5d29212e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator+ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00121">121</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a533d61d717d6c2776cd01f9953a40434"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator+" ref="a533d61d717d6c2776cd01f9953a40434" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator+ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l00120">120</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0e5e783b5be631e256b1d3e5ba7af901"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator++" ref="a0e5e783b5be631e256b1d3e5ba7af901" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator++ </td>
- <td>(</td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Postincrement operator<ul>
-<li>Complexity: O(n)</li>
-</ul>
-This is not recommended. It must make a copy before incrementing the <code>*this</code> object, making it noticeably less efficient than the preincrement operator. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00419">419</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab2c4f32b023d5993cac190f2d3b04d75"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator++" ref="ab2c4f32b023d5993cac190f2d3b04d75" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator++ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Preincrement operator<ul>
-<li>Complexity: amortized O(1) </li>
-</ul>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00397">397</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0f789839445460824a6a9e0ae09438e9"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator+=" ref="a0f789839445460824a6a9e0ae09438e9" args="(const nothrow_integer_t b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a3cb9c9351c4150e9b7f028cdf26e380b">operator+(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00327">327</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad432f2c0daa6aea3f416cf5f8c666a77"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&#45;" ref="ad432f2c0daa6aea3f416cf5f8c666a77" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator- </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Return the additive inverse of an integer. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl class="return"><dt><b>Returns:</b></dt><dd><code>*this</code> with the sign reversed. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00315">315</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a90da75f97d39014691268b338b74a801"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&#45;&#45;" ref="a90da75f97d39014691268b338b74a801" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator-- </td>
- <td>(</td>
- <td class="paramtype">int&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Postdecrement operator<ul>
-<li>Complexity: O(n)</li>
-</ul>
-This is not recommended. It must make a copy before decrementing the <code>*this</code> object, making it noticeably less efficient than the predecrement operator. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00431">431</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a545623af583e6db95648e439136487a8"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&#45;&#45;" ref="a545623af583e6db95648e439136487a8" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator-- </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Predecrement operator<ul>
-<li>Complexity: amortized O(1) </li>
-</ul>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00408">408</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9cf2199722b2ae7b84b13df8f25e30bb"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&#45;=" ref="a9cf2199722b2ae7b84b13df8f25e30bb" args="(const nothrow_integer_t b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a1d5c865ffc91a6b29fc95e3cbd87e753">operator-(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00341">341</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa9e0d7a3b1c6468ddb6cafd8310cce33"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator/=" ref="aa9e0d7a3b1c6468ddb6cafd8310cce33" args="(const nothrow_integer_t b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator/= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>b</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#aef07a1b59c017d367cd8f129601d317f">operator/(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<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="a337f26edac632e711f7636179c7905f4"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&lt;&lt;" ref="a337f26edac632e711f7636179c7905f4" args="(bitsize_t shift) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator&lt;&lt; </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Left-shift an integer by a specified number of bits. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>shift</em>&nbsp;</td><td>The number of bits to left-shift the number.</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="nothrow__integer_8hpp_source.html#l00485">485</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0fbb396ca3e90adeb21af98101e6ca64"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&lt;&lt;=" ref="a0fbb396ca3e90adeb21af98101e6ca64" args="(bitsize_t shift)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator&lt;&lt;= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a337f26edac632e711f7636179c7905f4">nothrow_integer_t::operator&lt;&lt;(bitsize_t) const </a> </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00513">513</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a201e483d7d4c1e8abb23b129bf732278"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator=" ref="a201e483d7d4c1e8abb23b129bf732278" args="(const Type n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;typename Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">const Type&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</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#l00115">115</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="acf7984f96e96e094cebc84945af84237"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator=" ref="acf7984f96e96e094cebc84945af84237" args="(BOOST_XINT_RV_REF(type) c)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">BOOST_XINT_RV_REF(<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a>)&nbsp;</td>
- <td class="paramname"> <em>c</em></td>
- <td>&nbsp;)&nbsp;</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#l00113">113</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae211b395180df8b906af6894ec2437ee"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator=" ref="ae211b395180df8b906af6894ec2437ee" args="(BOOST_XINT_COPY_ASSIGN_REF(type) c)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator= </td>
- <td>(</td>
- <td class="paramtype">BOOST_XINT_COPY_ASSIGN_REF(<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">type</a>)&nbsp;</td>
- <td class="paramname"> <em>c</em></td>
- <td>&nbsp;)&nbsp;</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#l00301">301</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a210d46fc5a4b686e403cf7aedfcc5674"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&gt;&gt;" ref="a210d46fc5a4b686e403cf7aedfcc5674" args="(bitsize_t shift) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator&gt;&gt; </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Right-shift an integer by a specified number of bits. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>shift</em>&nbsp;</td><td>The number of bits to right-shift the number.</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="nothrow__integer_8hpp_source.html#l00499">499</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a842db03f81eb40dbd2861379bbcb6f58"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator&gt;&gt;=" ref="a842db03f81eb40dbd2861379bbcb6f58" args="(bitsize_t shift)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator&gt;&gt;= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>shift</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a210d46fc5a4b686e403cf7aedfcc5674">nothrow_integer_t::operator&gt;&gt;(bitsize_t) const </a> </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00526">526</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a97fb50e03fc95bace0ab7eb3390ef20b"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator^=" ref="a97fb50e03fc95bace0ab7eb3390ef20b" args="(const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator^= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a6b65ed6783e91563d65410aa4e526a99">operator^(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00471">471</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a97d99c9fdf91ac89641a7899fbb44f0f"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator|=" ref="a97d99c9fdf91ac89641a7899fbb44f0f" args="(const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator|= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&lt;&gt;&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#ace07b7c6d63117b14903f785b8d2276d">operator|(nothrow_integer_t, nothrow_integer_t)</a> </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00457">457</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="acd0fb55952130128a3fe7b2bf27c999a"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::operator~" ref="acd0fb55952130128a3fe7b2bf27c999a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::operator~ </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0c102b1fea546c819b8269d72548f93c"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::pow2" ref="a0c102b1fea546c819b8269d72548f93c" args="(size_t exponent)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::pow2 </td>
- <td>(</td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>exponent</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of 2<sup>e</sup> <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>exponent</em>&nbsp;</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>exponent</code>.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. It is also more efficient than using bit-shifting or the <code>pow</code> function to get the same result. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00591">591</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0de2e10bd4405b0cb8700345425c52f1"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::random_by_size" ref="a0de2e10bd4405b0cb8700345425c52f1" args="(Type &amp;gen, bitsize_t size_in_bits, bool high_bit_on=false, bool low_bit_on=false, bool can_be_negative=false)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;class Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::random_by_size </td>
- <td>(</td>
- <td class="paramtype">Type &amp;&nbsp;</td>
- <td class="paramname"> <em>gen</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>size_in_bits</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>high_bit_on</em> = <code>false</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>low_bit_on</em> = <code>false</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>can_be_negative</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Generates a random integer with specific attributes. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>gen</em>&nbsp;</td><td>The random number generator to use. This can be <a class="el" href="classboost_1_1xint_1_1default__random__generator.html" title="A convenience class for general-purpose (insecure) random numbers.">boost::xint::default_random_generator</a>, <a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f" title="A convenience class for cryptographically-secure random numbers.">boost::xint::strong_random_generator</a>, or any other class that supplies the member functions required by the Boost.Random random number generators. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size_in_bits</em>&nbsp;</td><td>The maximum number of bits that you want the returned number to have. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>high_bit_on</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>low_bit_on</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>can_be_negative</em>&nbsp;</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="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00616">616</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a72339e1215826ce74e3013c48d06598a"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::random_prime" ref="a72339e1215826ce74e3013c48d06598a" args="(Type &amp;gen, bitsize_t size_in_bits, callback_t callback=no_callback)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
-<div class="memtemplate">
-template&lt;class Type &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::random_prime </td>
- <td>(</td>
- <td class="paramtype">Type &amp;&nbsp;</td>
- <td class="paramname"> <em>gen</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td>
- <td class="paramname"> <em>size_in_bits</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>&nbsp;</td>
- <td class="paramname"> <em>callback</em> = <code><a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a></code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Generate a randomly-generated prime number of a particular bit-size. <ul>
-<li>Complexity: Varies</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>gen</em>&nbsp;</td><td>The random number generator to use. This can be <a class="el" href="classboost_1_1xint_1_1default__random__generator.html" title="A convenience class for general-purpose (insecure) random numbers.">boost::xint::default_random_generator</a>, <a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f" title="A convenience class for cryptographically-secure random numbers.">boost::xint::strong_random_generator</a>, or any other class that supplies the member functions required by the Boost.Random random number generators. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>size_in_bits</em>&nbsp;</td><td>The number of bits that you want the returned value to have. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>callback</em>&nbsp;</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>&nbsp;</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#a0f70e8b365600e14df023c83435a56ff">xint::is_prime</a>. See the description of it for details of its limitations.</dd></dl>
-<dl class="user"><dt><b></b></dt><dd>See the <a class="el" href="random.html">Random Number Functions page</a> for details on 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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00635">635</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a19ed49ed07a32317aa3b57410908bfe3"></a><!-- doxytag: member="boost::xint::nothrow_integer_t::sign" ref="a19ed49ed07a32317aa3b57410908bfe3" args="(bool signed_zero=false) const " -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">int <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t</a>&lt;&gt;::sign </td>
- <td>(</td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>signed_zero</em> = <code>false</code></td>
- <td>&nbsp;)&nbsp;</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Tests the sign of <code>*this</code>. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>signed_zero</em>&nbsp;</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>
-<p>Returns zero instead of throwing. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00568">568</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1nothrow__integer__t.png
==============================================================================
Binary file. No diff available.

Modified: sandbox/xint/libs/xint/doc/classdisable__boost__rv__ref.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classdisable__boost__rv__ref.html (original)
+++ sandbox/xint/libs/xint/doc/classdisable__boost__rv__ref.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -33,12 +33,12 @@
  class disable_boost_rv_ref&lt; T &gt;</h3>
 
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00050">50</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00059">59</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+<li>detail/<a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/classes.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classes.html (original)
+++ sandbox/xint/libs/xint/doc/classes.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -26,20 +26,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_O">O</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a></div>
+<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_O">O</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<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_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;A&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+<tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;B&nbsp;&nbsp;</div></td></tr></table>
+</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>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1secure.html">secure</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nb
sp;</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">nothrow</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">secure_base</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength.html">fixedlength</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">nothrow_base</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">fixedlength_base</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;O&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe.html">threadsafe</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
 </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;I&nbsp;&nbsp;</div></td></tr></table>
 </td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;N&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">numeric_limits&lt; boost::xint::nothrow_integer &gt;</a> (<a class="el" href="namespacestd.html">std</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">default_random_generator</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_O"></
a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;O&nbsp;&nbsp;</div></td></tr></table>
-</td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;B&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.h
tml">divide_by_zero</a> (<a class="el" href="namespaceboost_1_1xint_1_1exceptions.html">boost::xint::exceptions</a>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</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">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
-</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
-</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">numeric_limits&lt; boost::xint::fixed_integer &gt;</a> (<a class="el" href="namespacestd.html">std</a>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint<
/a>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">numeric_limits&lt; boost::xint::integer &gt;</a> (<a class="el" href="namespacestd.html">std</a>)&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_O">O</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a></div>
+</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>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">threadsafe_base</a> (<a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">default_random_generator</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</t
d><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</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>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_O">O</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a></div>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,65 +0,0 @@
-<!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>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&lt; boost::xint::fixed_integer &gt; Member List</h1>This is the complete list of members for <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9f7aca6f0d6b52862d1e4c5933a027b8">denorm_min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#acf887056335bbd57afd0059306a6375d">digits</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#aa121103a2fc350f2e47160d35f32b1b0">digits10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a8beefaed017232ca942faff10ae80290">epsilon</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a5dcb484140996dff95c4b3ccc37aa1ba">has_denorm</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a35fae9645e74075b58b2056e59f4ac09">has_denorm_loss</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a275e529b9fa9708cf1f614817aca6c99">has_infinity</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#aede8f82c675954031a17f4be2e1ff50e">has_quiet_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a4fc09940b572fcd4a80d4d35830ff650">has_signaling_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a022ff0b37f3179a432c14191f130610a">infinity</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a1c7ee1191e9fc33b86e28220a24a2f09">is_bounded</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#ae77708834538e2a799fb26210b504398">is_exact</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#aab6aebabb045e55b046da38742c84197">is_iec559</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#aed61b7e5627cb539565683d6403d124e">is_integer</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a1524d587221768a9e892b101b26f2ec0">is_modulo</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a80ac38d7f50e43c53ba2aa9cf788f768">is_signed</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#ad5bba760dc7f45a1a40816c677274994">is_specialized</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#aa570803d0924801fc9a83a8d988f6fda">max</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a595ca04bcc4cb7a854577b7d139d34a6">max_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#ab958fd6af1edf41bbb4e2f10e74f7b52">max_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a7c876009ccd074c50ac68d5364a6927e">min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#ae6f471a9a94780c51abaddc53391f9c8">min_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#af7637a8b294a27481c288f463513b65c">min_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a3dd7bc373d24691c24975911db3492d3">quiet_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a73abfda3e959624708bff2584a3569e5">radix</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a9950b392347455ca66c3208eef631c54">round_error</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a49c51ada0c19e47aa5cb8dc00d536fbd">round_style</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a12af0ae0ec77f10f4a631b3a842dfd84">signaling_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a777c2bc8e871fae3f5f0ae35c2f74ce9">tinyness_before</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#aac313a7cb59649e80b2b8c4e93871c00">traps</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a></td><td><code> [static]</code></td></tr>
-</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,625 +0,0 @@
-<!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&lt; boost::xint::fixed_integer &gt; 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>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_1fixed__integer_01_4.html">numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
- </div>
-</div>
-<div class="contents">
-<h1>std::numeric_limits&lt; boost::xint::fixed_integer &gt; Class Template Reference</h1><!-- doxytag: class="std::numeric_limits&lt; boost::xint::fixed_integer &gt;" -->
-<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_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9f7aca6f0d6b52862d1e4c5933a027b8">denorm_min</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a8beefaed017232ca942faff10ae80290">epsilon</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a022ff0b37f3179a432c14191f130610a">infinity</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa570803d0924801fc9a83a8d988f6fda">max</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a7c876009ccd074c50ac68d5364a6927e">min</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a3dd7bc373d24691c24975911db3492d3">quiet_NaN</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9950b392347455ca66c3208eef631c54">round_error</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a12af0ae0ec77f10f4a631b3a842dfd84">signaling_NaN</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 int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#acf887056335bbd57afd0059306a6375d">digits</a> = Bits</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa121103a2fc350f2e47160d35f32b1b0">digits10</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const float_denorm_style&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a5dcb484140996dff95c4b3ccc37aa1ba">has_denorm</a> = denorm_absent</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a35fae9645e74075b58b2056e59f4ac09">has_denorm_loss</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a275e529b9fa9708cf1f614817aca6c99">has_infinity</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aede8f82c675954031a17f4be2e1ff50e">has_quiet_NaN</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a4fc09940b572fcd4a80d4d35830ff650">has_signaling_NaN</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1c7ee1191e9fc33b86e28220a24a2f09">is_bounded</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae77708834538e2a799fb26210b504398">is_exact</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aab6aebabb045e55b046da38742c84197">is_iec559</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aed61b7e5627cb539565683d6403d124e">is_integer</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1524d587221768a9e892b101b26f2ec0">is_modulo</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a80ac38d7f50e43c53ba2aa9cf788f768">is_signed</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ad5bba760dc7f45a1a40816c677274994">is_specialized</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a595ca04bcc4cb7a854577b7d139d34a6">max_exponent</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ab958fd6af1edf41bbb4e2f10e74f7b52">max_exponent10</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae6f471a9a94780c51abaddc53391f9c8">min_exponent</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#af7637a8b294a27481c288f463513b65c">min_exponent10</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a73abfda3e959624708bff2584a3569e5">radix</a> = 2</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const float_round_style&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a49c51ada0c19e47aa5cb8dc00d536fbd">round_style</a> = round_indeterminate</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a777c2bc8e871fae3f5f0ae35c2f74ce9">tinyness_before</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aac313a7cb59649e80b2b8c4e93871c00">traps</a> = true</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;...&gt;<br/>
- class std::numeric_limits&lt; boost::xint::fixed_integer &gt;</h3>
-
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00959">959</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a9f7aca6f0d6b52862d1e4c5933a027b8"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::denorm_min" ref="a9f7aca6f0d6b52862d1e4c5933a027b8" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::denorm_min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00996">996</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8beefaed017232ca942faff10ae80290"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::epsilon" ref="a8beefaed017232ca942faff10ae80290" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::epsilon </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00974">974</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a022ff0b37f3179a432c14191f130610a"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::infinity" ref="a022ff0b37f3179a432c14191f130610a" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::infinity </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00990">990</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa570803d0924801fc9a83a8d988f6fda"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::max" ref="aa570803d0924801fc9a83a8d988f6fda" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::max </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00965">965</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7c876009ccd074c50ac68d5364a6927e"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::min" ref="a7c876009ccd074c50ac68d5364a6927e" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00963">963</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3dd7bc373d24691c24975911db3492d3"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::quiet_NaN" ref="a3dd7bc373d24691c24975911db3492d3" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::quiet_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00992">992</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9950b392347455ca66c3208eef631c54"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::round_error" ref="a9950b392347455ca66c3208eef631c54" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::round_error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00975">975</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a12af0ae0ec77f10f4a631b3a842dfd84"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::signaling_NaN" ref="a12af0ae0ec77f10f4a631b3a842dfd84" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::signaling_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00994">994</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Member Data Documentation</h2>
-<a class="anchor" id="acf887056335bbd57afd0059306a6375d"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::digits" ref="acf887056335bbd57afd0059306a6375d" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#acf887056335bbd57afd0059306a6375d">digits</a> = Bits<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00968">968</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa121103a2fc350f2e47160d35f32b1b0"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::digits10" ref="aa121103a2fc350f2e47160d35f32b1b0" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa121103a2fc350f2e47160d35f32b1b0">digits10</a><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00969">969</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5dcb484140996dff95c4b3ccc37aa1ba"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::has_denorm" ref="a5dcb484140996dff95c4b3ccc37aa1ba" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const float_denorm_style std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a5dcb484140996dff95c4b3ccc37aa1ba">has_denorm</a> = denorm_absent<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00986">986</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a35fae9645e74075b58b2056e59f4ac09"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::has_denorm_loss" ref="a35fae9645e74075b58b2056e59f4ac09" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a35fae9645e74075b58b2056e59f4ac09">has_denorm_loss</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00987">987</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a275e529b9fa9708cf1f614817aca6c99"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::has_infinity" ref="a275e529b9fa9708cf1f614817aca6c99" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a275e529b9fa9708cf1f614817aca6c99">has_infinity</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00983">983</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aede8f82c675954031a17f4be2e1ff50e"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::has_quiet_NaN" ref="aede8f82c675954031a17f4be2e1ff50e" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aede8f82c675954031a17f4be2e1ff50e">has_quiet_NaN</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00984">984</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4fc09940b572fcd4a80d4d35830ff650"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::has_signaling_NaN" ref="a4fc09940b572fcd4a80d4d35830ff650" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a4fc09940b572fcd4a80d4d35830ff650">has_signaling_NaN</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00985">985</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1c7ee1191e9fc33b86e28220a24a2f09"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::is_bounded" ref="a1c7ee1191e9fc33b86e28220a24a2f09" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1c7ee1191e9fc33b86e28220a24a2f09">is_bounded</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00999">999</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae77708834538e2a799fb26210b504398"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::is_exact" ref="ae77708834538e2a799fb26210b504398" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae77708834538e2a799fb26210b504398">is_exact</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00972">972</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aab6aebabb045e55b046da38742c84197"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::is_iec559" ref="aab6aebabb045e55b046da38742c84197" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aab6aebabb045e55b046da38742c84197">is_iec559</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00998">998</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aed61b7e5627cb539565683d6403d124e"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::is_integer" ref="aed61b7e5627cb539565683d6403d124e" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aed61b7e5627cb539565683d6403d124e">is_integer</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00971">971</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1524d587221768a9e892b101b26f2ec0"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::is_modulo" ref="a1524d587221768a9e892b101b26f2ec0" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1524d587221768a9e892b101b26f2ec0">is_modulo</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01000">1000</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a80ac38d7f50e43c53ba2aa9cf788f768"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::is_signed" ref="a80ac38d7f50e43c53ba2aa9cf788f768" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a80ac38d7f50e43c53ba2aa9cf788f768">is_signed</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00970">970</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad5bba760dc7f45a1a40816c677274994"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::is_specialized" ref="ad5bba760dc7f45a1a40816c677274994" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ad5bba760dc7f45a1a40816c677274994">is_specialized</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00961">961</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a595ca04bcc4cb7a854577b7d139d34a6"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::max_exponent" ref="a595ca04bcc4cb7a854577b7d139d34a6" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a595ca04bcc4cb7a854577b7d139d34a6">max_exponent</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00980">980</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab958fd6af1edf41bbb4e2f10e74f7b52"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::max_exponent10" ref="ab958fd6af1edf41bbb4e2f10e74f7b52" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ab958fd6af1edf41bbb4e2f10e74f7b52">max_exponent10</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00981">981</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae6f471a9a94780c51abaddc53391f9c8"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::min_exponent" ref="ae6f471a9a94780c51abaddc53391f9c8" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae6f471a9a94780c51abaddc53391f9c8">min_exponent</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00978">978</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af7637a8b294a27481c288f463513b65c"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::min_exponent10" ref="af7637a8b294a27481c288f463513b65c" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#af7637a8b294a27481c288f463513b65c">min_exponent10</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00979">979</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a73abfda3e959624708bff2584a3569e5"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::radix" ref="a73abfda3e959624708bff2584a3569e5" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a73abfda3e959624708bff2584a3569e5">radix</a> = 2<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00973">973</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a49c51ada0c19e47aa5cb8dc00d536fbd"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::round_style" ref="a49c51ada0c19e47aa5cb8dc00d536fbd" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const float_round_style std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a49c51ada0c19e47aa5cb8dc00d536fbd">round_style</a> = round_indeterminate<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01004">1004</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a777c2bc8e871fae3f5f0ae35c2f74ce9"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::tinyness_before" ref="a777c2bc8e871fae3f5f0ae35c2f74ce9" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a777c2bc8e871fae3f5f0ae35c2f74ce9">tinyness_before</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01003">1003</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aac313a7cb59649e80b2b8c4e93871c00"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer &gt;::traps" ref="aac313a7cb59649e80b2b8c4e93871c00" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a> &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aac313a7cb59649e80b2b8c4e93871c00">traps</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01002">1002</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,649 +0,0 @@
-<!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&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt; 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>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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</a>
- </div>
-</div>
-<div class="contents">
-<h1>std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt; Class Template Reference</h1><!-- doxytag: class="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;" -->
-<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 <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0604547547f119851a261b0b255d1e91">denorm_min</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#ae49c0f1a1eeac611a073214ed7f26dcb">epsilon</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a65efa61da67000ed367e9786c5885552">infinity</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#aabb5d599650968e9aba2c31a3b3353ce">max</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a625bffd08904901122fff061cafb6dc5">min</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#aa9c6af79441393f9e3a456d55ae134b6">quiet_NaN</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#ac75ddd7c37e7209adf54615b3637dd8d">round_error</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a><br class="typebreak"/>
-&lt; Bits, Alloc, Threadsafe, <br class="typebreak"/>
-Secure &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a827f52f565653f18cb1356f0ad322216">signaling_NaN</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 int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a908d6564a4abca35bb8b58d53a7ad7d1">digits</a> = Bits</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#af0614b3815502e980523bf78206e5690">digits10</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const float_denorm_style&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1a83dc6b162a77cecbdd51b07629f06b">has_denorm</a> = denorm_absent</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#af7d48b53e1031f9814e4b435d5f74241">has_denorm_loss</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a833681b317257f9082bedc43857b1551">has_infinity</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a22e6fa67703025c090704d59212f4747">has_quiet_NaN</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a99a6bb181fc067a65e5de28ac3900090">has_signaling_NaN</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#adeb1a74830d1e9ad15e04ead91fc0283">is_bounded</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a56e610371247990ea541629d7e1abaf9">is_exact</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a3e623dc8801fe5bd1b4b93119ed7a5ef">is_iec559</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#ae295fd55244973426b44c9a457bf8e09">is_integer</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a681b826b9e16390b88f0132d0a454d93">is_modulo</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#aef9bcefd23483907381be58787540285">is_signed</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1a2c7da50bf565f8ebfaa4d3637b1ede">is_specialized</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0833484bcb8acc689a848196763fa009">max_exponent</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1f5bd6d449200584b9120c82122db1ae">max_exponent10</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a6d5b5eac2a2885dca4eb97db7c882f10">min_exponent</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0728799ad498a658ecba7ee6b8965337">min_exponent10</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#abef838a7e5c1075e9ecb63f326350699">radix</a> = 2</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const float_round_style&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#adec154d97effc272b05f1da15fc25f85">round_style</a> = round_indeterminate</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a59c1ae045300937dea2da27814062f8a">tinyness_before</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a21f3b893c016982f85e8ddbc7eceda4c">traps</a> = true</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;size_t Bits, class Alloc, bool Threadsafe, bool Secure&gt;<br/>
- class std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</h3>
-
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01039">1039</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a0604547547f119851a261b0b255d1e91"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::denorm_min" ref="a0604547547f119851a261b0b255d1e91" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::denorm_min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01081">1081</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae49c0f1a1eeac611a073214ed7f26dcb"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::epsilon" ref="ae49c0f1a1eeac611a073214ed7f26dcb" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::epsilon </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01058">1058</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a65efa61da67000ed367e9786c5885552"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::infinity" ref="a65efa61da67000ed367e9786c5885552" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::infinity </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01075">1075</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aabb5d599650968e9aba2c31a3b3353ce"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::max" ref="aabb5d599650968e9aba2c31a3b3353ce" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::max </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01048">1048</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a625bffd08904901122fff061cafb6dc5"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::min" ref="a625bffd08904901122fff061cafb6dc5" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01045">1045</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa9c6af79441393f9e3a456d55ae134b6"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::quiet_NaN" ref="aa9c6af79441393f9e3a456d55ae134b6" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::quiet_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01077">1077</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac75ddd7c37e7209adf54615b3637dd8d"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::round_error" ref="ac75ddd7c37e7209adf54615b3637dd8d" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::round_error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01061">1061</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a827f52f565653f18cb1356f0ad322216"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::signaling_NaN" ref="a827f52f565653f18cb1356f0ad322216" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt;Bits, Alloc, Threadsafe, Secure&gt; std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::signaling_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01079">1079</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Member Data Documentation</h2>
-<a class="anchor" id="a908d6564a4abca35bb8b58d53a7ad7d1"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::digits" ref="a908d6564a4abca35bb8b58d53a7ad7d1" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a908d6564a4abca35bb8b58d53a7ad7d1">digits</a> = Bits<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01052">1052</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af0614b3815502e980523bf78206e5690"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::digits10" ref="af0614b3815502e980523bf78206e5690" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#af0614b3815502e980523bf78206e5690">digits10</a><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01053">1053</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1a83dc6b162a77cecbdd51b07629f06b"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::has_denorm" ref="a1a83dc6b162a77cecbdd51b07629f06b" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const float_denorm_style std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1a83dc6b162a77cecbdd51b07629f06b">has_denorm</a> = denorm_absent<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01071">1071</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af7d48b53e1031f9814e4b435d5f74241"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::has_denorm_loss" ref="af7d48b53e1031f9814e4b435d5f74241" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#af7d48b53e1031f9814e4b435d5f74241">has_denorm_loss</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01072">1072</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a833681b317257f9082bedc43857b1551"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::has_infinity" ref="a833681b317257f9082bedc43857b1551" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a833681b317257f9082bedc43857b1551">has_infinity</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01068">1068</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a22e6fa67703025c090704d59212f4747"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::has_quiet_NaN" ref="a22e6fa67703025c090704d59212f4747" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a22e6fa67703025c090704d59212f4747">has_quiet_NaN</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01069">1069</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a99a6bb181fc067a65e5de28ac3900090"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::has_signaling_NaN" ref="a99a6bb181fc067a65e5de28ac3900090" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a99a6bb181fc067a65e5de28ac3900090">has_signaling_NaN</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01070">1070</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adeb1a74830d1e9ad15e04ead91fc0283"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::is_bounded" ref="adeb1a74830d1e9ad15e04ead91fc0283" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#adeb1a74830d1e9ad15e04ead91fc0283">is_bounded</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01084">1084</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a56e610371247990ea541629d7e1abaf9"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::is_exact" ref="a56e610371247990ea541629d7e1abaf9" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a56e610371247990ea541629d7e1abaf9">is_exact</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01056">1056</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3e623dc8801fe5bd1b4b93119ed7a5ef"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::is_iec559" ref="a3e623dc8801fe5bd1b4b93119ed7a5ef" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a3e623dc8801fe5bd1b4b93119ed7a5ef">is_iec559</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01083">1083</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae295fd55244973426b44c9a457bf8e09"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::is_integer" ref="ae295fd55244973426b44c9a457bf8e09" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#ae295fd55244973426b44c9a457bf8e09">is_integer</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01055">1055</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a681b826b9e16390b88f0132d0a454d93"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::is_modulo" ref="a681b826b9e16390b88f0132d0a454d93" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a681b826b9e16390b88f0132d0a454d93">is_modulo</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01085">1085</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aef9bcefd23483907381be58787540285"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::is_signed" ref="aef9bcefd23483907381be58787540285" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#aef9bcefd23483907381be58787540285">is_signed</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01054">1054</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1a2c7da50bf565f8ebfaa4d3637b1ede"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::is_specialized" ref="a1a2c7da50bf565f8ebfaa4d3637b1ede" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1a2c7da50bf565f8ebfaa4d3637b1ede">is_specialized</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01043">1043</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0833484bcb8acc689a848196763fa009"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::max_exponent" ref="a0833484bcb8acc689a848196763fa009" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0833484bcb8acc689a848196763fa009">max_exponent</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01065">1065</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1f5bd6d449200584b9120c82122db1ae"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::max_exponent10" ref="a1f5bd6d449200584b9120c82122db1ae" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1f5bd6d449200584b9120c82122db1ae">max_exponent10</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01066">1066</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6d5b5eac2a2885dca4eb97db7c882f10"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::min_exponent" ref="a6d5b5eac2a2885dca4eb97db7c882f10" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a6d5b5eac2a2885dca4eb97db7c882f10">min_exponent</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01063">1063</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0728799ad498a658ecba7ee6b8965337"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::min_exponent10" ref="a0728799ad498a658ecba7ee6b8965337" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0728799ad498a658ecba7ee6b8965337">min_exponent10</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01064">1064</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abef838a7e5c1075e9ecb63f326350699"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::radix" ref="abef838a7e5c1075e9ecb63f326350699" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#abef838a7e5c1075e9ecb63f326350699">radix</a> = 2<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01057">1057</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adec154d97effc272b05f1da15fc25f85"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::round_style" ref="adec154d97effc272b05f1da15fc25f85" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const float_round_style std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#adec154d97effc272b05f1da15fc25f85">round_style</a> = round_indeterminate<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01089">1089</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a59c1ae045300937dea2da27814062f8a"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::tinyness_before" ref="a59c1ae045300937dea2da27814062f8a" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a59c1ae045300937dea2da27814062f8a">tinyness_before</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01088">1088</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a21f3b893c016982f85e8ddbc7eceda4c"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::traps" ref="a21f3b893c016982f85e8ddbc7eceda4c" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;size_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a21f3b893c016982f85e8ddbc7eceda4c">traps</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01087">1087</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Jun 2 22:27:12 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threc5961e8032f57408bb0726e8442647e9.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threc5961e8032f57408bb0726e8442647e9.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,65 +0,0 @@
-<!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>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&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt; Member List</h1>This is the complete list of members for <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0604547547f119851a261b0b255d1e91">denorm_min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a908d6564a4abca35bb8b58d53a7ad7d1">digits</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#af0614b3815502e980523bf78206e5690">digits10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#ae49c0f1a1eeac611a073214ed7f26dcb">epsilon</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1a83dc6b162a77cecbdd51b07629f06b">has_denorm</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#af7d48b53e1031f9814e4b435d5f74241">has_denorm_loss</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a833681b317257f9082bedc43857b1551">has_infinity</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a22e6fa67703025c090704d59212f4747">has_quiet_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a99a6bb181fc067a65e5de28ac3900090">has_signaling_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a65efa61da67000ed367e9786c5885552">infinity</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#adeb1a74830d1e9ad15e04ead91fc0283">is_bounded</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a56e610371247990ea541629d7e1abaf9">is_exact</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a3e623dc8801fe5bd1b4b93119ed7a5ef">is_iec559</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#ae295fd55244973426b44c9a457bf8e09">is_integer</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a681b826b9e16390b88f0132d0a454d93">is_modulo</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#aef9bcefd23483907381be58787540285">is_signed</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1a2c7da50bf565f8ebfaa4d3637b1ede">is_specialized</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#aabb5d599650968e9aba2c31a3b3353ce">max</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0833484bcb8acc689a848196763fa009">max_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a1f5bd6d449200584b9120c82122db1ae">max_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a625bffd08904901122fff061cafb6dc5">min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a6d5b5eac2a2885dca4eb97db7c882f10">min_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a0728799ad498a658ecba7ee6b8965337">min_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#aa9c6af79441393f9e3a456d55ae134b6">quiet_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#abef838a7e5c1075e9ecb63f326350699">radix</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#ac75ddd7c37e7209adf54615b3637dd8d">round_error</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#adec154d97effc272b05f1da15fc25f85">round_style</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a827f52f565653f18cb1356f0ad322216">signaling_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a59c1ae045300937dea2da27814062f8a">tinyness_before</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</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_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html#a21f3b893c016982f85e8ddbc7eceda4c">traps</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_3_01_bits_00_01_alloc_00_01_threadsafe_00_01_secure_01_4_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer&lt; Bits, Alloc, Threadsafe, Secure &gt; &gt;</a></td><td><code> [static]</code></td></tr>
-</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Jun 2 22:27:12 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,65 +0,0 @@
-<!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>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&lt; boost::xint::fixed_integer_t &gt; Member List</h1>This is the complete list of members for <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#aa9b7afb48b08d5d2f1297a8b60148e1f">denorm_min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a3cb6bf6eb490adac8a17afddd518f575">digits</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#ac4e041afbe58bc3df6c8e0bc86cbdc7d">digits10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a61ae8872611fec28ff42618fd730728b">epsilon</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#af61a03159156465c1404cf46192ca78c">has_denorm</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a60704cf1a601b551184cb5c30bbbbf34">has_denorm_loss</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a3f8ff0f31517398be56f84234e7e28d0">has_infinity</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a880aff98766ab42b38c48cd9a3c36c0b">has_quiet_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a067ba977eade5b285c103d2b31ef158b">has_signaling_NaN</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a868dd0c0371697bd2d893e691fa0c2f0">infinity</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#af8b227c9b9b8f99a49b421f4bf090c72">is_bounded</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a677e42b352a3b80cc7130164f6e3c7fb">is_exact</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#ae10f0117109b41927a56f9cefb92f791">is_iec559</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a155fe87450eac1489be2ca9b69c4440e">is_integer</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a4bab1caba5420abf964d1c240cb8d1ad">is_modulo</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a4ff12cbdad0eaecb05c62a4224f4942c">is_signed</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#adbbd31eb7368ec445ea1ca35a916fc25">is_specialized</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#aee8309562578f8b0cda9bfd92a25588d">max</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a5b4aba5ddfd9fa51f1d4eede7995ab79">max_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a95eff601257b55d8dbe9a265b7c73817">max_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a63fb7e09bd34e027b7fa26c1310ad554">min</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#ac0399263343a171cd9e752805f26902b">min_exponent</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a6a7444271315b42a285679e604fa4cdc">min_exponent10</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a8e7abc9e38e7aad6a673f0fc61b6785e">quiet_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#ad7aa36e12756c85164a274fae39a8de1">radix</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#aa01676f44d53471b94e34fc32cd3522d">round_error</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a1392d599ac078d11371699e5ac0183e8">round_style</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#a6cf8dfe24f5266440b8984a4fd7ff6c9">signaling_NaN</a>()</td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#ae1d9b27b15d014b3998da679f2c39432">tinyness_before</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</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_1fixed__integer__t_01_4.html#ab7e4676d963a1aaa435cfd544105073f">traps</a></td><td><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</a></td><td><code> [static]</code></td></tr>
-</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Jun 2 23:00:44 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,625 +0,0 @@
-<!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&lt; boost::xint::fixed_integer_t &gt; 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>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_1fixed__integer__t_01_4.html">numeric_limits&lt; boost::xint::fixed_integer_t &gt;</a>
- </div>
-</div>
-<div class="contents">
-<h1>std::numeric_limits&lt; boost::xint::fixed_integer_t &gt; Class Template Reference</h1><!-- doxytag: class="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;" -->
-<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 boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#aa9b7afb48b08d5d2f1297a8b60148e1f">denorm_min</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a61ae8872611fec28ff42618fd730728b">epsilon</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a868dd0c0371697bd2d893e691fa0c2f0">infinity</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#aee8309562578f8b0cda9bfd92a25588d">max</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a63fb7e09bd34e027b7fa26c1310ad554">min</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a8e7abc9e38e7aad6a673f0fc61b6785e">quiet_NaN</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#aa01676f44d53471b94e34fc32cd3522d">round_error</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static boost::xint::fixed_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a6cf8dfe24f5266440b8984a4fd7ff6c9">signaling_NaN</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 int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a3cb6bf6eb490adac8a17afddd518f575">digits</a> = Bits</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ac4e041afbe58bc3df6c8e0bc86cbdc7d">digits10</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const float_denorm_style&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#af61a03159156465c1404cf46192ca78c">has_denorm</a> = denorm_absent</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a60704cf1a601b551184cb5c30bbbbf34">has_denorm_loss</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a3f8ff0f31517398be56f84234e7e28d0">has_infinity</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a880aff98766ab42b38c48cd9a3c36c0b">has_quiet_NaN</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a067ba977eade5b285c103d2b31ef158b">has_signaling_NaN</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#af8b227c9b9b8f99a49b421f4bf090c72">is_bounded</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a677e42b352a3b80cc7130164f6e3c7fb">is_exact</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ae10f0117109b41927a56f9cefb92f791">is_iec559</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a155fe87450eac1489be2ca9b69c4440e">is_integer</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a4bab1caba5420abf964d1c240cb8d1ad">is_modulo</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a4ff12cbdad0eaecb05c62a4224f4942c">is_signed</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#adbbd31eb7368ec445ea1ca35a916fc25">is_specialized</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a5b4aba5ddfd9fa51f1d4eede7995ab79">max_exponent</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a95eff601257b55d8dbe9a265b7c73817">max_exponent10</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ac0399263343a171cd9e752805f26902b">min_exponent</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a6a7444271315b42a285679e604fa4cdc">min_exponent10</a> = 0</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ad7aa36e12756c85164a274fae39a8de1">radix</a> = 2</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const float_round_style&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a1392d599ac078d11371699e5ac0183e8">round_style</a> = round_indeterminate</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ae1d9b27b15d014b3998da679f2c39432">tinyness_before</a> = false</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ab7e4676d963a1aaa435cfd544105073f">traps</a> = true</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;...&gt;<br/>
- class std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;</h3>
-
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00984">984</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa9b7afb48b08d5d2f1297a8b60148e1f"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::denorm_min" ref="aa9b7afb48b08d5d2f1297a8b60148e1f" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::denorm_min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01023">1023</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a61ae8872611fec28ff42618fd730728b"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::epsilon" ref="a61ae8872611fec28ff42618fd730728b" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::epsilon </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01000">1000</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a868dd0c0371697bd2d893e691fa0c2f0"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::infinity" ref="a868dd0c0371697bd2d893e691fa0c2f0" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::infinity </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01017">1017</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aee8309562578f8b0cda9bfd92a25588d"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::max" ref="aee8309562578f8b0cda9bfd92a25588d" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::max </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00991">991</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a63fb7e09bd34e027b7fa26c1310ad554"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::min" ref="a63fb7e09bd34e027b7fa26c1310ad554" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00989">989</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8e7abc9e38e7aad6a673f0fc61b6785e"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::quiet_NaN" ref="a8e7abc9e38e7aad6a673f0fc61b6785e" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::quiet_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01019">1019</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa01676f44d53471b94e34fc32cd3522d"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::round_error" ref="aa01676f44d53471b94e34fc32cd3522d" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::round_error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01003">1003</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6cf8dfe24f5266440b8984a4fd7ff6c9"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::signaling_NaN" ref="a6cf8dfe24f5266440b8984a4fd7ff6c9" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">static boost::xint:: fixed_integer_t std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::signaling_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01021">1021</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Member Data Documentation</h2>
-<a class="anchor" id="a3cb6bf6eb490adac8a17afddd518f575"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::digits" ref="a3cb6bf6eb490adac8a17afddd518f575" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a3cb6bf6eb490adac8a17afddd518f575">digits</a> = Bits<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00994">994</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac4e041afbe58bc3df6c8e0bc86cbdc7d"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::digits10" ref="ac4e041afbe58bc3df6c8e0bc86cbdc7d" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ac4e041afbe58bc3df6c8e0bc86cbdc7d">digits10</a><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00995">995</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af61a03159156465c1404cf46192ca78c"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::has_denorm" ref="af61a03159156465c1404cf46192ca78c" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const float_denorm_style std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#af61a03159156465c1404cf46192ca78c">has_denorm</a> = denorm_absent<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01013">1013</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a60704cf1a601b551184cb5c30bbbbf34"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::has_denorm_loss" ref="a60704cf1a601b551184cb5c30bbbbf34" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a60704cf1a601b551184cb5c30bbbbf34">has_denorm_loss</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01014">1014</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3f8ff0f31517398be56f84234e7e28d0"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::has_infinity" ref="a3f8ff0f31517398be56f84234e7e28d0" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a3f8ff0f31517398be56f84234e7e28d0">has_infinity</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01010">1010</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a880aff98766ab42b38c48cd9a3c36c0b"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::has_quiet_NaN" ref="a880aff98766ab42b38c48cd9a3c36c0b" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a880aff98766ab42b38c48cd9a3c36c0b">has_quiet_NaN</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01011">1011</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a067ba977eade5b285c103d2b31ef158b"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::has_signaling_NaN" ref="a067ba977eade5b285c103d2b31ef158b" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a067ba977eade5b285c103d2b31ef158b">has_signaling_NaN</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01012">1012</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af8b227c9b9b8f99a49b421f4bf090c72"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::is_bounded" ref="af8b227c9b9b8f99a49b421f4bf090c72" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#af8b227c9b9b8f99a49b421f4bf090c72">is_bounded</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01026">1026</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a677e42b352a3b80cc7130164f6e3c7fb"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::is_exact" ref="a677e42b352a3b80cc7130164f6e3c7fb" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a677e42b352a3b80cc7130164f6e3c7fb">is_exact</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00998">998</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae10f0117109b41927a56f9cefb92f791"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::is_iec559" ref="ae10f0117109b41927a56f9cefb92f791" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ae10f0117109b41927a56f9cefb92f791">is_iec559</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01025">1025</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a155fe87450eac1489be2ca9b69c4440e"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::is_integer" ref="a155fe87450eac1489be2ca9b69c4440e" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a155fe87450eac1489be2ca9b69c4440e">is_integer</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00997">997</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4bab1caba5420abf964d1c240cb8d1ad"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::is_modulo" ref="a4bab1caba5420abf964d1c240cb8d1ad" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a4bab1caba5420abf964d1c240cb8d1ad">is_modulo</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01027">1027</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4ff12cbdad0eaecb05c62a4224f4942c"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::is_signed" ref="a4ff12cbdad0eaecb05c62a4224f4942c" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a4ff12cbdad0eaecb05c62a4224f4942c">is_signed</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00996">996</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adbbd31eb7368ec445ea1ca35a916fc25"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::is_specialized" ref="adbbd31eb7368ec445ea1ca35a916fc25" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#adbbd31eb7368ec445ea1ca35a916fc25">is_specialized</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00987">987</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5b4aba5ddfd9fa51f1d4eede7995ab79"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::max_exponent" ref="a5b4aba5ddfd9fa51f1d4eede7995ab79" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a5b4aba5ddfd9fa51f1d4eede7995ab79">max_exponent</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01007">1007</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a95eff601257b55d8dbe9a265b7c73817"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::max_exponent10" ref="a95eff601257b55d8dbe9a265b7c73817" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a95eff601257b55d8dbe9a265b7c73817">max_exponent10</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01008">1008</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac0399263343a171cd9e752805f26902b"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::min_exponent" ref="ac0399263343a171cd9e752805f26902b" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ac0399263343a171cd9e752805f26902b">min_exponent</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01005">1005</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6a7444271315b42a285679e604fa4cdc"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::min_exponent10" ref="a6a7444271315b42a285679e604fa4cdc" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a6a7444271315b42a285679e604fa4cdc">min_exponent10</a> = 0<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01006">1006</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad7aa36e12756c85164a274fae39a8de1"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::radix" ref="ad7aa36e12756c85164a274fae39a8de1" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ad7aa36e12756c85164a274fae39a8de1">radix</a> = 2<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00999">999</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1392d599ac078d11371699e5ac0183e8"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::round_style" ref="a1392d599ac078d11371699e5ac0183e8" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const float_round_style std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#a1392d599ac078d11371699e5ac0183e8">round_style</a> = round_indeterminate<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01031">1031</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae1d9b27b15d014b3998da679f2c39432"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::tinyness_before" ref="ae1d9b27b15d014b3998da679f2c39432" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ae1d9b27b15d014b3998da679f2c39432">tinyness_before</a> = false<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01030">1030</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab7e4676d963a1aaa435cfd544105073f"></a><!-- doxytag: member="std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::traps" ref="ab7e4676d963a1aaa435cfd544105073f" args="" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; boost::xint::fixed_integer_t &gt;::<a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer__t_01_4.html#ab7e4676d963a1aaa435cfd544105073f">traps</a> = true<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l01029">1029</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Jun 2 23:00:44 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,65 +0,0 @@
-<!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>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&lt; boost::xint::integer &gt; 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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</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&lt; boost::xint::integer &gt;</a></td><td><code> [static]</code></td></tr>
-</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,565 +0,0 @@
-<!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&lt; boost::xint::integer &gt; 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>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&lt; boost::xint::integer &gt;</a>
- </div>
-</div>
-<div class="contents">
-<h1>std::numeric_limits&lt; boost::xint::integer &gt; Class Template Reference</h1><!-- doxytag: class="std::numeric_limits&lt; boost::xint::integer &gt;" -->
-<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__t.html">boost::xint::integer</a>&nbsp;</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 class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a>&nbsp;</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__t.html">boost::xint::integer</a>&nbsp;</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__t.html">boost::xint::integer</a>&nbsp;</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__t.html">boost::xint::integer</a>&nbsp;</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__t.html">boost::xint::integer</a>&nbsp;</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__t.html">boost::xint::integer</a>&nbsp;</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__t.html">boost::xint::integer</a>&nbsp;</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 colspan="2"><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</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&nbsp;</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 float_denorm_style&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 bool&nbsp;</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&nbsp;</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 bool&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 int&nbsp;</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&nbsp;</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&nbsp;</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 float_round_style&nbsp;</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>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</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 bool&nbsp;</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>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;&gt;<br/>
- class std::numeric_limits&lt; boost::xint::integer &gt;</h3>
-
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01466">1466</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::denorm_min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01496">1496</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::epsilon </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01479">1479</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::infinity </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01493">1493</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::max </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01471">1471</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01470">1470</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::quiet_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01494">1494</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::round_error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01480">1480</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&lt; boost::xint::integer &gt;::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__t.html">boost::xint::integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::signaling_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01495">1495</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&lt; boost::xint::integer &gt;::digits" ref="ad2b6d99afd7e533fe7bb39675c50f4d8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01473">1473</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&lt; boost::xint::integer &gt;::digits10" ref="a59c21d55527213fb2638618f986a5a23" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01474">1474</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&lt; boost::xint::integer &gt;::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&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01490">1490</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&lt; boost::xint::integer &gt;::has_denorm_loss" ref="a16c5bbfdae90e62a46d9d604a615d071" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01491">1491</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&lt; boost::xint::integer &gt;::has_infinity" ref="afc2b5e56fb2057c2459180219491d930" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01487">1487</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&lt; boost::xint::integer &gt;::has_quiet_NaN" ref="a4349ec37234b540226385641b57849c4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01488">1488</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&lt; boost::xint::integer &gt;::has_signaling_NaN" ref="aaa2f2d54b32c5c675a012b64d5b03302" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01489">1489</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&lt; boost::xint::integer &gt;::is_bounded" ref="aaa3d9b178e56460ba4701baf6044a6e1" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01499">1499</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&lt; boost::xint::integer &gt;::is_exact" ref="af14e06e3d92f0642f1936ed2f789fe62" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01477">1477</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&lt; boost::xint::integer &gt;::is_iec559" ref="aa29c196c9fdae93c3c7ebc2bdcde118e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01498">1498</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&lt; boost::xint::integer &gt;::is_integer" ref="a0a0ca82b32be38bd2b1129678c29a367" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01476">1476</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&lt; boost::xint::integer &gt;::is_modulo" ref="a88b83cf94dbe0c5d665c0da31384373b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01500">1500</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&lt; boost::xint::integer &gt;::is_signed" ref="ab805f71787e27a6a760a1158eed67604" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01475">1475</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&lt; boost::xint::integer &gt;::is_specialized" ref="a797b5572e1defb2e54824d8f93757b70" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01468">1468</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&lt; boost::xint::integer &gt;::max_exponent" ref="a552090a8e12558fd5514176fb8b203c3" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01484">1484</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&lt; boost::xint::integer &gt;::max_exponent10" ref="abcd8e2fb1e04a51fc5747603515cf497" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01485">1485</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&lt; boost::xint::integer &gt;::min_exponent" ref="ad0d8fd556c393bf63f2525a4a494fcf7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01482">1482</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&lt; boost::xint::integer &gt;::min_exponent10" ref="a8b75c7ee1e29fdfc3a8d51386ed4389d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01483">1483</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&lt; boost::xint::integer &gt;::radix" ref="a14cba561a014bdaad371f21e8471e9f6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01478">1478</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&lt; boost::xint::integer &gt;::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&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01504">1504</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&lt; boost::xint::integer &gt;::tinyness_before" ref="a6f43a2e1dcba42a7cf73a1a4323ed931" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01503">1503</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&lt; boost::xint::integer &gt;::traps" ref="ad469dddd16a7ba6fed9e88c969a5faa6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer</a> &gt;::<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#l01502">1502</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4-members.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4-members.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,65 +0,0 @@
-<!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>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&lt; boost::xint::nothrow_integer &gt; 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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</a></td><td><code> [static]</code></td></tr>
-</table></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html
==============================================================================
--- sandbox/xint/libs/xint/doc/classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,565 +0,0 @@
-<!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&lt; boost::xint::nothrow_integer &gt; 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>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&lt; boost::xint::nothrow_integer &gt;</a>
- </div>
-</div>
-<div class="contents">
-<h1>std::numeric_limits&lt; boost::xint::nothrow_integer &gt; Class Template Reference</h1><!-- doxytag: class="std::numeric_limits&lt; boost::xint::nothrow_integer &gt;" -->
-<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__t.html">boost::xint::nothrow_integer</a>&nbsp;</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 class="memItemLeft" align="right" valign="top">static <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a>&nbsp;</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__t.html">boost::xint::nothrow_integer</a>&nbsp;</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__t.html">boost::xint::nothrow_integer</a>&nbsp;</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__t.html">boost::xint::nothrow_integer</a>&nbsp;</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__t.html">boost::xint::nothrow_integer</a>&nbsp;</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__t.html">boost::xint::nothrow_integer</a>&nbsp;</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__t.html">boost::xint::nothrow_integer</a>&nbsp;</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 colspan="2"><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const int&nbsp;</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&nbsp;</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 float_denorm_style&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 bool&nbsp;</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&nbsp;</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 bool&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 int&nbsp;</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&nbsp;</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&nbsp;</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 float_round_style&nbsp;</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>
-<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</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 bool&nbsp;</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>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template&lt;&gt;<br/>
- class std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</h3>
-
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01309">1309</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::denorm_min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01340">1340</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::epsilon </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01322">1322</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::infinity </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01336">1336</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::max </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01314">1314</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::min </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01313">1313</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::quiet_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01337">1337</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::round_error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01323">1323</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&lt; boost::xint::nothrow_integer &gt;::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__t.html">boost::xint::nothrow_integer</a> std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::signaling_NaN </td>
- <td>(</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</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#l01339">1339</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&lt; boost::xint::nothrow_integer &gt;::digits" ref="a8db85ce6bfd29378cd5b054ffa9dcc73" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01316">1316</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&lt; boost::xint::nothrow_integer &gt;::digits10" ref="a635a92c394110e24ad5446906d32dbac" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01317">1317</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&lt; boost::xint::nothrow_integer &gt;::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&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01333">1333</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&lt; boost::xint::nothrow_integer &gt;::has_denorm_loss" ref="addb4eee85c09f7e5395e67c918671d05" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01334">1334</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&lt; boost::xint::nothrow_integer &gt;::has_infinity" ref="af2f45b256a4e7ad9f6304e0f743400ec" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01330">1330</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&lt; boost::xint::nothrow_integer &gt;::has_quiet_NaN" ref="aae261d33d81d7ce984a045e96b46f962" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01331">1331</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&lt; boost::xint::nothrow_integer &gt;::has_signaling_NaN" ref="a49ff05bed05568f4a4ddf0b3d25e5980" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01332">1332</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&lt; boost::xint::nothrow_integer &gt;::is_bounded" ref="a53d8df36b3487d8eb3e923c6729edf21" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01343">1343</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&lt; boost::xint::nothrow_integer &gt;::is_exact" ref="a7349047386bb539ab5a714b5864f8b2b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01320">1320</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&lt; boost::xint::nothrow_integer &gt;::is_iec559" ref="abea02c5396ab75990b17946fb8e9aa9b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01342">1342</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&lt; boost::xint::nothrow_integer &gt;::is_integer" ref="ab6e1b183e5175d71bf9e4d6df54aef0a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01319">1319</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&lt; boost::xint::nothrow_integer &gt;::is_modulo" ref="a3a65bc9e353e0a09aeb1b35384d65f40" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01344">1344</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&lt; boost::xint::nothrow_integer &gt;::is_signed" ref="a54b78ebfa3ddfc7b348487936aca5a69" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01318">1318</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&lt; boost::xint::nothrow_integer &gt;::is_specialized" ref="ad75c31bcf281bc3d61fcaa86f5d637a4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01311">1311</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&lt; boost::xint::nothrow_integer &gt;::max_exponent" ref="a5159625bece286f452e9b2b86e94b8d5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01327">1327</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&lt; boost::xint::nothrow_integer &gt;::max_exponent10" ref="a6a63de06c48db492872f44521d52d300" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01328">1328</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&lt; boost::xint::nothrow_integer &gt;::min_exponent" ref="ae0fa48cc50faee763bb27126f48fd16c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01325">1325</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&lt; boost::xint::nothrow_integer &gt;::min_exponent10" ref="aede69004d06de1fcf6a0a4d7fc601a5d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01326">1326</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&lt; boost::xint::nothrow_integer &gt;::radix" ref="adae12b63475b14d19128eee60c665c5c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const int std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01321">1321</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&lt; boost::xint::nothrow_integer &gt;::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&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01348">1348</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&lt; boost::xint::nothrow_integer &gt;::tinyness_before" ref="a2cb05a6ce2f537c0be893bb3260fb186" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01347">1347</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&lt; boost::xint::nothrow_integer &gt;::traps" ref="a9d18eb71d6bad51653de3f58f62d5f47" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool std::numeric_limits&lt; <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a> &gt;::<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#l01346">1346</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/compare_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/compare_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/compare.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>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>detail/compare.cpp File Reference</h1>
-<p>Contains the definitions for the comparison functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the comparison functions. </p>
-<p>This file will be included by the library itself when needed. </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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/compare_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/compare_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,124 +0,0 @@
-<!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: detail/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>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>detail/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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<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 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00032"></a>00032 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(<span class="keyword">const</span> digit_t *b1, <span class="keyword">const</span> digit_t *b2, <span class="keywordtype">size_t</span> len,
-<a name="l00033"></a>00033 <span class="keywordtype">bool</span> equal_only)
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">const</span> detail::digit_t *b1i = b1 + len, *b2i = b2 + len;
-<a name="l00036"></a>00036 <span class="keywordflow">if</span> (equal_only) {
-<a name="l00037"></a>00037 <span class="comment">// If we only care whether it&#39;s equal or not, we&#39;ll start from the</span>
-<a name="l00038"></a>00038 <span class="comment">// lowest digit instead of the highest, on the assumption that it&#39;s more</span>
-<a name="l00039"></a>00039 <span class="comment">// likely to be different.</span>
-<a name="l00040"></a>00040 <span class="keywordflow">while</span> (b1 &lt; b1i) <span class="keywordflow">if</span> (*b1++ != *b2++) <span class="keywordflow">return</span> 1;
-<a name="l00041"></a>00041 } <span class="keywordflow">else</span> {
-<a name="l00042"></a>00042 <span class="keywordflow">while</span> (b1i &gt; b1)
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (*(--b1i) != *(--b2i))
-<a name="l00044"></a>00044 <span class="keywordflow">return</span> ((*b1i &lt; *b2i) ? -1 : 1);
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046 <span class="keywordflow">return</span> 0; <span class="comment">// They&#39;re identical.</span>
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048
-<a name="l00050"></a>00050 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(<span class="keyword">const</span> data_t b1, <span class="keyword">const</span> data_t b2, <span class="keywordtype">bool</span> ignoresign)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="keywordtype">bool</span> invert_answer=<span class="keyword">false</span>;
-<a name="l00053"></a>00053 <span class="keywordflow">if</span> (!ignoresign) {
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (b1.is_zero()) {
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (b2.is_zero()) <span class="keywordflow">return</span> 0;
-<a name="l00056"></a>00056 <span class="keywordflow">return</span> (b2.negative ? 1 : -1);
-<a name="l00057"></a>00057 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (b2.is_zero()) {
-<a name="l00058"></a>00058 <span class="keywordflow">return</span> (b1.negative ? -1 : 1);
-<a name="l00059"></a>00059 } <span class="keywordflow">else</span> {
-<a name="l00060"></a>00060 <span class="keywordflow">if</span> (b1.negative != b2.negative) <span class="keywordflow">return</span> (b1.negative ? -1 : 1);
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (b1.negative) invert_answer=<span class="keyword">true</span>;
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keywordtype">int</span> answer = 0;
-<a name="l00066"></a>00066 <span class="keywordflow">if</span> (b1.length != b2.length) {
-<a name="l00067"></a>00067 answer = ((b1.length &lt; b2.length) ? -1 : 1);
-<a name="l00068"></a>00068 } <span class="keywordflow">else</span> {
-<a name="l00069"></a>00069 answer = <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(b1.digits(), b2.digits(), b1.length, <span class="keyword">false</span>);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> (invert_answer ? -answer : answer);
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00076"></a>00076 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">int</span> compare_eq(<span class="keyword">const</span> data_t b1, <span class="keyword">const</span> data_t b2) {
-<a name="l00077"></a>00077 <span class="keywordflow">if</span> (b1.negative != b2.negative) {
-<a name="l00078"></a>00078 <span class="comment">// Have to test for is_zero here, because in some rare cases, negative</span>
-<a name="l00079"></a>00079 <span class="comment">// zero is allowed, and negative zero is equal to zero.</span>
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> (!b1.is_zero() || !b2.is_zero() ? 1 : 0);
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (b1.length != b2.length) <span class="keywordflow">return</span> 1;
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(b1.digits(), b2.digits(), b1.length, <span class="keyword">true</span>);
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(<span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2) {
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> compare_eq(num1, num2)==0; }
-<a name="l00088"></a>00088 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(<span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2) {
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> compare_eq(num1, num2)!=0; }
-<a name="l00090"></a>00090 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(<span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2) {
-<a name="l00091"></a>00091 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(num1, num2)&lt;0; }
-<a name="l00092"></a>00092 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(<span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2) {
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(num1, num2)&gt;0; }
-<a name="l00094"></a>00094 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(<span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2) {
-<a name="l00095"></a>00095 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(num1, num2)&lt;=0; }
-<a name="l00096"></a>00096 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(<span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2) {
-<a name="l00097"></a>00097 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(num1, num2)&gt;=0; }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 } <span class="comment">// namespace detail</span>
-<a name="l00100"></a>00100 } <span class="comment">// namespace xint</span>
-<a name="l00101"></a>00101 } <span class="comment">// namespace boost</span>
-<a name="l00103"></a>00103 <span class="comment"></span>
-<a name="l00104"></a>00104 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/compare_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/compare_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/compare_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/compare_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/compare.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/compare.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/compare.cpp File Reference</h1>
+<h1>detail/compare.hpp File Reference</h1>
 <p>Contains the definitions for the comparison 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the definitions for the comparison functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="compare_8cpp_source.html">compare.cpp</a>.</p>
+<p>Definition in file <a class="el" href="compare_8hpp_source.html">compare.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/compare_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/compare_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,129 @@
+<!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: detail/compare.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>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>detail/compare.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_COMPARE_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_COMPARE_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00029"></a>00029 <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> digit_t *b1, <span class="keyword">const</span> digit_t *b2, <span class="keywordtype">size_t</span> len, <span class="keywordtype">bool</span>
+<a name="l00030"></a>00030 equal_only)
+<a name="l00031"></a>00031 {
+<a name="l00032"></a>00032 <span class="keyword">const</span> detail::digit_t *b1i = b1 + len, *b2i = b2 + len;
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (equal_only) {
+<a name="l00034"></a>00034 <span class="comment">// If we only care whether it&#39;s equal or not, we&#39;ll start from the</span>
+<a name="l00035"></a>00035 <span class="comment">// lowest digit instead of the highest, on the assumption that it&#39;s more</span>
+<a name="l00036"></a>00036 <span class="comment">// likely to be different.</span>
+<a name="l00037"></a>00037 <span class="keywordflow">while</span> (b1 &lt; b1i) <span class="keywordflow">if</span> (*b1++ != *b2++) <span class="keywordflow">return</span> 1;
+<a name="l00038"></a>00038 } <span class="keywordflow">else</span> {
+<a name="l00039"></a>00039 <span class="keywordflow">while</span> (b1i &gt; b1)
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (*(--b1i) != *(--b2i))
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> ((*b1i &lt; *b2i) ? -1 : 1);
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043 <span class="keywordflow">return</span> 0; <span class="comment">// They&#39;re identical.</span>
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045
+<a name="l00047"></a>00047 BOOST_XINT_RAWINT_TPL
+<a name="l00048"></a>00048 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT b1, <span class="keyword">const</span> BOOST_XINT_RAWINT b2, <span class="keywordtype">bool</span>
+<a name="l00049"></a>00049 ignoresign = <span class="keyword">false</span>)
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 <span class="keywordtype">bool</span> invert_answer=<span class="keyword">false</span>;
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (!ignoresign) {
+<a name="l00053"></a>00053 <span class="keywordflow">if</span> (b1.is_zero()) {
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (b2.is_zero()) <span class="keywordflow">return</span> 0;
+<a name="l00055"></a>00055 <span class="keywordflow">return</span> (b2.negative ? 1 : -1);
+<a name="l00056"></a>00056 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (b2.is_zero()) {
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> (b1.negative ? -1 : 1);
+<a name="l00058"></a>00058 } <span class="keywordflow">else</span> {
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (b1.negative != b2.negative) <span class="keywordflow">return</span> (b1.negative ? -1 : 1);
+<a name="l00060"></a>00060 <span class="keywordflow">if</span> (b1.negative) invert_answer=<span class="keyword">true</span>;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keywordtype">int</span> answer = 0;
+<a name="l00065"></a>00065 <span class="keywordflow">if</span> (b1.length != b2.length) {
+<a name="l00066"></a>00066 answer = ((b1.length &lt; b2.length) ? -1 : 1);
+<a name="l00067"></a>00067 } <span class="keywordflow">else</span> {
+<a name="l00068"></a>00068 answer = <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(b1.digits(), b2.digits(), b1.length, <span class="keyword">false</span>);
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> (invert_answer ? -answer : answer);
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072
+<a name="l00074"></a>00074 BOOST_XINT_RAWINT_TPL
+<a name="l00075"></a>00075 <span class="keywordtype">int</span> compare_eq(<span class="keyword">const</span> BOOST_XINT_RAWINT b1, <span class="keyword">const</span> BOOST_XINT_RAWINT b2) {
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (b1.negative != b2.negative) {
+<a name="l00077"></a>00077 <span class="comment">// Have to test for is_zero here, because in some rare cases, negative</span>
+<a name="l00078"></a>00078 <span class="comment">// zero is allowed, and negative zero is equal to zero.</span>
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> (!b1.is_zero() || !b2.is_zero() ? 1 : 0);
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 <span class="keywordflow">if</span> (b1.length != b2.length) <span class="keywordflow">return</span> 1;
+<a name="l00082"></a>00082 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(b1.digits(), b2.digits(), b1.length, <span class="keyword">true</span>);
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 BOOST_XINT_RAWINT_TPL
+<a name="l00086"></a>00086 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">operator==</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span> BOOST_XINT_RAWINT num2) {
+<a name="l00087"></a>00087 <span class="keywordflow">return</span> compare_eq(num1, num2)==0; }
+<a name="l00088"></a>00088 BOOST_XINT_RAWINT_TPL
+<a name="l00089"></a>00089 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">operator!=</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span> BOOST_XINT_RAWINT num2) {
+<a name="l00090"></a>00090 <span class="keywordflow">return</span> compare_eq(num1, num2)!=0; }
+<a name="l00091"></a>00091 BOOST_XINT_RAWINT_TPL
+<a name="l00092"></a>00092 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">operator&lt;</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span> BOOST_XINT_RAWINT num2) {
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(num1, num2)&lt;0; }
+<a name="l00094"></a>00094 BOOST_XINT_RAWINT_TPL
+<a name="l00095"></a>00095 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">operator&gt;</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span> BOOST_XINT_RAWINT num2) {
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(num1, num2)&gt;0; }
+<a name="l00097"></a>00097 BOOST_XINT_RAWINT_TPL
+<a name="l00098"></a>00098 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">operator&lt;=</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span> BOOST_XINT_RAWINT num2) {
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(num1, num2)&lt;=0; }
+<a name="l00100"></a>00100 BOOST_XINT_RAWINT_TPL
+<a name="l00101"></a>00101 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">operator&gt;=</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span> BOOST_XINT_RAWINT num2) {
+<a name="l00102"></a>00102 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(num1, num2)&gt;=0; }
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 } <span class="comment">// namespace detail</span>
+<a name="l00105"></a>00105 } <span class="comment">// namespace xint</span>
+<a name="l00106"></a>00106 } <span class="comment">// namespace boost</span>
+<a name="l00108"></a>00108 <span class="comment"></span>
+<a name="l00109"></a>00109 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_COMPARE_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/complexity.html
==============================================================================
--- sandbox/xint/libs/xint/doc/complexity.html (original)
+++ sandbox/xint/libs/xint/doc/complexity.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -26,7 +26,7 @@
 <h1><a class="anchor" id="complexity">A Note on Algorithmic Complexity </a></h1><p>This documentation includes a time-complexity estimate, in big-O notation, for each algorithm. The <code>n</code> in the complexity estimates is roughly the number of bits in the parameter(s). (More accurately, it's the number of <code>digit_t</code> values needed to hold those bits.) For those algorithms where the complexity calculation differs for different parameters, the parameter is noted as a subscript.</p>
 <p>The time complexity is well-known for some algorithms, but for others, I had to make an educated guess. If you discover an error in the listed complexity, please report it. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/complexity_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/complexity_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/complexity_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/xint/doc/dox/complexity.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/convert_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/convert_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/convert.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>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>detail/convert.cpp File Reference</h1>
-<p>Contains the conversion functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the conversion functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/convert_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/convert_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,274 +0,0 @@
-<!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: detail/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>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>detail/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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"> #include &quot;<a class="code" href="bitqueue_8hpp.html" title="Contains the bitqueue_t class, used internally.">bitqueue.hpp</a>&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00026"></a>00026 <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="l00032"></a>00032 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">char</span> nToChar(<span class="keywordtype">int</span> n, <span class="keywordtype">bool</span> upperCase) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (n &lt; 10) <span class="keywordflow">return</span> char(n+<span class="charliteral">&#39;0&#39;</span>);
-<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (upperCase) <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">&#39;A&#39;</span>);
-<a name="l00035"></a>00035 <span class="keywordflow">else</span> <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">&#39;a&#39;</span>);
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> std::string <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span>
-<a name="l00039"></a>00039 uppercase)
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (base&lt;2 || base&gt;36) <span class="keywordflow">throw</span> exceptions::invalid_base();
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (n.is_zero()) <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 std::ostringstream out;
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (base == 2 || base == 4 || base == 16) {
-<a name="l00047"></a>00047 <span class="comment">// Fast no-division version, useful for debugging division and for cases</span>
-<a name="l00048"></a>00048 <span class="comment">// where maximum speed is necessary.</span>
-<a name="l00049"></a>00049 <span class="keyword">const</span> digit_t *firstDigit = n.digits(),
-<a name="l00050"></a>00050 *lastDigit = firstDigit + n.length - 1;
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="keywordflow">if</span> (n.negative) out &lt;&lt; <span class="charliteral">&#39;-&#39;</span>;
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keywordtype">int</span> bits_per_base_b_digit = 0;
-<a name="l00055"></a>00055 <span class="keywordflow">while</span> (base &gt; 1) { base = base &gt;&gt; 1; ++bits_per_base_b_digit; }
-<a name="l00056"></a>00056 <span class="keyword">const</span> digit_t mask = (doubledigit_t(1) &lt;&lt; bits_per_base_b_digit) - 1;
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="comment">// Skip any leading zeros</span>
-<a name="l00059"></a>00059 <span class="keyword">const</span> digit_t *d = lastDigit;
-<a name="l00060"></a>00060 <span class="keywordtype">int</span> digitShift = (bits_per_digit - bits_per_base_b_digit);
-<a name="l00061"></a>00061 <span class="keywordflow">while</span> (digitShift &gt;= 0 &amp;&amp; ((*d &gt;&gt; digitShift) &amp; mask) == 0)
-<a name="l00062"></a>00062 digitShift -= bits_per_base_b_digit;
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="keywordflow">do</span> {
-<a name="l00065"></a>00065 <span class="keywordflow">while</span> (digitShift &gt;= 0) {
-<a name="l00066"></a>00066 out &lt;&lt; nToChar((*d &gt;&gt; digitShift) &amp; mask, uppercase);
-<a name="l00067"></a>00067 digitShift -= bits_per_base_b_digit;
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 digitShift=(bits_per_digit - bits_per_base_b_digit);
-<a name="l00071"></a>00071 } <span class="keywordflow">while</span> (d-- != firstDigit);
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <span class="keywordflow">return</span> out.str();
-<a name="l00074"></a>00074 } <span class="keywordflow">else</span> {
-<a name="l00075"></a>00075 <span class="comment">// ATTN: for when there&#39;s nothing more pressing to do</span>
-<a name="l00076"></a>00076 <span class="comment">// This could be made a lot more efficient for very large numbers, by</span>
-<a name="l00077"></a>00077 <span class="comment">// dividing n by base raised to whatever number of digits will fit into</span>
-<a name="l00078"></a>00078 <span class="comment">// a doubledigit_t, then just doing single-digit divides for that many</span>
-<a name="l00079"></a>00079 <span class="comment">// digits before going back to n for another chunk. That would be</span>
-<a name="l00080"></a>00080 <span class="comment">// premature optimization though, so I&#39;m just making this note instead.</span>
-<a name="l00081"></a>00081 <span class="comment">// If someone can show me a use-case where more efficiency is needed in</span>
-<a name="l00082"></a>00082 <span class="comment">// this function, I&#39;ll add it later.</span>
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keyword">const</span> data_t shift(n.new_holder(), base);
-<a name="l00085"></a>00085 data_t::divide_t a(<a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(n.abs(), shift));
-<a name="l00086"></a>00086 <span class="keywordflow">do</span> {
-<a name="l00087"></a>00087 out &lt;&lt; nToChar(a.remainder[0], uppercase);
-<a name="l00088"></a>00088 a = <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(a.quotient, shift);
-<a name="l00089"></a>00089 } <span class="keywordflow">while</span> (!a.quotient.is_zero());
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (!a.remainder.is_zero()) out &lt;&lt; nToChar(a.remainder[0], uppercase);
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (n.negative) out &lt;&lt; <span class="charliteral">&#39;-&#39;</span>;
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 std::string rval = out.str();
-<a name="l00095"></a>00095 std::reverse(rval.begin(), rval.end());
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> rval;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr,
-<a name="l00101"></a>00101 <span class="keywordtype">size_t</span> base)
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <span class="keywordtype">bool</span> negate=<span class="keyword">false</span>;
-<a name="l00104"></a>00104 <span class="keyword">const</span> <span class="keywordtype">char</span> *c = str;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keywordflow">while</span> (isspace(*c)) ++c;
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;+&#39;</span>) ++c;
-<a name="l00109"></a>00109 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;-&#39;</span>) { negate=<span class="keyword">true</span>; ++c; }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>) {
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;0&#39;</span>) {
-<a name="l00113"></a>00113 ++c;
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;x&#39;</span> || *c==<span class="charliteral">&#39;X&#39;</span>) {
-<a name="l00115"></a>00115 ++c;
-<a name="l00116"></a>00116 base=16;
-<a name="l00117"></a>00117 } <span class="keywordflow">else</span> base=8;
-<a name="l00118"></a>00118 } <span class="keywordflow">else</span> base=10;
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (base&lt;2 || base&gt;36) <span class="keywordflow">throw</span> exceptions::invalid_base();
-<a name="l00122"></a>00122 <span class="keywordflow">if</span> (*c==0) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;No valid digits&quot;</span>);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 std::string tstr;
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (negate) tstr.push_back(<span class="charliteral">&#39;-&#39;</span>);
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (base &lt;= 10) {
-<a name="l00127"></a>00127 <span class="keyword">const</span> <span class="keywordtype">char</span> p = char(<span class="charliteral">&#39;0&#39;</span> + base);
-<a name="l00128"></a>00128 <span class="keywordflow">while</span> (*c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; *c &lt; p)
-<a name="l00129"></a>00129 tstr.push_back(*c++);
-<a name="l00130"></a>00130 } <span class="keywordflow">else</span> {
-<a name="l00131"></a>00131 <span class="keyword">const</span> <span class="keywordtype">char</span> lower = char(<span class="charliteral">&#39;a&#39;</span> + base - 10),
-<a name="l00132"></a>00132 upper = char(<span class="charliteral">&#39;A&#39;</span> + base - 10);
-<a name="l00133"></a>00133 <span class="keywordflow">while</span> ((*c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; *c &lt;= <span class="charliteral">&#39;9&#39;</span>)
-<a name="l00134"></a>00134 || (*c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; *c &lt; lower)
-<a name="l00135"></a>00135 || (*c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; *c &lt; upper))
-<a name="l00136"></a>00136 tstr.push_back(*c++);
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 *endptr = <span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(c);
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 from_string(tstr, base);
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> slen, <span class="keywordtype">size_t</span>
-<a name="l00144"></a>00144 base)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordtype">bool</span> negate=<span class="keyword">false</span>;
-<a name="l00147"></a>00147 <span class="keyword">const</span> <span class="keywordtype">char</span> *c = str;
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;+&#39;</span>) ++c;
-<a name="l00149"></a>00149 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;-&#39;</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" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>) {
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;0&#39;</span>) {
-<a name="l00153"></a>00153 ++c;
-<a name="l00154"></a>00154 <span class="keywordflow">if</span> (*c==<span class="charliteral">&#39;x&#39;</span> || *c==<span class="charliteral">&#39;X&#39;</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="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (base&lt;2 || base&gt;36) <span class="keywordflow">throw</span> exceptions::invalid_base();
-<a name="l00162"></a>00162 <span class="keywordflow">if</span> (*c==0) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;No valid digits&quot;</span>);
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="keywordtype">size_t</span> max_bits_per_char = 1;
-<a name="l00165"></a>00165 <span class="keywordflow">while</span> (max_bits_per_char &lt; 6 &amp;&amp; base &gt; (1u &lt;&lt; max_bits_per_char))
-<a name="l00166"></a>00166 ++max_bits_per_char;
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 <span class="keywordflow">if</span> (slen == 0) slen = strlen(str);
-<a name="l00169"></a>00169 <span class="keywordtype">size_t</span> len = bits_to_digits(slen);
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 <span class="keyword">const</span> data_t shift(new_holder(), base);
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="comment">// ATTN: for when there&#39;s nothing more pressing to do</span>
-<a name="l00174"></a>00174 <span class="comment">// This function could use the same efficiency improvements that to_string</span>
-<a name="l00175"></a>00175 <span class="comment">// uses, but there&#39;s even less need for them here. Show me a use-case where</span>
-<a name="l00176"></a>00176 <span class="comment">// they&#39;re needed and I&#39;ll add them; until then, this will suffice.</span>
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 data_t digit(new_holder(), 0);
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 beginmod(len);
-<a name="l00181"></a>00181 <span class="keyword">set</span>(0);
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="keywordflow">while</span> (*c) {
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; *c&lt;=<span class="charliteral">&#39;9&#39;</span>) digit.set(*c-<span class="charliteral">&#39;0&#39;</span>);
-<a name="l00185"></a>00185 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&#39;A&#39;</span> &amp;&amp; *c&lt;=<span class="charliteral">&#39;Z&#39;</span>) digit.set(*c-<span class="charliteral">&#39;A&#39;</span>+10);
-<a name="l00186"></a>00186 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&#39;a&#39;</span> &amp;&amp; *c&lt;=<span class="charliteral">&#39;z&#39;</span>) digit.set(*c-<span class="charliteral">&#39;a&#39;</span>+10);
-<a name="l00187"></a>00187 <span class="keywordflow">else</span>
-<a name="l00188"></a>00188 <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;encountered non-alphanumeric &quot;</span>
-<a name="l00189"></a>00189 <span class="stringliteral">&quot;character in string&quot;</span>);
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <span class="keywordflow">if</span> (digit &gt;= shift) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;encountered digit &quot;</span>
-<a name="l00192"></a>00192 <span class="stringliteral">&quot;greater than base allows&quot;</span>);
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 *<span class="keyword">this</span> *= shift;
-<a name="l00195"></a>00195 *<span class="keyword">this</span> += digit;
-<a name="l00196"></a>00196 ++c;
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 negative = negate;
-<a name="l00200"></a>00200 endmod();
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::from_string(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
-<a name="l00204"></a>00204 from_string(str.c_str(), str.length(), base);
-<a name="l00205"></a>00205 }
-<a name="l00206"></a>00206
-<a name="l00207"></a>00207 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> bits) {
-<a name="l00208"></a>00208 <span class="keywordflow">if</span> (bits &gt; <span class="keywordtype">size_t</span>(std::numeric_limits&lt;unsigned char&gt;::digits)) <span class="keywordflow">throw</span>
-<a name="l00209"></a>00209 exceptions::invalid_argument(<span class="stringliteral">&quot;can&#39;t fit that many bits into an &quot;</span>
-<a name="l00210"></a>00210 <span class="stringliteral">&quot;unsigned character on this system&quot;</span>);
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (bits == 0) bits = std::numeric_limits&lt;unsigned char&gt;::digits;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 bitqueue_t bitqueue;
-<a name="l00214"></a>00214 <span class="keyword">const</span> digit_t *s = n.digits(), *se = s + n.length;
-<a name="l00215"></a>00215 <span class="keywordflow">while</span> (s != se) bitqueue.push(*s++, bits_per_digit);
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> target;
-<a name="l00218"></a>00218 <span class="keywordflow">while</span> (!bitqueue.empty()) target.push_back(static_cast&lt;unsigned char&gt;
-<a name="l00219"></a>00219 (bitqueue.pop(bits)));
-<a name="l00220"></a>00220 <span class="keywordflow">while</span> (!target.empty() &amp;&amp; target.back()==0) target.pop_back();
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> target;
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::from_binary(<a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <span class="keywordtype">size_t</span> bits) {
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (bits &gt; <span class="keywordtype">size_t</span>(std::numeric_limits&lt;unsigned char&gt;::digits)) <span class="keywordflow">throw</span>
-<a name="l00226"></a>00226 exceptions::invalid_argument(<span class="stringliteral">&quot;can&#39;t fit that many bits into an &quot;</span>
-<a name="l00227"></a>00227 <span class="stringliteral">&quot;unsigned character on this system&quot;</span>);
-<a name="l00228"></a>00228 <span class="keywordflow">if</span> (bits == 0) bits = std::numeric_limits&lt;unsigned char&gt;::digits;
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keywordtype">size_t</span> len = bits_to_digits(b.size() * bits);
-<a name="l00231"></a>00231 beginmod(len);
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 bitqueue_t bitqueue;
-<a name="l00234"></a>00234 <span class="keywordflow">for</span> (xint::binary_t::const_iterator s = b.begin(), se = b.end(); s != se;
-<a name="l00235"></a>00235 ++s) bitqueue.push(*s, bits);
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237 digit_t *d = digits(), *t = d, *te = t + max_length();
-<a name="l00238"></a>00238 <span class="keywordflow">while</span> (t != te &amp;&amp; !bitqueue.empty())
-<a name="l00239"></a>00239 *t++ = static_cast&lt;digit_t&gt;(bitqueue.pop(bits_per_digit));
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 length = (t - d);
-<a name="l00242"></a>00242
-<a name="l00243"></a>00243 endmod();
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 } <span class="comment">// namespace detail</span>
-<a name="l00247"></a>00247 } <span class="comment">// namespace xint</span>
-<a name="l00248"></a>00248 } <span class="comment">// namespace boost</span>
-<a name="l00250"></a>00250 <span class="comment"></span>
-<a name="l00251"></a>00251 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/convert_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/convert_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/convert_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/convert_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/convert.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/convert.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/convert.cpp File Reference</h1>
+<h1>detail/convert.hpp File Reference</h1>
 <p>Contains the conversion 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the conversion functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="convert_8cpp_source.html">convert.cpp</a>.</p>
+<p>Definition in file <a class="el" href="convert_8hpp_source.html">convert.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/convert_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/convert_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,277 @@
+<!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: detail/convert.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>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>detail/convert.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_CONVERT_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_CONVERT_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">inline</span> <span class="keywordtype">char</span> nToChar(<span class="keywordtype">int</span> n, <span class="keywordtype">bool</span> upperCase) {
+<a name="l00029"></a>00029 <span class="keywordflow">if</span> (n &lt; 10) <span class="keywordflow">return</span> char(n + <span class="charliteral">&#39;0&#39;</span>);
+<a name="l00030"></a>00030 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (upperCase) <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">&#39;A&#39;</span>);
+<a name="l00031"></a>00031 <span class="keywordflow">else</span> <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">&#39;a&#39;</span>);
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 BOOST_XINT_RAWINT_TPL
+<a name="l00035"></a>00035 std::string <a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> base = 10, <span class="keywordtype">bool</span>
+<a name="l00036"></a>00036 uppercase = <span class="keyword">false</span>)
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 <span class="keywordflow">if</span> (base &lt; 2 || base &gt; 36) <span class="keywordflow">throw</span> exceptions::invalid_base();
+<a name="l00039"></a>00039 <span class="keywordflow">if</span> (n.is_zero()) <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 std::ostringstream out;
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (base == 2 || base == 4 || base == 16) {
+<a name="l00043"></a>00043 <span class="comment">// Fast no-division version, useful for debugging division and for cases</span>
+<a name="l00044"></a>00044 <span class="comment">// where maximum speed is necessary.</span>
+<a name="l00045"></a>00045 <span class="keyword">const</span> digit_t *firstDigit = n.digits(), *lastDigit = firstDigit +
+<a name="l00046"></a>00046 n.length - 1;
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (n.negative) out &lt;&lt; <span class="charliteral">&#39;-&#39;</span>;
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keywordtype">int</span> bits_per_base_b_digit = 0;
+<a name="l00051"></a>00051 <span class="keywordflow">while</span> (base &gt; 1) { base = base &gt;&gt; 1; ++bits_per_base_b_digit; }
+<a name="l00052"></a>00052 <span class="keyword">const</span> digit_t mask = (doubledigit_t(1) &lt;&lt; bits_per_base_b_digit) - 1;
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="comment">// Skip any leading zeros</span>
+<a name="l00055"></a>00055 <span class="keyword">const</span> digit_t *d = lastDigit;
+<a name="l00056"></a>00056 <span class="keywordtype">int</span> digitShift = (bits_per_digit - bits_per_base_b_digit);
+<a name="l00057"></a>00057 <span class="keywordflow">while</span> (digitShift &gt;= 0 &amp;&amp; ((*d &gt;&gt; digitShift) &amp; mask) == 0)
+<a name="l00058"></a>00058 digitShift -= bits_per_base_b_digit;
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="keywordflow">do</span> {
+<a name="l00061"></a>00061 <span class="keywordflow">while</span> (digitShift &gt;= 0) {
+<a name="l00062"></a>00062 out &lt;&lt; nToChar((*d &gt;&gt; digitShift) &amp; mask, uppercase);
+<a name="l00063"></a>00063 digitShift -= bits_per_base_b_digit;
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 digitShift=(bits_per_digit - bits_per_base_b_digit);
+<a name="l00067"></a>00067 } <span class="keywordflow">while</span> (d-- != firstDigit);
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> out.str();
+<a name="l00070"></a>00070 } <span class="keywordflow">else</span> {
+<a name="l00071"></a>00071 <span class="comment">// ATTN: for when there&#39;s nothing more pressing to do</span>
+<a name="l00072"></a>00072 <span class="comment">// This could be made a lot more efficient for very large numbers, by</span>
+<a name="l00073"></a>00073 <span class="comment">// dividing n by base raised to whatever number of digits will fit into</span>
+<a name="l00074"></a>00074 <span class="comment">// a doubledigit_t, then just doing single-digit divides for that many</span>
+<a name="l00075"></a>00075 <span class="comment">// digits before going back to n for another chunk. That would be</span>
+<a name="l00076"></a>00076 <span class="comment">// premature optimization though, so I&#39;m just making this note instead.</span>
+<a name="l00077"></a>00077 <span class="comment">// If someone can show me a use-case where more efficiency is needed in</span>
+<a name="l00078"></a>00078 <span class="comment">// this function, I&#39;ll add it later.</span>
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 BOOST_XINT_RAWINT shift;
+<a name="l00081"></a>00081 shift.set_unsigned(base);
+<a name="l00082"></a>00082 <span class="keyword">typename</span> BOOST_XINT_RAWINT::divide_t a(<a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(n.abs(), shift));
+<a name="l00083"></a>00083 <span class="keywordflow">do</span> {
+<a name="l00084"></a>00084 out &lt;&lt; nToChar(a.remainder[0], uppercase);
+<a name="l00085"></a>00085 a = <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(a.quotient, shift);
+<a name="l00086"></a>00086 } <span class="keywordflow">while</span> (!a.quotient.is_zero());
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (!a.remainder.is_zero()) out &lt;&lt; nToChar(a.remainder[0], uppercase);
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="keywordflow">if</span> (n.negative) out &lt;&lt; <span class="charliteral">&#39;-&#39;</span>;
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 std::string rval = out.str();
+<a name="l00092"></a>00092 std::reverse(rval.begin(), rval.end());
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> rval;
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 BOOST_XINT_RAWINT_TPL
+<a name="l00098"></a>00098 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base)
+<a name="l00099"></a>00099 {
+<a name="l00100"></a>00100 <span class="keywordtype">bool</span> negate = <span class="keyword">false</span>;
+<a name="l00101"></a>00101 <span class="keyword">const</span> <span class="keywordtype">char</span> *c = str;
+<a name="l00102"></a>00102 <span class="keywordflow">while</span> (isspace(*c)) ++c;
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;+&#39;</span>) ++c;
+<a name="l00105"></a>00105 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;-&#39;</span>) { negate = <span class="keyword">true</span>; ++c; }
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keywordflow">if</span> (base == <a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>) {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;0&#39;</span>) {
+<a name="l00109"></a>00109 ++c;
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;x&#39;</span> || *c == <span class="charliteral">&#39;X&#39;</span>) {
+<a name="l00111"></a>00111 ++c;
+<a name="l00112"></a>00112 base = 16;
+<a name="l00113"></a>00113 } <span class="keywordflow">else</span> base = 8;
+<a name="l00114"></a>00114 } <span class="keywordflow">else</span> base = 10;
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordflow">if</span> (base &lt; 2 || base &gt; 36) <span class="keywordflow">throw</span> exceptions::invalid_base();
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (*c == 0) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;No valid digits&quot;</span>);
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 std::string tstr;
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (negate) tstr.push_back(<span class="charliteral">&#39;-&#39;</span>);
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (base &lt;= 10) {
+<a name="l00123"></a>00123 <span class="keyword">const</span> <span class="keywordtype">char</span> p = char(<span class="charliteral">&#39;0&#39;</span> + base);
+<a name="l00124"></a>00124 <span class="keywordflow">while</span> (*c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; *c &lt; p)
+<a name="l00125"></a>00125 tstr.push_back(*c++);
+<a name="l00126"></a>00126 } <span class="keywordflow">else</span> {
+<a name="l00127"></a>00127 <span class="keyword">const</span> <span class="keywordtype">char</span> lower = char(<span class="charliteral">&#39;a&#39;</span> + base - 10), upper = char(<span class="charliteral">&#39;A&#39;</span> + base - 10);
+<a name="l00128"></a>00128 <span class="keywordflow">while</span> ((*c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; *c &lt;= <span class="charliteral">&#39;9&#39;</span>)
+<a name="l00129"></a>00129 || (*c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; *c &lt; lower)
+<a name="l00130"></a>00130 || (*c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; *c &lt; upper))
+<a name="l00131"></a>00131 tstr.push_back(*c++);
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 *endptr = <span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(c);
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 from_string(tstr, base);
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 BOOST_XINT_RAWINT_TPL
+<a name="l00139"></a>00139 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base) {
+<a name="l00140"></a>00140 <span class="keywordtype">bool</span> negate = <span class="keyword">false</span>;
+<a name="l00141"></a>00141 <span class="keyword">const</span> <span class="keywordtype">char</span> *c = str;
+<a name="l00142"></a>00142 <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;+&#39;</span>) ++c;
+<a name="l00143"></a>00143 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;-&#39;</span>) { negate = <span class="keyword">true</span>; ++c; }
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (base == <a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>) {
+<a name="l00146"></a>00146 <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;0&#39;</span>) {
+<a name="l00147"></a>00147 ++c;
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (*c == <span class="charliteral">&#39;x&#39;</span> || *c == <span class="charliteral">&#39;X&#39;</span>) {
+<a name="l00149"></a>00149 ++c;
+<a name="l00150"></a>00150 base = 16;
+<a name="l00151"></a>00151 } <span class="keywordflow">else</span> base = 8;
+<a name="l00152"></a>00152 } <span class="keywordflow">else</span> base = 10;
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (base &lt; 2 || base &gt; 36) <span class="keywordflow">throw</span> exceptions::invalid_base();
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (*c == 0) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;No valid digits&quot;</span>);
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="comment">// ATTN: for when there&#39;s nothing more pressing to do</span>
+<a name="l00159"></a>00159 <span class="comment">// This function could use the same efficiency improvements that to_string</span>
+<a name="l00160"></a>00160 <span class="comment">// uses, but there&#39;s even less need for them here. Show me a use-case where</span>
+<a name="l00161"></a>00161 <span class="comment">// they&#39;re needed and I&#39;ll add them; until then, this will suffice.</span>
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 BOOST_XINT_RAWINT shift, digit;
+<a name="l00164"></a>00164 shift.set_unsigned(base);
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keyword">set</span>(0);
+<a name="l00167"></a>00167 <span class="keywordflow">while</span> (*c) {
+<a name="l00168"></a>00168 <span class="keywordflow">if</span> (*c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; *c &lt;= <span class="charliteral">&#39;9&#39;</span>) digit.set(*c - <span class="charliteral">&#39;0&#39;</span>);
+<a name="l00169"></a>00169 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; *c &lt;= <span class="charliteral">&#39;Z&#39;</span>) digit.set(*c - <span class="charliteral">&#39;A&#39;</span> + 10);
+<a name="l00170"></a>00170 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; *c &lt;= <span class="charliteral">&#39;z&#39;</span>) digit.set(*c - <span class="charliteral">&#39;a&#39;</span> + 10);
+<a name="l00171"></a>00171 <span class="keywordflow">else</span>
+<a name="l00172"></a>00172 <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;encountered non-alphanumeric &quot;</span>
+<a name="l00173"></a>00173 <span class="stringliteral">&quot;character in string&quot;</span>);
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (digit &gt;= shift) <span class="keywordflow">throw</span> exceptions::invalid_digit(<span class="stringliteral">&quot;encountered digit &quot;</span>
+<a name="l00176"></a>00176 <span class="stringliteral">&quot;greater than base allows&quot;</span>);
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 *<span class="keyword">this</span> *= shift;
+<a name="l00179"></a>00179 *<span class="keyword">this</span> += digit;
+<a name="l00180"></a>00180 ++c;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182
+<a name="l00183"></a>00183 negative = negate;
+<a name="l00184"></a>00184 trim();
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 BOOST_XINT_RAWINT_TPL
+<a name="l00188"></a>00188 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::from_string(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
+<a name="l00189"></a>00189 from_string(str.c_str(), base);
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 BOOST_XINT_RAWINT_TPL
+<a name="l00193"></a>00193 <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> <a class="code" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40" title="Creates a binary representation of an integer.">to_binary</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> bits = 0) {
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (bits &gt; <span class="keywordtype">size_t</span>(std::numeric_limits&lt;unsigned char&gt;::digits)) <span class="keywordflow">throw</span>
+<a name="l00195"></a>00195 exceptions::invalid_argument(<span class="stringliteral">&quot;can&#39;t fit that many bits into an &quot;</span>
+<a name="l00196"></a>00196 <span class="stringliteral">&quot;unsigned character on this system&quot;</span>);
+<a name="l00197"></a>00197 <span class="keywordflow">if</span> (bits == 0) bits = std::numeric_limits&lt;unsigned char&gt;::digits;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 bitqueue_t bitqueue;
+<a name="l00200"></a>00200 <span class="keyword">const</span> digit_t *s = n.digits(), *se = s + n.length;
+<a name="l00201"></a>00201 <span class="keywordflow">while</span> (s != se) bitqueue.push(*s++, bits_per_digit);
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> target;
+<a name="l00204"></a>00204 <span class="keywordflow">while</span> (!bitqueue.empty()) target.push_back(static_cast&lt;unsigned char&gt;
+<a name="l00205"></a>00205 (bitqueue.pop(bits)));
+<a name="l00206"></a>00206 <span class="keywordflow">while</span> (!target.empty() &amp;&amp; target.back()==0) target.pop_back();
+<a name="l00207"></a>00207 <span class="keywordflow">return</span> target;
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 BOOST_XINT_RAWINT_TPL
+<a name="l00211"></a>00211 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::from_binary(<a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <span class="keywordtype">size_t</span> bits) {
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (bits &gt; <span class="keywordtype">size_t</span>(std::numeric_limits&lt;unsigned char&gt;::digits)) <span class="keywordflow">throw</span>
+<a name="l00213"></a>00213 exceptions::invalid_argument(<span class="stringliteral">&quot;can&#39;t fit that many bits into an &quot;</span>
+<a name="l00214"></a>00214 <span class="stringliteral">&quot;unsigned character on this system&quot;</span>);
+<a name="l00215"></a>00215 <span class="keywordflow">if</span> (bits == 0) bits = std::numeric_limits&lt;unsigned char&gt;::digits;
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217 bitqueue_t bitqueue;
+<a name="l00218"></a>00218 <span class="keywordflow">for</span> (xint::binary_t::const_iterator s = b.begin(), se = b.end(); s != se;
+<a name="l00219"></a>00219 ++s) bitqueue.push(*s, bits);
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 digit_t *d = digits(bits_to_digits(b.size() * bits), realloc::ignore), *t =
+<a name="l00222"></a>00222 d, *te = t + max_length();
+<a name="l00223"></a>00223 <span class="keywordflow">while</span> (t != te &amp;&amp; !bitqueue.empty())
+<a name="l00224"></a>00224 *t++ = static_cast&lt;digit_t&gt;(bitqueue.pop(bits_per_digit));
+<a name="l00225"></a>00225 length = (t - d);
+<a name="l00226"></a>00226 trim();
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00230"></a>00230 T <a class="code" href="namespaceboost_1_1xint.html#afd9d2c7743d11e6959d6cda44c8abf69" title="Converts an xint::integer type to a built-in integer type.">to</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;T&gt;
+<a name="l00231"></a>00231 &gt;::type* = 0)
+<a name="l00232"></a>00232 {
+<a name="l00233"></a>00233 <span class="keyword">using</span> std::numeric_limits;
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235 <span class="keyword">static</span> <span class="keyword">const</span> BOOST_XINT_RAWINT tmin((numeric_limits&lt;T&gt;::min)());
+<a name="l00236"></a>00236 <span class="keyword">static</span> <span class="keyword">const</span> BOOST_XINT_RAWINT tmax((numeric_limits&lt;T&gt;::max)());
+<a name="l00237"></a>00237 <span class="keywordflow">if</span> (n &lt; tmin || n &gt; tmax) <span class="keywordflow">throw</span> exceptions::too_big(<span class="stringliteral">&quot;value out of range &quot;</span>
+<a name="l00238"></a>00238 <span class="stringliteral">&quot;for requested conversion&quot;</span>);
+<a name="l00239"></a>00239
+<a name="l00240"></a>00240 T rval = 0, shift = T(digit_overflowbit);
+<a name="l00241"></a>00241 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x = 0; x &lt; n.length; ++x) {
+<a name="l00242"></a>00242 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) &gt; <span class="keyword">sizeof</span>(digit_t)) rval *= shift;
+<a name="l00243"></a>00243 rval += <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(n[n.length - x - 1]);
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245 <span class="keywordflow">if</span> (n.negative) rval *= -1;
+<a name="l00246"></a>00246 <span class="keywordflow">return</span> rval;
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 } <span class="comment">// namespace detail</span>
+<a name="l00250"></a>00250 } <span class="comment">// namespace xint</span>
+<a name="l00251"></a>00251 } <span class="comment">// namespace boost</span>
+<a name="l00253"></a>00253 <span class="comment"></span>
+<a name="l00254"></a>00254 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_CONVERT_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/copyonwrite_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/copyonwrite_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/copyonwrite_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/cow.html
==============================================================================
--- sandbox/xint/libs/xint/doc/cow.html (original)
+++ sandbox/xint/libs/xint/doc/cow.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -24,10 +24,10 @@
 
 
 <h1><a class="anchor" id="cow">Copying and Argument-Passing </a></h1><p>You might notice that most of the library's functions pass integer objects by value, which strikes most developers as incredibly inefficient. I thought so too, until I read Dave Abrahams' excellent article, <em>"Want Speed? Pass By Value."</em>, which you can find at &lt;http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/&gt;.</p>
-<p>To increase the speed of the library further, it uses a copy-on-write system internally. That means that if you copy an integer object, 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, copy-on-write isn't compatible with thread-safe operation, so by default the library will ensure that all of its objects have unique storage before they are returned to your program. If you want maximum speed, and can ensure that integer objects are only used in the threads they are created in, you can disable this by setting the <code>Threadsafe</code> option to <code>false</code> on the <code>integer_t</code>, <code>nothrow_integer_t</code>, or <code>fixed_integer</code> class templates. </p>
+<p>To increase the speed of the library further, it uses a copy-on-write system internally. That means that if the internal functions copy an integer object, 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, copy-on-write isn't compatible with thread-safe operation, so by default the library will ensure that all of its objects have unique storage before they are returned to your program. If you want maximum speed, and can ensure that integer objects are only used in the threads they are created in, you can disable this by using the <code>threadsafe&lt;false&gt;</code> option on the <code>integer_t</code> class template. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/data__t_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/data__t_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/data_t.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>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>detail/data_t.cpp File Reference</h1>
-<p>Contains the function definitions for data_t and raw_digits_t.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the function definitions for data_t and raw_digits_t. </p>
-<p>This file will be included by the library itself when needed. </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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/data__t_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/data__t_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,462 +0,0 @@
-<!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: detail/data_t.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>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>detail/data_t.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"> #include &quot;../exceptions.hpp&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00026"></a>00026 <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="l00033"></a>00033 <span class="comment">// raw_digits_t</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> raw_digits_t::raw_digits_t(<span class="keywordtype">size_t</span> max_len, <span class="keywordtype">bool</span> ro):
-<a name="l00036"></a>00036 copy_count(0), max_length(max_len), readonly(ro) { }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> raw_digits_t::raw_digits_t(<span class="keywordtype">size_t</span> max_len, <span class="keywordtype">bool</span> ro, digit_t
-<a name="l00039"></a>00039 init): copy_count(0), max_length(max_len), readonly(ro)
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 digits[0] = init;
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> raw_digits_t::copy(<span class="keyword">const</span> raw_digits_t&amp; c, <span class="keywordtype">size_t</span>
-<a name="l00045"></a>00045 length)
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keywordtype">size_t</span> max = (std::min)(max_length, c.max_length);
-<a name="l00048"></a>00048 <span class="keywordflow">if</span> (length == 0 || length &gt; max) length = max;
-<a name="l00049"></a>00049 copy(c.digits, length);
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> length;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> raw_digits_t::copy(<span class="keyword">const</span> digit_t *s, <span class="keywordtype">size_t</span> length) {
-<a name="l00054"></a>00054 digit_t *t = digits, *te = t + (std::min)(length, max_length);
-<a name="l00055"></a>00055 <span class="keywordflow">while</span> (t != te) *t++ = *s++;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> raw_digits_t::zero(<span class="keywordtype">size_t</span> length) {
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (length == 0) length = max_length;
-<a name="l00060"></a>00060 <span class="keywordflow">else</span> length = (std::min)(length, max_length);
-<a name="l00061"></a>00061 digit_t *t = digits, *te = t + length;
-<a name="l00062"></a>00062 <span class="keywordflow">while</span> (t != te) *t++ = 0;
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> length;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> raw_digits_t::copies()<span class="keyword"> const </span>{
-<a name="l00067"></a>00067 <span class="keywordflow">return</span> copy_count;
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00071"></a>00071 <span class="comment">// base_digitmanager_t</span>
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> raw_digits_t *base_digitmanager_t::alloc(<span class="keywordtype">size_t</span>
-<a name="l00074"></a>00074 requested_length, <span class="keywordtype">bool</span> readonly)<span class="keyword"> const</span>
-<a name="l00075"></a>00075 <span class="keyword"></span>{
-<a name="l00076"></a>00076 <span class="keywordtype">size_t</span> fixed_digit_length = fixed_length();
-<a name="l00077"></a>00077 <span class="keywordtype">size_t</span> len = (fixed_digit_length ? fixed_digit_length :
-<a name="l00078"></a>00078 (std::max)(requested_length, minimum_digits));
-<a name="l00079"></a>00079 <span class="keywordtype">size_t</span> count = len - minimum_digits + datasize;
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 digit_t *storage = 0;
-<a name="l00082"></a>00082 <span class="keywordflow">try</span> {
-<a name="l00083"></a>00083 storage = raw_allocate(count);
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (readonly) <span class="keywordflow">return</span> <span class="keyword">new</span>(storage) raw_digits_t(len, readonly, 0);
-<a name="l00085"></a>00085 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">new</span>(storage) raw_digits_t(len, readonly);
-<a name="l00086"></a>00086 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (storage) raw_deallocate(storage, len); <span class="comment">// Just in case.</span>
-<a name="l00088"></a>00088 <span class="keywordflow">throw</span> exceptions::overflow_error(<span class="stringliteral">&quot;Out of memory allocating integer&quot;</span>);
-<a name="l00089"></a>00089 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00090"></a>00090 <span class="comment">// To make it exception-safe, we&#39;ve got to ensure that the allocated</span>
-<a name="l00091"></a>00091 <span class="comment">// data is properly disposed of if there&#39;s an exception, before passing</span>
-<a name="l00092"></a>00092 <span class="comment">// the exception on.</span>
-<a name="l00093"></a>00093 <span class="keywordflow">if</span> (storage) raw_deallocate(storage, len);
-<a name="l00094"></a>00094 <span class="keywordflow">throw</span>;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 }
-<a name="l00097"></a>00097
-<a name="l00099"></a>00099 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> raw_digits_t *base_digitmanager_t::realloc(raw_digits_t
-<a name="l00100"></a>00100 *data, <span class="keywordtype">size_t</span> requested_length)<span class="keyword"> const</span>
-<a name="l00101"></a>00101 <span class="keyword"></span>{
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (fixed_length() == 0) {
-<a name="l00103"></a>00103 <span class="keywordflow">if</span> (data &amp;&amp; data-&gt;copies() &lt;= 1 &amp;&amp; !data-&gt;readonly) {
-<a name="l00104"></a>00104 digit_t *rawdata = raw_reallocate(reinterpret_cast&lt;digit_t*&gt;(data),
-<a name="l00105"></a>00105 requested_length);
-<a name="l00106"></a>00106 <span class="keywordflow">if</span> (rawdata != 0) {
-<a name="l00107"></a>00107 <span class="keywordflow">if</span> (reinterpret_cast&lt;digit_t*&gt;(data) == rawdata) {
-<a name="l00108"></a>00108 *(<span class="keyword">const_cast&lt;</span><span class="keywordtype">size_t</span>*<span class="keyword">&gt;</span>(&amp;data-&gt;max_length)) = requested_length;
-<a name="l00109"></a>00109 <span class="keywordflow">return</span> data;
-<a name="l00110"></a>00110 } <span class="keywordflow">else</span> {
-<a name="l00111"></a>00111 raw_digits_t *newdata =
-<a name="l00112"></a>00112 <span class="keyword">new</span>(rawdata) raw_digits_t(requested_length, <span class="keyword">false</span>);
-<a name="l00113"></a>00113 newdata-&gt;copy(*data);
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> newdata;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 } <span class="keywordflow">else</span> requested_length = fixed_length();
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="comment">// Can&#39;t reallocate, move to plan B.</span>
-<a name="l00121"></a>00121 raw_digits_t *r = data;
-<a name="l00122"></a>00122 <span class="keywordflow">if</span> (data == 0 || data-&gt;copies() &gt; 1 || data-&gt;readonly ||
-<a name="l00123"></a>00123 data-&gt;max_length &lt; requested_length)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 r = alloc(requested_length);
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (data) r-&gt;copy(*data, requested_length);
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<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 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> base_digitmanager_t::dealloc(raw_digits_t *data)<span class="keyword"> const </span>{
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (data == 0) <span class="keywordflow">return</span>;
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="keywordtype">size_t</span> len = (data-&gt;max_length + datasize - minimum_digits);
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="comment">// Since the data was initialized with placement-new, we have to manually</span>
-<a name="l00138"></a>00138 <span class="comment">// call the destructor.</span>
-<a name="l00139"></a>00139 data-&gt; ~raw_digits_t();
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="comment">// Finally, dispose of it.</span>
-<a name="l00142"></a>00142 raw_deallocate(reinterpret_cast&lt;digit_t*&gt;(data), len);
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144
-<a name="l00148"></a>00148 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> base_digitmanager_t::resize_and_uniquify(<span class="keywordtype">size_t</span>
-<a name="l00149"></a>00149 new_requested_max_length)
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 <span class="comment">// If the length can&#39;t change, and it&#39;s already unique, we don&#39;t need to do</span>
-<a name="l00152"></a>00152 <span class="comment">// anything.</span>
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> (fixed_length() &gt; 0 &amp;&amp; raw_data-&gt;copies() &lt;= 1) <span class="keywordflow">return</span>;
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="keywordflow">if</span> (new_requested_max_length == 0)
-<a name="l00156"></a>00156 new_requested_max_length = raw_data-&gt;max_length;
-<a name="l00157"></a>00157 reset(realloc(raw_data, new_requested_max_length));
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00162"></a>00162 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(base_digitmanager_t&amp; p1, base_digitmanager_t&amp; p2) {
-<a name="l00163"></a>00163 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">std::swap</a>;
-<a name="l00164"></a>00164 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(p1.raw_data, p2.raw_data);
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00168"></a>00168 <span class="comment">// data_t</span>
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t::data_t(base_digitmanager_t&amp; holder, <span class="keywordtype">size_t</span> len, <span class="keywordtype">bool</span>
-<a name="l00171"></a>00171 neg): length(len), negative(neg), dataholder(&amp;holder),
-<a name="l00172"></a>00172 holder_managed_elsewhere(true), modcount(0) { }
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t::data_t(base_digitmanager_t* holder):
-<a name="l00175"></a>00175 length(1), negative(false), dataholder(holder),
-<a name="l00176"></a>00176 holder_managed_elsewhere(false), modcount(0) { assert(holder != 0); }
-<a name="l00177"></a>00177
-<a name="l00179"></a>00179 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t::data_t(<span class="keyword">const</span> data_t&amp; copy): length(copy.length),
-<a name="l00180"></a>00180 negative(copy.negative),
-<a name="l00181"></a>00181 dataholder(copy.dataholder-&gt;new_of_type(copy.dataholder)),
-<a name="l00182"></a>00182 holder_managed_elsewhere(false), modcount(0) { }
-<a name="l00183"></a>00183
-<a name="l00186"></a>00186 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t::data_t(<span class="keyword">const</span> data_t&amp; copy, <span class="keywordtype">bool</span> neg):
-<a name="l00187"></a>00187 length(copy.length), negative(neg),
-<a name="l00188"></a>00188 dataholder(copy.dataholder-&gt;new_of_type(copy.dataholder)),
-<a name="l00189"></a>00189 holder_managed_elsewhere(false), modcount(0) { }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t::~data_t() {
-<a name="l00192"></a>00192 <span class="keywordflow">if</span> (!holder_managed_elsewhere) <span class="keyword">delete</span> dataholder;
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> base_digitmanager_t *data_t::new_holder()<span class="keyword"> const </span>{
-<a name="l00196"></a>00196 <span class="keywordflow">return</span> dataholder-&gt;new_of_type();
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keyword">const</span> base_digitmanager_t *data_t::holder()<span class="keyword"> const </span>{
-<a name="l00200"></a>00200 <span class="keywordflow">if</span> (is_nan()) <span class="keywordflow">throw</span> exceptions::not_a_number();
-<a name="l00201"></a>00201 <span class="keywordflow">return</span> dataholder;
-<a name="l00202"></a>00202 }
-<a name="l00203"></a>00203
-<a name="l00205"></a>00205 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::set(<span class="keywordtype">int</span> n) {
-<a name="l00206"></a>00206 beginmod(1);
-<a name="l00207"></a>00207 make_unique();
-<a name="l00208"></a>00208 <span class="keywordflow">if</span> (n &lt; 0) { negative = <span class="keyword">true</span>; n = -n; } <span class="keywordflow">else</span> negative = <span class="keyword">false</span>;
-<a name="l00209"></a>00209 assert(n == <span class="keywordtype">int</span>(digit_t(n)));
-<a name="l00210"></a>00210 length = 1;
-<a name="l00211"></a>00211 digits()[0] = digit_t(n);
-<a name="l00212"></a>00212 endmod();
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::set_signed(boost::intmax_t n) {
-<a name="l00216"></a>00216 <span class="keywordflow">if</span> (n &gt;= 0) {
-<a name="l00217"></a>00217 set_unsigned(n);
-<a name="l00218"></a>00218 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n == (std::numeric_limits&lt;boost::intmax_t&gt;::min)()) {
-<a name="l00219"></a>00219 <span class="comment">// Have to treat the minimum number carefully, because -n is not</span>
-<a name="l00220"></a>00220 <span class="comment">// what you&#39;d think it is.</span>
-<a name="l00221"></a>00221 set_unsigned(-(n + 1), <span class="keyword">true</span>);
-<a name="l00222"></a>00222 --*<span class="keyword">this</span>;
-<a name="l00223"></a>00223 } <span class="keywordflow">else</span> {
-<a name="l00224"></a>00224 set_unsigned(-n, <span class="keyword">true</span>);
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226 }
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::set_unsigned(boost::uintmax_t n, <span class="keywordtype">bool</span> neg) {
-<a name="l00229"></a>00229 beginmod(detail::digits_in_uintmax);
-<a name="l00230"></a>00230 <span class="keywordflow">if</span> (digit_t(n) == n) {
-<a name="l00231"></a>00231 length = 1;
-<a name="l00232"></a>00232 digits()[0] = digit_t(n);
-<a name="l00233"></a>00233 } <span class="keywordflow">else</span> {
-<a name="l00234"></a>00234 digit_t *i = digits(), *ie = i + max_length();
-<a name="l00235"></a>00235 <span class="keywordflow">while</span> (n != 0 &amp;&amp; i != ie) {
-<a name="l00236"></a>00236 *i++ = digit_t(n &amp; digit_mask);
-<a name="l00237"></a>00237 n &gt;&gt;= bits_per_digit;
-<a name="l00238"></a>00238 }
-<a name="l00239"></a>00239 length = (i - digits());
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241 negative = neg;
-<a name="l00242"></a>00242 endmod();
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00246"></a>00246 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t data_t::duplicate()<span class="keyword"> const </span>{
-<a name="l00247"></a>00247 data_t r(*<span class="keyword">this</span>);
-<a name="l00248"></a>00248 r.make_unique();
-<a name="l00249"></a>00249 <span class="keywordflow">return</span> r;
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251
-<a name="l00253"></a>00253 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::duplicate_data(<span class="keyword">const</span> data_t copy) {
-<a name="l00254"></a>00254 beginmod(copy.length);
-<a name="l00255"></a>00255 digits(); <span class="comment">// To trigger any changes from the beginmod call</span>
-<a name="l00256"></a>00256 length = (std::min)(max_length(), copy.length);
-<a name="l00257"></a>00257 negative = copy.negative;
-<a name="l00258"></a>00258 dataholder-&gt;copy(copy.dataholder, length);
-<a name="l00259"></a>00259 endmod();
-<a name="l00260"></a>00260 }
-<a name="l00261"></a>00261
-<a name="l00263"></a>00263 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::reset(data_t p) {
-<a name="l00264"></a>00264 dataholder-&gt;reset(p.dataholder-&gt;get());
-<a name="l00265"></a>00265 length = p.length;
-<a name="l00266"></a>00266 negative = p.negative;
-<a name="l00267"></a>00267 call_endmod_hook = <span class="keyword">true</span>;
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator=(<span class="keyword">const</span> data_t&amp; p) {
-<a name="l00271"></a>00271 reset(p);
-<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>00275 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keyword">const</span> data_t <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">data_t::abs</a>()<span class="keyword"> const </span>{
-<a name="l00276"></a>00276 <span class="keywordflow">return</span> data_t(*<span class="keyword">this</span>, <span class="keyword">false</span>);
-<a name="l00277"></a>00277 }
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keyword">const</span> data_t data_t::negate()<span class="keyword"> const </span>{
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> data_t(*<span class="keyword">this</span>, !negative);
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> data_t::same_storage(<span class="keyword">const</span> data_t n)<span class="keyword"> const </span>{
-<a name="l00284"></a>00284 <span class="keywordflow">return</span> (dataholder-&gt;get() == n.dataholder-&gt;get());
-<a name="l00285"></a>00285 }
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> data_t::is_unique()<span class="keyword"> const </span>{
-<a name="l00288"></a>00288 <span class="keywordflow">return</span> ((*dataholder)-&gt;copies() &lt;= 1);
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290
-<a name="l00291"></a>00291 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::make_unique() {
-<a name="l00292"></a>00292 <span class="keywordflow">if</span> (!is_unique()) dataholder-&gt;resize_and_uniquify(max_length());
-<a name="l00293"></a>00293 }
-<a name="l00294"></a>00294
-<a name="l00296"></a>00296 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> digit_t data_t::get_digit(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{
-<a name="l00297"></a>00297 <span class="keywordflow">return</span> (i &lt; length ? (*dataholder)-&gt;digits[i] : 0);
-<a name="l00298"></a>00298 }
-<a name="l00299"></a>00299
-<a name="l00300"></a>00300 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> digit_t data_t::operator[](<span class="keywordtype">size_t</span> i) {
-<a name="l00301"></a>00301 <span class="keywordflow">return</span> (*dataholder)-&gt;digits[i];
-<a name="l00302"></a>00302 }
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> digit_t *data_t::digits() {
-<a name="l00305"></a>00305 assert(modcount &gt; 0);
-<a name="l00306"></a>00306
-<a name="l00307"></a>00307 <span class="keywordflow">if</span> (mod_requested_size &gt; max_length()) {
-<a name="l00308"></a>00308 dataholder-&gt;resize_and_uniquify(mod_requested_size);
-<a name="l00309"></a>00309 } <span class="keywordflow">else</span> {
-<a name="l00310"></a>00310 make_unique();
-<a name="l00311"></a>00311 }
-<a name="l00312"></a>00312
-<a name="l00313"></a>00313 <span class="keywordflow">if</span> (mod_requested_extend) {
-<a name="l00314"></a>00314 mod_requested_extend = <span class="keyword">false</span>;
-<a name="l00315"></a>00315 extend(mod_requested_size, <span class="keyword">true</span>);
-<a name="l00316"></a>00316 }
-<a name="l00317"></a>00317 mod_requested_size = 0;
-<a name="l00318"></a>00318
-<a name="l00319"></a>00319 call_endmod_hook = <span class="keyword">true</span>;
-<a name="l00320"></a>00320 <span class="keywordflow">return</span> digits(<span class="keyword">true</span>);
-<a name="l00321"></a>00321 }
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keyword">const</span> digit_t *data_t::digits()<span class="keyword"> const </span>{
-<a name="l00324"></a>00324 data_t&amp; t(*const_cast&lt;data_t*&gt;(<span class="keyword">this</span>));
-<a name="l00325"></a>00325 <span class="keywordflow">return</span> t.digits(<span class="keyword">true</span>);
-<a name="l00326"></a>00326 }
-<a name="l00327"></a>00327
-<a name="l00328"></a>00328 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> data_t::max_length()<span class="keyword"> const </span>{
-<a name="l00329"></a>00329 <span class="keywordflow">return</span> (*dataholder)-&gt;max_length;
-<a name="l00330"></a>00330 }
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> data_t::is_zero()<span class="keyword"> const </span>{
-<a name="l00333"></a>00333 <span class="keywordflow">return</span> (length == 1 &amp;&amp; (*<span class="keyword">this</span>)[0] == 0);
-<a name="l00334"></a>00334 }
-<a name="l00335"></a>00335
-<a name="l00338"></a>00338 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::extend(<span class="keywordtype">size_t</span> new_length, <span class="keywordtype">bool</span> skip_mod) {
-<a name="l00339"></a>00339 <span class="keywordflow">if</span> (new_length == 0) new_length = max_length();
-<a name="l00340"></a>00340 <span class="keywordflow">else</span> new_length = (std::min)(new_length, max_length());
-<a name="l00341"></a>00341
-<a name="l00342"></a>00342 <span class="keywordflow">if</span> (length &lt; new_length) {
-<a name="l00343"></a>00343 digit_t *d;
-<a name="l00344"></a>00344 <span class="keywordflow">if</span> (!skip_mod) {
-<a name="l00345"></a>00345 beginmod();
-<a name="l00346"></a>00346 d = (*dataholder)-&gt;digits;
-<a name="l00347"></a>00347 } <span class="keywordflow">else</span> d = digits();
-<a name="l00348"></a>00348 digit_t *p = d + length, *pe = d + new_length;
-<a name="l00349"></a>00349 <span class="keywordflow">while</span> (p &lt; pe) *p++ = 0;
-<a name="l00350"></a>00350 length = new_length;
-<a name="l00351"></a>00351 <span class="keywordflow">if</span> (!skip_mod) endmod();
-<a name="l00352"></a>00352 }
-<a name="l00353"></a>00353 }
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::beginmod(<span class="keywordtype">size_t</span> requested, <span class="keywordtype">bool</span> extend) {
-<a name="l00356"></a>00356 <span class="keywordflow">if</span> (modcount++ == 0) {
-<a name="l00357"></a>00357 dataholder-&gt;beforemod();
-<a name="l00358"></a>00358 mod_requested_size = requested;
-<a name="l00359"></a>00359 mod_requested_extend = extend;
-<a name="l00360"></a>00360 call_endmod_hook = <span class="keyword">false</span>;
-<a name="l00361"></a>00361 } <span class="keywordflow">else</span> {
-<a name="l00362"></a>00362 mod_requested_size = (std::max)(mod_requested_size, requested);
-<a name="l00363"></a>00363 <span class="keywordflow">if</span> (extend) mod_requested_extend = <span class="keyword">true</span>;
-<a name="l00364"></a>00364 }
-<a name="l00365"></a>00365 }
-<a name="l00366"></a>00366
-<a name="l00367"></a>00367 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> data_t::endmod(<span class="keywordtype">bool</span> allow_negative_zero) {
-<a name="l00368"></a>00368 assert(length &lt;= max_length());
-<a name="l00369"></a>00369
-<a name="l00370"></a>00370 digit_t *d = digits(<span class="keyword">true</span>), *p = d + length - 1;
-<a name="l00371"></a>00371 <span class="keywordflow">if</span> (call_endmod_hook) {
-<a name="l00372"></a>00372 dataholder-&gt;endmod_hook(d);
-<a name="l00373"></a>00373 call_endmod_hook = <span class="keyword">false</span>;
-<a name="l00374"></a>00374 }
-<a name="l00375"></a>00375
-<a name="l00376"></a>00376 <span class="comment">// Adjust length to skip any leading zeros.</span>
-<a name="l00377"></a>00377 <span class="keywordflow">while</span> (p &gt; d &amp;&amp; *p == 0) --p;
-<a name="l00378"></a>00378 length = (p - d + 1);
-<a name="l00379"></a>00379
-<a name="l00380"></a>00380 <span class="comment">// Zero isn&#39;t negative, unless told otherwise.</span>
-<a name="l00381"></a>00381 <span class="keywordflow">if</span> (!allow_negative_zero &amp;&amp; p == d &amp;&amp; *p == 0) negative = <span class="keyword">false</span>;
-<a name="l00382"></a>00382
-<a name="l00383"></a>00383 assert(modcount &gt; 0);
-<a name="l00384"></a>00384 <span class="keywordflow">if</span> (--modcount == 0) dataholder-&gt;aftermod();
-<a name="l00385"></a>00385 }
-<a name="l00386"></a>00386
-<a name="l00387"></a>00387 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">int</span> data_t::sign(<span class="keywordtype">bool</span> allow_signed_zero)<span class="keyword"> const </span>{
-<a name="l00388"></a>00388 <span class="keywordflow">if</span> (!allow_signed_zero &amp;&amp; is_zero()) <span class="keywordflow">return</span> 0;
-<a name="l00389"></a>00389 <span class="keywordflow">return</span> (negative ? -1 : 1);
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391
-<a name="l00392"></a>00392 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> data_t::is_odd()<span class="keyword"> const </span>{
-<a name="l00393"></a>00393 <span class="keywordflow">return</span> (((*<span class="keyword">this</span>)[0] &amp; 0x01) != 0);
-<a name="l00394"></a>00394 }
-<a name="l00395"></a>00395
-<a name="l00396"></a>00396 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">bool</span> data_t::is_even()<span class="keyword"> const </span>{
-<a name="l00397"></a>00397 <span class="keywordflow">return</span> (((*<span class="keyword">this</span>)[0] &amp; 0x01) == 0);
-<a name="l00398"></a>00398 }
-<a name="l00399"></a>00399
-<a name="l00400"></a>00400 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> data_t::hex_digits()<span class="keyword"> const </span>{
-<a name="l00401"></a>00401 <span class="keywordflow">return</span> (<a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(*<span class="keyword">this</span>) + 3) / 4;
-<a name="l00402"></a>00402 }
-<a name="l00403"></a>00403
-<a name="l00405"></a>00405 <span class="comment">// Miscellaneous related free functions</span>
-<a name="l00406"></a>00406
-<a name="l00407"></a>00407 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(data_t&amp; p1, data_t&amp; p2) {
-<a name="l00408"></a>00408 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">std::swap</a>;
-<a name="l00409"></a>00409 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(p1.length, p2.length);
-<a name="l00410"></a>00410 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(p1.negative, p2.negative);
-<a name="l00411"></a>00411 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(*p1.dataholder, *p2.dataholder);
-<a name="l00412"></a>00412 }
-<a name="l00413"></a>00413
-<a name="l00414"></a>00414 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> log2_base(boost::uintmax_t n, <span class="keywordtype">size_t</span> maxbits) {
-<a name="l00415"></a>00415 <span class="keywordtype">size_t</span> lo = 0, hi = maxbits;
-<a name="l00416"></a>00416 <span class="keywordflow">while</span> (lo &lt; hi) {
-<a name="l00417"></a>00417 <span class="keywordtype">size_t</span> s = lo + ((hi - lo) &gt;&gt; 1);
-<a name="l00418"></a>00418 <span class="keywordflow">if</span> (n &gt;= (boost::uintmax_t(1) &lt;&lt; s)) lo = s + 1;
-<a name="l00419"></a>00419 <span class="keywordflow">else</span> hi = s;
-<a name="l00420"></a>00420 }
-<a name="l00421"></a>00421 <span class="keywordflow">return</span> lo;
-<a name="l00422"></a>00422 }
-<a name="l00423"></a>00423
-<a name="l00427"></a>00427 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(<span class="keyword">const</span> data_t n) {
-<a name="l00428"></a>00428 data_t r(n.abs());
-<a name="l00429"></a>00429 r.beginmod();
-<a name="l00430"></a>00430 r.endmod();
-<a name="l00431"></a>00431 <span class="keywordflow">return</span> r;
-<a name="l00432"></a>00432 }
-<a name="l00433"></a>00433
-<a name="l00434"></a>00434 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(<span class="keyword">const</span> data_t n) {
-<a name="l00435"></a>00435 <span class="keywordtype">size_t</span> r = bits_per_digit * (n.length - 1);
-<a name="l00436"></a>00436 <span class="keywordflow">return</span> r + <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(n[n.length - 1]);
-<a name="l00437"></a>00437 }
-<a name="l00438"></a>00438
-<a name="l00439"></a>00439 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> log10_bits(<span class="keywordtype">size_t</span> bits) {
-<a name="l00440"></a>00440 assert(std::numeric_limits&lt;boost::intmax_t&gt;::digits &gt;= 32);
-<a name="l00441"></a>00441
-<a name="l00442"></a>00442 digitmanager_t&lt;&gt; holder;
-<a name="l00443"></a>00443 <span class="keyword">const</span> data_t large_step(holder.new_of_type(), 1000000000);
-<a name="l00444"></a>00444 <span class="keyword">const</span> data_t small_step(holder.new_of_type(), 10);
-<a name="l00445"></a>00445 <span class="keyword">const</span> <span class="keywordtype">size_t</span> count_per_large_step = 9, count_per_small_step = 1;
-<a name="l00446"></a>00446
-<a name="l00447"></a>00447 data_t n(<span class="keyword">new</span> digitmanager_t&lt;&gt;);
-<a name="l00448"></a>00448 pow2(n, bits);
-<a name="l00449"></a>00449 --n;
-<a name="l00450"></a>00450
-<a name="l00451"></a>00451 <span class="keywordtype">size_t</span> r = 0;
-<a name="l00452"></a>00452 <span class="keywordflow">while</span> (n &gt;= large_step) { n /= large_step; r += count_per_large_step; }
-<a name="l00453"></a>00453 <span class="keywordflow">while</span> (n &gt;= small_step) { n /= small_step; r += count_per_small_step; }
-<a name="l00454"></a>00454 <span class="keywordflow">return</span> r;
-<a name="l00455"></a>00455 }
-<a name="l00456"></a>00456
-<a name="l00457"></a>00457 } <span class="comment">// namespace detail</span>
-<a name="l00458"></a>00458 } <span class="comment">// namespace xint</span>
-<a name="l00459"></a>00459 } <span class="comment">// namespace boost</span>
-<a name="l00461"></a>00461 <span class="comment"></span>
-<a name="l00462"></a>00462 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/dependencies.html
==============================================================================
--- sandbox/xint/libs/xint/doc/dependencies.html (original)
+++ sandbox/xint/libs/xint/doc/dependencies.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -31,11 +31,12 @@
 <li>Boost.Random</li>
 <li>Boost.TypeTraits</li>
 <li>Boost.SmartPtr</li>
+<li>Boost.Parameter</li>
 <li>Boost.Move</li>
 </ul>
 <p>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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/dependencies_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/dependencies_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/dependencies_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/different__types.html
==============================================================================
--- sandbox/xint/libs/xint/doc/different__types.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,34 +0,0 @@
-<!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: The Different Integer Types</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>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="different_types">The Different Integer Types </a></h1><p>The main integer class in this library is <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">boost::xint::integer</a>. It allows for arbitrary-length numbers, limited only by your system's memory. There is an error-code-based variant of it as well, <a class="el" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf">boost::xint::nothrow_integer</a>, and a fixed-length type (<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer</a>), where you to specify the number of bits to limit it to.</p>
-<p>All three types are defined as templates, and can be instantiated with different allocators, with or without thread safety, and optionally with memory erasure for high-security applications.</p>
-<p>All three types have an essentially identical set of functions and operators, and can do pretty much the same things, though with different time and memory efficiencies. See the "detailed description" portion of the reference pages linked above for a description of each type and its unique properties. </p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/divide_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/divide_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/divide.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>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>detail/divide.cpp File Reference</h1>
-<p>Contains the definitions of the divide function, and its supporting functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions of the divide function, and its supporting functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="divide_8cpp_source.html">divide.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/divide_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/divide_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,222 +0,0 @@
-<!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: detail/divide.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>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>detail/divide.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">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00026"></a>00026 <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="l00032"></a>00032 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> divide_by_single_digit(data_t&amp; qtarget, data_t&amp; rtarget,
-<a name="l00033"></a>00033 <span class="keyword">const</span> data_t d1, digit_t d2)
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keywordtype">size_t</span> d1len = d1.length;
-<a name="l00036"></a>00036 <span class="keyword">const</span> digit_t *d1digits = d1.digits();
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 doubledigit_t a = 0;
-<a name="l00039"></a>00039 <span class="keyword">const</span> doubledigit_t lomask(digit_mask);
-<a name="l00040"></a>00040 <span class="keyword">const</span> doubledigit_t himask(lomask &lt;&lt; bits_per_digit);
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="keywordtype">int</span> m = int(d1len) - 1;
-<a name="l00043"></a>00043 <span class="keyword">const</span> digit_t *d1p = d1digits + m;
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 qtarget.beginmod(m + 1);
-<a name="l00046"></a>00046 digit_t *qp = qtarget.digits() + m, *qe = qtarget.digits() +
-<a name="l00047"></a>00047 qtarget.max_length();
-<a name="l00048"></a>00048 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = m; i &gt;= 0; --i, --d1p, --qp) {
-<a name="l00049"></a>00049 a = (a &amp; ~lomask) | *d1p;
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (qp &lt; qe) *qp = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(a / d2);
-<a name="l00051"></a>00051 a = (a &amp; ~himask) | ((a % d2) &lt;&lt; bits_per_digit);
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053 qtarget.length = (std::min&lt;size_t&gt;)(m + 1, qtarget.max_length());
-<a name="l00054"></a>00054 qtarget.endmod();
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 rtarget.beginmod(1);
-<a name="l00057"></a>00057 rtarget.digits()[0] = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>((a &amp; himask) &gt;&gt; bits_per_digit);
-<a name="l00058"></a>00058 rtarget.length = 1;
-<a name="l00059"></a>00059 rtarget.endmod();
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> sub_divide2(data_t&amp; qtarget, data_t&amp; rtarget, <span class="keyword">const</span>
-<a name="l00063"></a>00063 data_t d1, <span class="keyword">const</span> data_t d2)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 assert(d2[d2.length - 1] &gt;= digit_overflowbit / 2);
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <span class="keyword">const</span> digit_t *byDigits = d2.digits();
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="keywordtype">size_t</span> n = d2.length, m = d1.length - n;
-<a name="l00070"></a>00070 <span class="keywordtype">size_t</span> i = m + n, j = m;
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 qtarget.beginmod(j + 1);
-<a name="l00073"></a>00073 rtarget.beginmod();
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 qtarget.length = j + 1;
-<a name="l00076"></a>00076 digit_t *qdigits = qtarget.digits();
-<a name="l00077"></a>00077 rtarget.duplicate_data(d1);
-<a name="l00078"></a>00078 <span class="keywordflow">do</span> {
-<a name="l00079"></a>00079 doubledigit_t ri = (doubledigit_t(rtarget.get_digit(i)) &lt;&lt;
-<a name="l00080"></a>00080 bits_per_digit) + rtarget.get_digit(i - 1);
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 doubledigit_t q = (std::min&lt;doubledigit_t&gt;)(ri / byDigits[n - 1],
-<a name="l00083"></a>00083 digit_mask);
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 data_t r2(qtarget.new_holder(), 0, 3), qq(qtarget.new_holder(), 0);
-<a name="l00086"></a>00086 <span class="keywordflow">while</span> (1) {
-<a name="l00087"></a>00087 <span class="comment">// We need three digits here, a doubledigit_t alone won&#39;t suffice.</span>
-<a name="l00088"></a>00088 r2.set_unsigned(ri - (q * byDigits[n - 1]));
-<a name="l00089"></a>00089 r2 &lt;&lt;= bits_per_digit;
-<a name="l00090"></a>00090 r2 += data_t(qtarget.new_holder(), rtarget[i - 2]);
-<a name="l00091"></a>00091 qq.set_unsigned(q);
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (data_t(qtarget.new_holder(), byDigits[n - 2]) * qq &lt;= r2) <span class="keywordflow">break</span>;
-<a name="l00093"></a>00093 --q;
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 qq.set_unsigned(q);
-<a name="l00097"></a>00097 data_t bq(d2 * qq);
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (rtarget &lt; bq) {
-<a name="l00099"></a>00099 --q;
-<a name="l00100"></a>00100 bq -= d2;
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 bq &lt;&lt;= bits_per_digit * (i - n);
-<a name="l00104"></a>00104 rtarget -= bq;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 qdigits[j--] = digit_t(q);
-<a name="l00107"></a>00107 } <span class="keywordflow">while</span> (--i &gt;= n);
-<a name="l00108"></a>00108 rtarget.endmod();
-<a name="l00109"></a>00109 qtarget.endmod();
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111
-<a name="l00115"></a>00115 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> sub_divide(data_t&amp; qtarget, data_t&amp; rtarget, <span class="keyword">const</span> data_t
-<a name="l00116"></a>00116 d1, <span class="keyword">const</span> data_t d2)
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (d2.length == 1) {
-<a name="l00119"></a>00119 divide_by_single_digit(qtarget, rtarget, d1, d2[0]);
-<a name="l00120"></a>00120 <span class="keywordflow">return</span>;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="comment">// The normalization step</span>
-<a name="l00124"></a>00124 digit_t normalizer = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(digit_overflowbit /
-<a name="l00125"></a>00125 (doubledigit_t(d2[d2.length - 1]) + 1));
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (normalizer &gt; 1) {
-<a name="l00127"></a>00127 <span class="keyword">const</span> data_t norm(qtarget.new_holder(), normalizer);
-<a name="l00128"></a>00128 sub_divide2(qtarget, rtarget, d1 * norm, d2 * norm);
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 <span class="comment">// Denormalization step. This requires a division by a single digit_t.</span>
-<a name="l00131"></a>00131 data_t tmp(qtarget.new_holder());
-<a name="l00132"></a>00132 divide_by_single_digit(rtarget, tmp, rtarget.duplicate(), normalizer);
-<a name="l00133"></a>00133 } <span class="keywordflow">else</span> sub_divide2(qtarget, rtarget, d1, d2);
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135
-<a name="l00138"></a>00138 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(data_t&amp; qtarget, data_t&amp; rtarget, <span class="keyword">const</span> data_t d1,
-<a name="l00139"></a>00139 <span class="keyword">const</span> data_t d2)
-<a name="l00140"></a>00140 {
-<a name="l00141"></a>00141 <span class="keywordtype">int</span> sign1 = (d1.is_zero() ? 0 : d1.negative ? -1 : 1);
-<a name="l00142"></a>00142 <span class="keywordtype">int</span> sign2 = (d2.is_zero() ? 0 : d2.negative ? -1 : 1);
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">throw</span> exceptions::divide_by_zero();
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 qtarget.beginmod();
-<a name="l00146"></a>00146 rtarget.beginmod();
-<a name="l00147"></a>00147 <span class="keywordtype">int</span> comp = <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(d1, d2, <span class="keyword">true</span>);
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (comp &lt; 0) {
-<a name="l00149"></a>00149 qtarget.set(0);
-<a name="l00150"></a>00150 rtarget.duplicate_data(d1);
-<a name="l00151"></a>00151 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp == 0) {
-<a name="l00152"></a>00152 qtarget.set(sign1 != sign2 ? -1 : 1);
-<a name="l00153"></a>00153 rtarget.set(0);
-<a name="l00154"></a>00154 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 &lt; 0 &amp;&amp; sign2 &lt; 0) {
-<a name="l00155"></a>00155 sub_divide(qtarget, rtarget, d1.negate(), d2.negate());
-<a name="l00156"></a>00156 qtarget.negative = <span class="keyword">false</span>;
-<a name="l00157"></a>00157 rtarget.negative = <span class="keyword">true</span>;
-<a name="l00158"></a>00158 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 &lt; 0) {
-<a name="l00159"></a>00159 sub_divide(qtarget, rtarget, d1.negate(), d2);
-<a name="l00160"></a>00160 qtarget.negative = rtarget.negative = <span class="keyword">true</span>;
-<a name="l00161"></a>00161 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 &lt; 0) {
-<a name="l00162"></a>00162 sub_divide(qtarget, rtarget, d1, d2.negate());
-<a name="l00163"></a>00163 qtarget.negative = <span class="keyword">true</span>;
-<a name="l00164"></a>00164 rtarget.negative = <span class="keyword">false</span>;
-<a name="l00165"></a>00165 } <span class="keywordflow">else</span> {
-<a name="l00166"></a>00166 sub_divide(qtarget, rtarget, d1, d2);
-<a name="l00167"></a>00167 qtarget.negative = rtarget.negative = <span class="keyword">false</span>;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169 rtarget.endmod();
-<a name="l00170"></a>00170 qtarget.endmod();
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t::divide_t <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(<span class="keyword">const</span> data_t d1, <span class="keyword">const</span> data_t d2) {
-<a name="l00174"></a>00174 data_t q(d1.new_holder()), r(d1.new_holder());
-<a name="l00175"></a>00175 <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(q, r, d1, d2);
-<a name="l00176"></a>00176 <span class="keywordflow">return</span> data_t::divide_t(q, r);
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator/=(<span class="keyword">const</span> data_t b) {
-<a name="l00180"></a>00180 data_t remainder(new_holder());
-<a name="l00181"></a>00181 <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(*<span class="keyword">this</span>, remainder, duplicate(), b);
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator%=(<span class="keyword">const</span> data_t b) {
-<a name="l00186"></a>00186 data_t quotient(new_holder());
-<a name="l00187"></a>00187 <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(quotient, *<span class="keyword">this</span>, duplicate(), b);
-<a name="l00188"></a>00188 <span class="keywordflow">if</span> (negative) *<span class="keyword">this</span> += b.abs();
-<a name="l00189"></a>00189 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">operator/</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00193"></a>00193 <span class="keywordflow">return</span> data_t(n1) /= n2;
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">operator%</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> data_t(n1) %= n2;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 } <span class="comment">// namespace detail</span>
-<a name="l00201"></a>00201 } <span class="comment">// namespace xint</span>
-<a name="l00202"></a>00202 } <span class="comment">// namespace boost</span>
-<a name="l00204"></a>00204 <span class="comment"></span>
-<a name="l00205"></a>00205 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/divide_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/divide_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/divide_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/divide_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/divide.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/divide.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/divide.cpp File Reference</h1>
+<h1>detail/divide.hpp File Reference</h1>
 <p>Contains the definitions of the divide function, and its supporting 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the definitions of the divide function, and its supporting functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="divide_8cpp_source.html">divide.cpp</a>.</p>
+<p>Definition in file <a class="el" href="divide_8hpp_source.html">divide.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/divide_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/divide_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,241 @@
+<!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: detail/divide.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>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>detail/divide.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="l00021"></a>00021 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_DIVIDE_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_DIVIDE_HPP</span>
+<a name="l00023"></a>00023 <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>detail {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 BOOST_XINT_RAWINT_TPL
+<a name="l00030"></a>00030 <span class="keywordtype">void</span> divide_by_single_digit(BOOST_XINT_RAWINT&amp; qtarget, BOOST_XINT_RAWINT&amp;
+<a name="l00031"></a>00031 rtarget, <span class="keyword">const</span> BOOST_XINT_RAWINT d1, digit_t d2)
+<a name="l00032"></a>00032 {
+<a name="l00033"></a>00033 <span class="keywordtype">size_t</span> d1len = d1.length;
+<a name="l00034"></a>00034 <span class="keyword">const</span> digit_t *d1digits = d1.digits();
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 doubledigit_t a = 0;
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> m = int(d1len) - 1;
+<a name="l00039"></a>00039 <span class="keyword">const</span> digit_t *d1p = d1digits + m;
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 digit_t *qdig = qtarget.digits(m + 1, realloc::zero), *qp = qdig + m, *qe =
+<a name="l00042"></a>00042 qdig + qtarget.max_length();
+<a name="l00043"></a>00043 <span class="keywordtype">int</span> i = m;
+<a name="l00044"></a>00044 <span class="keywordflow">for</span> (; qp &gt;= qe &amp;&amp; i &gt;= 0; --i, --d1p, --qp) {
+<a name="l00045"></a>00045 a |= *d1p;
+<a name="l00046"></a>00046 a = ((a % d2) &lt;&lt; bits_per_digit);
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048 <span class="keywordflow">for</span> (; i &gt;= 0; --i, --d1p, --qp) {
+<a name="l00049"></a>00049 a |= *d1p;
+<a name="l00050"></a>00050 *qp = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(a / d2);
+<a name="l00051"></a>00051 a = ((a % d2) &lt;&lt; bits_per_digit);
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053 qtarget.length = (std::min&lt;size_t&gt;)(m + 1, qtarget.max_length());
+<a name="l00054"></a>00054 qtarget.trim();
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 rtarget.digits(1, realloc::ignore)[0] = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(a &gt;&gt;
+<a name="l00057"></a>00057 bits_per_digit);
+<a name="l00058"></a>00058 rtarget.length = 1;
+<a name="l00059"></a>00059 rtarget.trim();
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 BOOST_XINT_RAWINT_TPL
+<a name="l00063"></a>00063 <span class="keywordtype">void</span> sub_divide2(BOOST_XINT_RAWINT&amp; qtarget, BOOST_XINT_RAWINT&amp; rtarget, <span class="keyword">const</span>
+<a name="l00064"></a>00064 BOOST_XINT_RAWINT d1, <span class="keyword">const</span> BOOST_XINT_RAWINT d2)
+<a name="l00065"></a>00065 {
+<a name="l00066"></a>00066 <span class="keyword">typedef</span> raw_integer_t&lt;0, Secure, Alloc&gt; BOOST_XINT_UNLIMITED;
+<a name="l00067"></a>00067 assert(d2[d2.length - 1] &gt;= digit_overflowbit / 2);
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keyword">const</span> digit_t *byDigits = d2.digits();
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> n = d2.length, m = d1.length - n;
+<a name="l00072"></a>00072 <span class="keywordtype">size_t</span> i = m + n, j = m;
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 digit_t *qdigits = qtarget.digits(j + 1, realloc::ignore);
+<a name="l00075"></a>00075 qtarget.length = (std::min)(j + 1, qtarget.max_length());
+<a name="l00076"></a>00076 rtarget = d1;
+<a name="l00077"></a>00077 BOOST_XINT_UNLIMITED r2(0, 3), qq;
+<a name="l00078"></a>00078 <span class="keywordflow">do</span> {
+<a name="l00079"></a>00079 doubledigit_t ri = (doubledigit_t(rtarget.get_digit(i)) &lt;&lt;
+<a name="l00080"></a>00080 bits_per_digit) + rtarget.get_digit(i - 1);
+<a name="l00081"></a>00081 doubledigit_t q = (std::min&lt;doubledigit_t&gt;)(ri / byDigits[n - 1],
+<a name="l00082"></a>00082 digit_mask);
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084 <span class="keywordflow">while</span> (1) {
+<a name="l00085"></a>00085 <span class="comment">// We need three digits here, a doubledigit_t alone won&#39;t suffice.</span>
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 doubledigit_t tmp = ri - (q * byDigits[n - 1]);
+<a name="l00088"></a>00088 digit_t *r2dig = r2.digits(3, realloc::ignore);
+<a name="l00089"></a>00089 *r2dig++ = rtarget[i - 2];
+<a name="l00090"></a>00090 *r2dig++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp &amp; digit_mask);
+<a name="l00091"></a>00091 tmp &gt;&gt;= bits_per_digit;
+<a name="l00092"></a>00092 *r2dig++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(tmp);
+<a name="l00093"></a>00093 r2.trim();
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 qq.set_unsigned(q);
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (BOOST_XINT_UNLIMITED(byDigits[n - 2]) * qq &lt;= r2) <span class="keywordflow">break</span>;
+<a name="l00098"></a>00098 --q;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 BOOST_XINT_RAWINT bq(d2 * BOOST_XINT_RAWINT(q));
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (rtarget &lt; bq) {
+<a name="l00103"></a>00103 --q;
+<a name="l00104"></a>00104 bq -= d2;
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 bq &lt;&lt;= bits_per_digit * (i - n);
+<a name="l00108"></a>00108 rtarget -= bq;
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 qdigits[j--] = digit_t(q);
+<a name="l00111"></a>00111 } <span class="keywordflow">while</span> (--i &gt;= n);
+<a name="l00112"></a>00112 rtarget.trim();
+<a name="l00113"></a>00113 qtarget.trim();
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00119"></a>00119 BOOST_XINT_RAWINT_TPL
+<a name="l00120"></a>00120 <span class="keywordtype">void</span> sub_divide(BOOST_XINT_RAWINT&amp; qtarget, BOOST_XINT_RAWINT&amp; rtarget, <span class="keyword">const</span>
+<a name="l00121"></a>00121 BOOST_XINT_RAWINT d1, <span class="keyword">const</span> BOOST_XINT_RAWINT d2)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (d2.length == 1) {
+<a name="l00124"></a>00124 divide_by_single_digit(qtarget, rtarget, d1, d2[0]);
+<a name="l00125"></a>00125 } <span class="keywordflow">else</span> {
+<a name="l00126"></a>00126 <span class="comment">// The normalization step</span>
+<a name="l00127"></a>00127 digit_t normalizer = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(digit_overflowbit /
+<a name="l00128"></a>00128 (doubledigit_t(d2[d2.length - 1]) + 1));
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> (normalizer &gt; 1) {
+<a name="l00130"></a>00130 <span class="keyword">const</span> BOOST_XINT_RAWINT norm(normalizer);
+<a name="l00131"></a>00131 sub_divide2(qtarget, rtarget, d1 * norm, d2 * norm);
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="comment">// Denormalization step. This requires division by a single digit_t.</span>
+<a name="l00134"></a>00134 BOOST_XINT_RAWINT tmp;
+<a name="l00135"></a>00135 divide_by_single_digit(rtarget, tmp, rtarget, normalizer);
+<a name="l00136"></a>00136 } <span class="keywordflow">else</span> sub_divide2(qtarget, rtarget, d1, d2);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139
+<a name="l00142"></a>00142 BOOST_XINT_RAWINT_TPL
+<a name="l00143"></a>00143 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(BOOST_XINT_RAWINT&amp; qtarget, BOOST_XINT_RAWINT&amp; rtarget, <span class="keyword">const</span>
+<a name="l00144"></a>00144 BOOST_XINT_RAWINT d1, <span class="keyword">const</span> BOOST_XINT_RAWINT d2)
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 <span class="keywordtype">int</span> sign1 = (d1.is_zero() ? 0 : d1.negative ? -1 : 1);
+<a name="l00147"></a>00147 <span class="keywordtype">int</span> sign2 = (d2.is_zero() ? 0 : d2.negative ? -1 : 1);
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">throw</span> exceptions::divide_by_zero();
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keywordtype">int</span> comp = <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(d1, d2, <span class="keyword">true</span>);
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (comp &lt; 0) {
+<a name="l00152"></a>00152 qtarget.set(0);
+<a name="l00153"></a>00153 rtarget = d1;
+<a name="l00154"></a>00154 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp == 0) {
+<a name="l00155"></a>00155 qtarget.set(sign1 != sign2 ? -1 : 1);
+<a name="l00156"></a>00156 rtarget.set(0);
+<a name="l00157"></a>00157 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 &lt; 0 &amp;&amp; sign2 &lt; 0) {
+<a name="l00158"></a>00158 sub_divide(qtarget, rtarget, d1.negate(), d2.negate());
+<a name="l00159"></a>00159 qtarget.negative = <span class="keyword">false</span>;
+<a name="l00160"></a>00160 rtarget.negative = <span class="keyword">true</span>;
+<a name="l00161"></a>00161 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 &lt; 0) {
+<a name="l00162"></a>00162 sub_divide(qtarget, rtarget, d1.negate(), d2);
+<a name="l00163"></a>00163 qtarget.negative = rtarget.negative = <span class="keyword">true</span>;
+<a name="l00164"></a>00164 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 &lt; 0) {
+<a name="l00165"></a>00165 sub_divide(qtarget, rtarget, d1, d2.negate());
+<a name="l00166"></a>00166 qtarget.negative = <span class="keyword">true</span>;
+<a name="l00167"></a>00167 rtarget.negative = <span class="keyword">false</span>;
+<a name="l00168"></a>00168 } <span class="keywordflow">else</span> {
+<a name="l00169"></a>00169 sub_divide(qtarget, rtarget, d1, d2);
+<a name="l00170"></a>00170 qtarget.negative = rtarget.negative = <span class="keyword">false</span>;
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172 rtarget.trim();
+<a name="l00173"></a>00173 qtarget.trim();
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 BOOST_XINT_RAWINT_TPL
+<a name="l00177"></a>00177 <span class="keyword">typename</span> BOOST_XINT_RAWINT::divide_t <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT d1, <span class="keyword">const</span>
+<a name="l00178"></a>00178 BOOST_XINT_RAWINT d2)
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 BOOST_XINT_RAWINT q, r;
+<a name="l00181"></a>00181 <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(q, r, d1, d2);
+<a name="l00182"></a>00182 <span class="keywordflow">return</span> <span class="keyword">typename</span> BOOST_XINT_RAWINT::divide_t(q, r);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 BOOST_XINT_RAWINT_TPL
+<a name="l00186"></a>00186 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator/=(<span class="keyword">const</span> BOOST_XINT_RAWINT b) {
+<a name="l00187"></a>00187 BOOST_XINT_RAWINT remainder;
+<a name="l00188"></a>00188 <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(*<span class="keyword">this</span>, remainder, *<span class="keyword">this</span>, b);
+<a name="l00189"></a>00189 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 BOOST_XINT_RAWINT_TPL
+<a name="l00193"></a>00193 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator%=(<span class="keyword">const</span> BOOST_XINT_RAWINT b) {
+<a name="l00194"></a>00194 BOOST_XINT_RAWINT quotient;
+<a name="l00195"></a>00195 <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(quotient, *<span class="keyword">this</span>, *<span class="keyword">this</span>, b);
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (negative) *<span class="keyword">this</span> += b.abs();
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 BOOST_XINT_RAWINT_TPL
+<a name="l00201"></a>00201 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21" title="Calculate how many dividends would fit into divisor.">operator/</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00202"></a>00202 n2)
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 BOOST_XINT_RAWINT quotient, remainder;
+<a name="l00205"></a>00205 <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(quotient, remainder, n1, n2);
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> quotient;
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 BOOST_XINT_RAWINT_TPL
+<a name="l00210"></a>00210 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00211"></a>00211 n2)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 BOOST_XINT_RAWINT quotient, remainder;
+<a name="l00214"></a>00214 <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(quotient, remainder, n1, n2);
+<a name="l00215"></a>00215 <span class="keywordflow">if</span> (remainder.negative) remainder += n2.abs();
+<a name="l00216"></a>00216 <span class="keywordflow">return</span> remainder;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 } <span class="comment">// namespace detail</span>
+<a name="l00220"></a>00220 } <span class="comment">// namespace xint</span>
+<a name="l00221"></a>00221 } <span class="comment">// namespace boost</span>
+<a name="l00223"></a>00223 <span class="comment"></span>
+<a name="l00224"></a>00224 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_DIVIDE_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/dox/Doxyfile
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/Doxyfile (original)
+++ sandbox/xint/libs/xint/doc/dox/Doxyfile 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -1356,10 +1356,8 @@
 EXPAND_AS_DEFINED = BOOST_XINT_INTEGER_TPL \
                          BOOST_XINT_INTEGER_TYPE \
                          BOOST_XINT_INTEGER_INITIAL_TPL \
- BOOST_XINT_NTINTEGER_TYPE \
- BOOST_XINT_FINTEGER_TPL \
- BOOST_XINT_FINTEGER_TYPE \
- BOOST_XINT_FINTEGER_INITIAL_TPL
+ BOOST_XINT_OTHER_TPL \
+ BOOST_XINT_OTHER_TYPE
 
 # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
 # doxygen's preprocessor will remove all function-like macros that are alone

Modified: sandbox/xint/libs/xint/doc/dox/acknowledgements.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/acknowledgements.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/acknowledgements.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -41,13 +41,14 @@
 - John Bytheway, for an idea for simplifying the template documentation greatly.
 - David Abrahams, for contributing a thought on how to use Boost.Parameter
 effectively with multiple \c bool parameters.
+- Christopher Jefferson, for sharing the best way to support \c
+BOOST_NO_EXCEPTIONS.
 
 And the other Boost development list members who joined the discussion:
 
 - Anders Dalvander
 - Arash Partow
 - Frank Mori Hess
-- Christopher Jefferson
 - Daniel (Herring?)
 - "OvermindDL1"
 - Marius Stoica
@@ -55,6 +56,7 @@
 - Mathias Gaunard
 - Giovanni Piero Deretta
 - Daniel F.
+- Lucanus J Simonson
 
 If I've forgotten anyone, please let me know and I'll correct the oversight.
 */

Modified: sandbox/xint/libs/xint/doc/dox/copyonwrite.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/copyonwrite.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/copyonwrite.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -7,16 +7,16 @@
 <http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/>.
 
 To increase the speed of the library further, it uses a copy-on-write system
-internally. That means that if you copy an integer object, 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.
+internally. That means that if the internal functions copy an integer object,
+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, copy-on-write isn't compatible with thread-safe operation, so by
 default the library will ensure that all of its objects have unique storage
 before they are returned to your program. If you want maximum speed, and can
 ensure that %integer objects are only used in the threads they are created in,
-you can disable this by setting the \c Threadsafe option to \c false on the \c
-integer_t, \c nothrow_integer_t, or \c fixed_integer class templates.
+you can disable this by using the \c threadsafe<false> option on the \c
+integer_t class template.
 */

Modified: sandbox/xint/libs/xint/doc/dox/dependencies.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/dependencies.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/dependencies.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -10,6 +10,7 @@
 - Boost.Random
 - Boost.TypeTraits
 - Boost.SmartPtr
+- Boost.Parameter
 - Boost.Move
 
 All of these are header-only libraries, meaning that you don't need to worry

Modified: sandbox/xint/libs/xint/doc/dox/exceptions.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/exceptions.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/exceptions.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -6,9 +6,10 @@
 this library includes the \c nothrow_integer type.
 
 The \c nothrow_integer type has all of the functions that the \c xint::integer
-type does. When you use it, any exceptions generated by the library are caught
-internally, and the functions return a special value indicating failure (most
-often the \ref nan "Not-a-Number" value).
+type does (they're generated from the same class template). When you use it, any
+exceptions generated by the library are caught internally, and the functions
+return a special value indicating failure (most often the \ref
+nan "Not-a-Number" value).
 
 Here's an example, which can be found in the \c examples subdirectory as
 exceptions.cpp:

Deleted: sandbox/xint/libs/xint/doc/dox/fixed_and_variable.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/fixed_and_variable.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,17 +0,0 @@
-/*! \page different_types The Different Integer Types
-
-The main %integer class in this library is \ref boost::xint::integer. It allows
-for arbitrary-length numbers, limited only by your system's memory. There is an
-error-code-based variant of it as well, \ref boost::xint::nothrow_integer, and a
-fixed-length type (\ref boost::xint::fixed_integer), where you to specify the
-number of bits to limit it to.
-
-All three types are defined as templates, and can be instantiated with different
-allocators, with or without thread safety, and optionally with memory erasure
-for high-security applications.
-
-All three types have an essentially identical set of functions and operators,
-and can do pretty much the same things, though with different time and memory
-efficiencies. See the "detailed description" portion of the reference pages
-linked above for a description of each type and its unique properties.
-*/

Added: sandbox/xint/libs/xint/doc/dox/fixedlength.dox
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/dox/fixedlength.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,22 @@
+/*! \page fixedlength Fixed-Length Integers
+
+Fixed-length integers (created by specifying a non-zero value for the \c Bits
+parameter of the \c integer_t template) always use the same amount of memory.
+They can be noticeably faster than unlimited-length integers, especially when
+combined with an allocator designed for their allocation pattern. However, they
+can be less memory-efficient for holding smaller values. They also silently
+discard the upper bits on any value that is too big for them, which can bite the
+unwary.
+
+\note The number of bits refers only to the unsigned magnitude of the number.
+The sign is stored separately. This means that, for example, a \c integer_t<8>
+has a range of -255 to +255, not -128 to +127 like an \c int8_t.
+
+\par
+Also note that when calculating with a fixed-length integer type, the number
+does not "wrap around" when it exceeds the type's size like the built-in signed
+%integer types do. It is truncated to the lower bits instead. For example,
+<code>integer_t<8>(-255) - 1</code> and <code>integer_t<8>(255) + 1</code> will
+both be zero. However, the sign (on non-zero answers) is preserved, so
+<code>integer_t<8>(-255) - 2</code> will be -1.
+*/

Modified: sandbox/xint/libs/xint/doc/dox/history.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/history.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/history.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -34,4 +34,14 @@
 - Fourth version posted to the Boost File Vault for preliminary review.
 - Another major redesign. All three types are now templates; and it can now be
 compiled or used as a header-only library.
+
+\b 2010-06-12
+- Fifth version posted to the Boost File Vault for preliminary review.
+- Final major redesign (I hope). All types are consolidated into a single \c
+integer_t template type.
+- The library is now solely header-only, dictated by the templated nature of the
+types.
+- Added Boost.Parameter options to the \c integer_t type, so you're no longer
+forced to list the options in order, and list all earlier options before the one
+that you want to change.
 */

Modified: sandbox/xint/libs/xint/doc/dox/index.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/index.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/index.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -55,7 +55,7 @@
 More information on how to use it can be found on the pages listed below.
 
 Detailed Usage Information:
-- \subpage different_types
+- \subpage fixedlength
 - \subpage nan
 - \subpage zero
 - \subpage primes (with example code)

Modified: sandbox/xint/libs/xint/doc/dox/nan.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/nan.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/nan.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -2,25 +2,28 @@
 
 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 \c nothrow_integer type provides a
-Not-a-Number value.
+error in a calculation. For that purpose, the \c Nothrow variants of the \c
+integer_t type provide a Not-a-Number value.
 
-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:
+(Note that this value can \e only be held by the \c Nothrow variants of \c
+integer_t. If you try to assign it to another variant, you'll get a \c
+not_a_number exception.)
 
-- 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
+To create a Not-a-Number, use the \c integer_t::nan function. No other library
+function will return a Not-a-Number except under the following circumstances:
+
+- 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 \c nothrow_integer::is_nan.
+- Test for it, using the member function \c integer_t::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 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>).
+calling returns an <code>integer_t</code>).
 */

Modified: sandbox/xint/libs/xint/doc/dox/r_shared_ptr.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/r_shared_ptr.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/r_shared_ptr.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -4,6 +4,6 @@
 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
-\c integer class, so only developers working \e on the library, rather than \e
+\c integer classes, so only developers working \e on the library, rather than \e
 with it, have to deal with that. I'll accept that trade-off.
 */

Modified: sandbox/xint/libs/xint/doc/dox/r_toobig.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/r_toobig.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/r_toobig.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -3,7 +3,7 @@
 With good reason -- it's essentially the same thing. But in Josuttis' "The C++
 Standard Library", the wording on \c std::range_error is that it's "used to
 report a range error in internal computations." That didn't quite sound like
-what I was trying to convey with that exception, which is that the library type
+what I was trying to convey with that exception, which is that the \c integer_t
 that the user is trying to convert won't fit into the type that he's trying to
 convert it to. It does inherit from std::range_error though, so you can use
 either for most things, and get more specific if desired.
@@ -13,5 +13,3 @@
 to make it \e always throw from a specific namespace, and it fit my sense of
 rightness.
 */
-
-

Added: sandbox/xint/libs/xint/doc/dox/r_whynotx.dox
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/dox/r_whynotx.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,18 @@
+/*! \page r_whynotx I've got a great idea! Why don't you do \e X?
+
+This kind of suggestion, where \e X is something that would require days or
+weeks of work to finish and test properly, has come up several times already.
+Often enough that I've gotten tired of finding ways to diplomatically say no. So
+I'll lay out the reasons here, once and for all:
+
+- The alternative to "release early, release often" is to release late and
+infrequently, or not at all.
+- I need feedback from people who are actually \e using the library in order to
+improve it. Repeatedly delaying it to add another neat feature makes this
+impossible.
+
+By all means, make suggestions. But don't be offended if I respond by referring
+you to this page. It only means that I feel that your suggestion isn't
+appropriate for this version, because it would delay it further, not that it
+isn't appropriate at all.
+*/

Modified: sandbox/xint/libs/xint/doc/dox/random.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/random.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/random.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,9 +12,9 @@
 will throw an exception of type \c no_strong_random if you try to instantiate it
 on a system that does not have an operating-system-supplied generator.
 
-If you have a different preferred generator, perhaps one that uses dedicated
-hardware to produce randomness, you can plug that into the library's \c
-random_by_size and \c random_prime functions instead.
+If you have a different preferred generator, perhaps one that interfaces with
+dedicated hardware to produce randomness, you can plug that into the library's
+\c random_by_size and \c random_prime functions instead.
 
 See the code at the top of \ref primes "the Prime Numbers page" for an example
 of how to use these generators to produce secure prime numbers.

Modified: sandbox/xint/libs/xint/doc/dox/rationale.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/rationale.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/rationale.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -21,4 +21,5 @@
 \section sother Miscellaneous
 - \subpage r_too_big
 - \subpage r_no_floats
+- \subpage r_whynotx
 */

Modified: sandbox/xint/libs/xint/doc/dox/testing.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/testing.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/testing.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -1,9 +1,9 @@
 /*! \page testing The Self-Testing Program
 
 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 \c test
-subdirectory under the main \c %xint directory. All of the major functions are
-thoroughly exercised, and many of the minor ones as well.
+that it is working properly. You can find the source code for it in the \c
+libs/xint/test directory. All of the major functions are thoroughly exercised,
+and many of the minor ones as well.
 
 The source code for the testing program also demonstrates how to use many of the
 library's functions.

Modified: sandbox/xint/libs/xint/doc/dox/threadsafe.dox
==============================================================================
--- sandbox/xint/libs/xint/doc/dox/threadsafe.dox (original)
+++ sandbox/xint/libs/xint/doc/dox/threadsafe.dox 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -1,10 +1,9 @@
-/*! \page threadsafe The \c Threadsafe Template Parameter
+/*! \page threadsafe The \c threadsafe Template Parameter
 
-The \c Threadsafe parameter, on the integer_t, nothrow_integer_t, and
-fixed_integer templates, controls the copy-on-write behavior of the program.
-When set to \c false, identical %integer objects are allowed to share storage,
-which is more efficient for both CPU power and memory, but which is generally
-not safe for multithreaded programs.
+The \c threadsafe parameter on the integer_t template controls the copy-on-write
+behavior of the program. When set to \c false, identical %integer objects are
+allowed to share storage, which is more efficient for both CPU power and memory,
+but which is generally unsafe for multithreaded programs.
 
 That's a simplification though. The only problem multithreaded programs have
 with copy-on-write is that one thread might change an object while another is
@@ -18,7 +17,7 @@
 dealing with very large numbers), but need to use %integer objects from multiple
 threads when one or more might alter them, you can use the \c
 force_thread_safety parameter on the object's copy constructor to make a
-duplicate of an object with its own unique storage, even if the \c Threadsafe
-template parameter is \c false. You'll only need to do that when crossing thread
-boundaries.
+duplicate of an object with its own unique storage, even if the \c threadsafe
+template parameter is \c false. You'll only need to do that when the %integer
+object is crossing thread boundaries.
 */

Modified: sandbox/xint/libs/xint/doc/ex__fibonacci.html
==============================================================================
--- sandbox/xint/libs/xint/doc/ex__fibonacci.html (original)
+++ sandbox/xint/libs/xint/doc/ex__fibonacci.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,7 +27,7 @@
 <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 &lt;iostream&gt;</span>
-<span class="preprocessor">#include &lt;<a class="code" href="xint_8hpp.html" title="This is the include-everything header.">boost/xint/xint.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="integer_8hpp.html" title="Declares the arbitrary-length integer type.">boost/xint/integer.hpp</a>&gt;</span>
 
 <span class="keywordtype">int</span> main() {
     <span class="keyword">using namespace </span>boost::xint;
@@ -64,7 +64,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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/ex__fibonacci_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/ex__fibonacci_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/ex__fibonacci_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/exceptions.html
==============================================================================
--- sandbox/xint/libs/xint/doc/exceptions.html (original)
+++ sandbox/xint/libs/xint/doc/exceptions.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -24,10 +24,10 @@
 
 
 <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 has all of the functions that the <code>xint::integer</code> type does. When you use it, any exceptions generated by the library are caught internally, and the functions return a special value indicating failure (most often the <a class="el" href="nan.html">Not-a-Number</a> value).</p>
+<p>The <code>nothrow_integer</code> type has all of the functions that the <code>xint::integer</code> type does (they're generated from the same class template). When you use it, any exceptions generated by the library are caught internally, and the functions return 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 &lt;<a class="code" href="xint_8hpp.html" title="This is the include-everything header.">boost/xint/xint.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="integer_8hpp.html" title="Declares the arbitrary-length integer type.">boost/xint/integer.hpp</a>&gt;</span>
 <span class="preprocessor">#include &lt;ostream&gt;</span>
 
 <span class="keywordtype">int</span> main() {
@@ -41,7 +41,7 @@
         <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>
- <a class="code" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf" title="The default nothrow_integer type.">nothrow_integer</a> n = <a class="code" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf" title="The default nothrow_integer type.">nothrow_integer</a>(<span class="stringliteral">&quot;&quot;</span>);
+ <a class="code" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4" title="The default arbitrary-length nothrow_integer type.">nothrow_integer</a> n = <a class="code" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4" title="The default arbitrary-length nothrow_integer type.">nothrow_integer</a>(<span class="stringliteral">&quot;&quot;</span>);
 
         <span class="comment">// n should be Not-a-Number, because there was an error but exceptions</span>
         <span class="comment">// are not allowed on nothrow_integers. This example code is fairly</span>
@@ -62,7 +62,7 @@
     }
 }
 </pre></div> </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/exceptions_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/exceptions_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/exceptions_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/exceptions_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/exceptions_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/exceptions_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -60,7 +60,7 @@
 
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/exceptions_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/exceptions_8hpp_source.html (original)
+++ sandbox/xint/libs/xint/doc/exceptions_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -114,7 +114,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/files.html
==============================================================================
--- sandbox/xint/libs/xint/doc/files.html (original)
+++ sandbox/xint/libs/xint/doc/files.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,33 +27,36 @@
 <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="exceptions_8hpp.html">exceptions.hpp</a> [code]</td><td class="indexvalue">The exception namespace </td></tr>
- <tr><td class="indexkey"><a class="el" href="fixed__integer_8hpp.html">fixed_integer.hpp</a> [code]</td><td class="indexvalue">Declares the fixed-size integer type </td></tr>
   <tr><td class="indexkey"><a class="el" href="integer_8hpp.html">integer.hpp</a> [code]</td><td class="indexvalue">Declares the arbitrary-length integer type </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">detail/<a class="el" href="addsubtract_8cpp.html">addsubtract.cpp</a> [code]</td><td class="indexvalue">Contains the definitions of the addition and subtraction functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="andorxor_8cpp.html">andorxor.cpp</a> [code]</td><td class="indexvalue">Contains the functions for ANDing, ORing, and XORing </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="bitfunctions_8cpp.html">bitfunctions.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the bit-manipulation functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="addsubtract_8hpp.html">addsubtract.hpp</a> [code]</td><td class="indexvalue">Contains the definitions of the addition and subtraction functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="andorxor_8hpp.html">andorxor.hpp</a> [code]</td><td class="indexvalue">Contains the functions for ANDing, ORing, and XORing </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="basic__types__and__includes_8hpp.html">basic_types_and_includes.hpp</a> [code]</td><td class="indexvalue">Contains the most basic types, constants, and includes </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="bitfunctions_8hpp.html">bitfunctions.hpp</a> [code]</td><td class="indexvalue">Contains the definitions for the bit-manipulation functions </td></tr>
   <tr><td class="indexkey">detail/<a class="el" href="bitqueue_8hpp.html">bitqueue.hpp</a> [code]</td><td class="indexvalue">Contains the bitqueue_t class, used internally </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="compare_8cpp.html">compare.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the comparison functions </td></tr>
- <tr><td class="indexkey">detail/<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">detail/<a class="el" href="data__t_8cpp.html">data_t.cpp</a> [code]</td><td class="indexvalue">Contains the function definitions for data_t and raw_digits_t </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="divide_8cpp.html">divide.cpp</a> [code]</td><td class="indexvalue">Contains the definitions of the divide function, and its supporting functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="gcd_8cpp.html">gcd.cpp</a> [code]</td><td class="indexvalue">Contains functions using the Greatest Common Denominator algorithm </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="compare_8hpp.html">compare.hpp</a> [code]</td><td class="indexvalue">Contains the definitions for the comparison functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="convert_8hpp.html">convert.hpp</a> [code]</td><td class="indexvalue">Contains the conversion functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="divide_8hpp.html">divide.hpp</a> [code]</td><td class="indexvalue">Contains the definitions of the divide function, and its supporting functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="gcd_8hpp.html">gcd.hpp</a> [code]</td><td class="indexvalue">Contains functions using the Greatest Common Denominator algorithm </td></tr>
   <tr><td class="indexkey">detail/<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">detail/<a class="el" href="modular_8cpp.html">modular.cpp</a> [code]</td><td class="indexvalue">Contains the modular math functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="monty_8cpp.html">monty.cpp</a> [code]</td><td class="indexvalue">Contains the Montgomery Reduction functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="monty_8hpp.html">monty.hpp</a> [code]</td><td class="indexvalue">Montgomery Reduction functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="multiply_8cpp.html">multiply.cpp</a> [code]</td><td class="indexvalue">Contains the multiplication and squaring functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="powers_8cpp.html">powers.cpp</a> [code]</td><td class="indexvalue">Contains functions related to powers of a number </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="prime_8cpp.html">prime.cpp</a> [code]</td><td class="indexvalue">Contains the function definitions for the prime number functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="random_8cpp.html">random.cpp</a> [code]</td><td class="indexvalue">Contains the function definitions for the random number functions </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="roots_8cpp.html">roots.cpp</a> [code]</td><td class="indexvalue">Contains the square-root function definition, and any future root-related ones </td></tr>
- <tr><td class="indexkey">detail/<a class="el" href="shift_8cpp.html">shift.cpp</a> [code]</td><td class="indexvalue">Contains the bit-shifting function definitions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="log2_8hpp.html">log2.hpp</a> [code]</td><td class="indexvalue">Contains the log2 implementations </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="magnitude__manager_8hpp.html">magnitude_manager.hpp</a> [code]</td><td class="indexvalue">Contains the magnitude_manager_t class </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="modular_8hpp.html">modular.hpp</a> [code]</td><td class="indexvalue">Contains the modular math functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="monty_8hpp.html">monty.hpp</a> [code]</td><td class="indexvalue">Contains the Montgomery Reduction functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="multiply_8hpp.html">multiply.hpp</a> [code]</td><td class="indexvalue">Contains the multiplication and squaring functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="options_8hpp.html">options.hpp</a> [code]</td><td class="indexvalue">Declares the arbitrary-length integer type </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="policies_8hpp.html">policies.hpp</a> [code]</td><td class="indexvalue">Contains the policy classes </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="powers_8hpp.html">powers.hpp</a> [code]</td><td class="indexvalue">Contains functions related to powers of a number </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="prime_8hpp.html">prime.hpp</a> [code]</td><td class="indexvalue">Contains the function definitions for the prime number functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="random__by__size_8hpp.html">random_by_size.hpp</a> [code]</td><td class="indexvalue">Contains the random_by_size function </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="randomgen_8hpp.html">randomgen.hpp</a> [code]</td><td class="indexvalue">Contains the function definitions for the random number classes </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="raw__integer_8hpp.html">raw_integer.hpp</a> [code]</td><td class="indexvalue">Contains the raw_integer class declaration, and miscellaneous definitions for member functions </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="roots_8hpp.html">roots.hpp</a> [code]</td><td class="indexvalue">Contains the square-root function definition, and any future root-related ones </td></tr>
+ <tr><td class="indexkey">detail/<a class="el" href="shift_8hpp.html">shift.hpp</a> [code]</td><td class="indexvalue">Contains the bit-shifting function definitions </td></tr>
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/fixed__and__variable_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/fixed__and__variable_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,35 +0,0 @@
-<!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: /home/chad/projects/xint/libs/xint/doc/dox/fixed_and_variable.dox 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>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>/home/chad/projects/xint/libs/xint/doc/dox/fixed_and_variable.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-</table>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/fixed__integer_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/fixed__integer_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,298 +0,0 @@
-<!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: fixed_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>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>fixed_integer.hpp File Reference</h1>
-<p>Declares the fixed-size 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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A fixed-size integer type. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a></td></tr>
-<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-
-<p><tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
-
-<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>STL namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td colspan="2"><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixed__integer_8hpp.html#a66ab715e926e10eb88658e3c09911f81">BOOST_XINT_FINTEGER_INITIAL_TPL</a>&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&nbsp;&nbsp;&nbsp;fixed_integer</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(rtype, op)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465">BOOST_XINT_FIXED_ANY_MATH</a>(op)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allows for operations between fixed_integer types and other integral values. <br/></td></tr>
-<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">boost::xint::swap</a> (fixed_integer &amp;left, fixed_integer &amp;right)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">boost::xint::abs</a> (const fixed_integer n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer::divide_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">boost::xint::divide</a> (const fixed_integer dividend, const fixed_integer divisor)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">boost::xint::clearbit</a> (fixed_integer &amp;n, bitsize_t bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">boost::xint::getbit</a> (const fixed_integer n, bitsize_t bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bitsize_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">boost::xint::highestbit</a> (const fixed_integer n, bitsize_t return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bitsize_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">boost::xint::lowestbit</a> (const fixed_integer n, bitsize_t return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">boost::xint::setbit</a> (fixed_integer &amp;n, bitsize_t bit)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">boost::xint::compare</a> (const fixed_integer n1, const fixed_integer n2, bool ignoresign=false)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">boost::xint::gcd</a> (const fixed_integer num1, const fixed_integer num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">boost::xint::lcm</a> (const fixed_integer num1, const fixed_integer num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">boost::xint::log2</a> (const fixed_integer 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> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">boost::xint::invmod</a> (const fixed_integer n, const fixed_integer modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">boost::xint::mulmod</a> (const fixed_integer n, const fixed_integer by, const fixed_integer modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">boost::xint::powmod</a> (const fixed_integer n, const fixed_integer exponent, const fixed_integer modulus, bool no_monty)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">boost::xint::sqrmod</a> (const fixed_integer n, const fixed_integer modulus)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Random and prime number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa3caa0f3187a2dcc617c005b6b75011b"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">boost::xint::is_prime</a> (const fixed_integer n, callback_t callback=no_callback)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Comparison Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp54923b9793dae891d9489cc5947f263a"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">boost::xint::operator!=</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">boost::xint::operator&lt;</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">boost::xint::operator&lt;=</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">boost::xint::operator==</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">boost::xint::operator&gt;</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">boost::xint::operator&gt;=</a> (const fixed_integer n1, const fixed_integer n2)</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> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">boost::xint::operator%</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">boost::xint::operator&amp;</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">boost::xint::operator*</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">boost::xint::operator+</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">boost::xint::operator-</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">boost::xint::operator/</a> (const fixed_integer dividend, const fixed_integer divisor)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">boost::xint::operator^</a> (const fixed_integer n1, const fixed_integer n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">boost::xint::operator|</a> (const fixed_integer n1, const fixed_integer n2)</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&lt;typename charT , typename traits , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">boost::xint::operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const fixed_integer n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">boost::xint::operator&gt;&gt;</a> (std::basic_istream&lt; charT, traits &gt; &amp;in, fixed_integer &amp;n)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">boost::xint::pow</a> (const fixed_integer n, const fixed_integer e)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">boost::xint::sqrt</a> (const fixed_integer n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">fixed_integer&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">boost::xint::square</a> (const fixed_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&lt;typename Type , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">Type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">boost::xint::to</a> (const fixed_integer n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">xint::binary_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">boost::xint::to_binary</a> (const fixed_integer n, size_t bits=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">boost::xint::to_string</a> (const fixed_integer n, size_t base=10, bool uppercase=false)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Declares the fixed-size integer type. </p>
-
-<p>Definition in file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a66ab715e926e10eb88658e3c09911f81"></a><!-- doxytag: member="fixed_integer.hpp::BOOST_XINT_FINTEGER_INITIAL_TPL" ref="a66ab715e926e10eb88658e3c09911f81" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FINTEGER_INITIAL_TPL&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00033">33</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a930c41cb36ce498a25ec978e9368ae64"></a><!-- doxytag: member="fixed_integer.hpp::BOOST_XINT_FINTEGER_TPL" ref="a930c41cb36ce498a25ec978e9368ae64" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FINTEGER_TPL&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00034">34</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a351ce6b25ae62d47a5e70707f8c24ee0"></a><!-- doxytag: member="fixed_integer.hpp::BOOST_XINT_FINTEGER_TYPE" ref="a351ce6b25ae62d47a5e70707f8c24ee0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FINTEGER_TYPE&nbsp;&nbsp;&nbsp;fixed_integer</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00035">35</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a43d48c65c339614776ffda28eaca7acd"></a><!-- doxytag: member="fixed_integer.hpp::BOOST_XINT_FIXED_ANY_COMPARE" ref="a43d48c65c339614776ffda28eaca7acd" args="(rtype, op)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FIXED_ANY_COMPARE</td>
- <td>(</td>
- <td class="paramtype">rtype, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">op&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span> &lt;<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> Bits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure, <span class="keyword">typename</span> \
- N&gt; \
- rtype op(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span> N n2) { \
- <span class="keywordflow">return</span> op(n1, <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>(n2)); \
- } \
- \
- <span class="keyword">template</span> &lt;<span class="keyword">typename</span> N, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> Bits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> \
- Secure&gt; \
- rtype op(<span class="keyword">const</span> N n1, <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) { \
- <span class="keywordflow">return</span> op(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>(n1), n2); \
- }
-</pre></div><p>Allows for comparisons between fixed_integer types and other integral values. </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00869">869</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae2bb6656859af10870ac5410a3873465"></a><!-- doxytag: member="fixed_integer.hpp::BOOST_XINT_FIXED_ANY_MATH" ref="ae2bb6656859af10870ac5410a3873465" args="(op)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FIXED_ANY_MATH</td>
- <td>(</td>
- <td class="paramtype">op&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span> &lt;<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> Bits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure, <span class="keyword">typename</span> \
- N&gt; \
- <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> op(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span> N n2) \
- { \
- <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(op(n1, <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>(n2))); \
- <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r); \
- } \
- \
- <span class="keyword">template</span> &lt;<span class="keyword">typename</span> N, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> Bits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> \
- Secure&gt; \
- <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> op(<span class="keyword">const</span> N n1, <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) \
- { \
- <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(op(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>(n1), n2)); \
- <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r); \
- }
-</pre></div>
-<p>Allows for operations between fixed_integer types and other integral values. </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00891">891</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/fixed__integer_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/fixed__integer_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,845 +0,0 @@
-<!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: fixed_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>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>fixed_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_FIXED_INTEGER_HPP</span>
-<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_FIXED_INTEGER_HPP</span>
-<a name="l00020"></a>00020 <span class="preprocessor"></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">detail/internals.hpp</a>&quot;</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="random_8hpp.html" title="Declares items relating to random numbers.">random.hpp</a>&quot;</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
-<a name="l00027"></a>00027 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span> <span class="comment">// The file&#39;s constructors make heavy use of the &#39;this&#39; pointer, in a safe</span>
-<a name="l00029"></a>00029 <span class="comment">// manner. MSVC isn&#39;t smart enough to know that it&#39;s safe.</span>
-<a name="l00030"></a>00030 <span class="preprocessor"> #pragma warning(push)</span>
-<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable: 4355)</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00033"></a><a class="code" href="fixed__integer_8hpp.html#a66ab715e926e10eb88658e3c09911f81">00033</a> <span class="preprocessor"></span>
-<a name="l00034"></a><a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">00034</a> <span class="preprocessor">#ifdef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l00035"></a><a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">00035</a> <span class="preprocessor"></span> <span class="comment">// The documentation should see a simplified version of the functions.</span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #define BOOST_XINT_FINTEGER_INITIAL_TPL template&lt;...&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FINTEGER_TPL template&lt;...&gt;</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FINTEGER_TYPE fixed_integer</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FINTEGER_INITIAL_TPL template &lt;boost::xint::bitsize_t \</span>
-<a name="l00041"></a>00041 <span class="preprocessor"> Bits, class Alloc = std::allocator&lt;detail::digit_t&gt;, bool Threadsafe = \</span>
-<a name="l00042"></a>00042 <span class="preprocessor"> true, bool Secure = false&gt;</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FINTEGER_TPL template&lt;boost::xint::bitsize_t Bits, \</span>
-<a name="l00044"></a>00044 <span class="preprocessor"> class Alloc, bool Threadsafe, bool Secure&gt;</span>
-<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FINTEGER_TYPE fixed_integer&lt;Bits, Alloc, Threadsafe, \</span>
-<a name="l00046"></a>00046 <span class="preprocessor"> Secure&gt;</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>
-<a name="l00050"></a>00050 <span class="keyword">namespace </span>detail {
-<a name="l00059"></a>00059 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keyword">class</span> Alloc = std::allocator&lt;digit_t&gt;, <span class="keywordtype">bool</span> Threadsafe
-<a name="l00060"></a>00060 = true, <span class="keywordtype">bool</span> Secure = false&gt;
-<a name="l00061"></a>00061 <span class="keyword">class </span>fixed_digitmanager_t: <span class="keyword">public</span> digitmanager_t&lt;Alloc, Threadsafe, Secure&gt; {
-<a name="l00062"></a>00062 <span class="keyword">public</span>:
-<a name="l00063"></a>00063 fixed_digitmanager_t() { }
-<a name="l00064"></a>00064 fixed_digitmanager_t(<span class="keywordtype">size_t</span> requested_length, <span class="keywordtype">bool</span> readonly = <span class="keyword">false</span>):
-<a name="l00065"></a>00065 digitmanager_t&lt;Alloc, Threadsafe, Secure&gt;(requested_length, readonly)
-<a name="l00066"></a>00066 { }
-<a name="l00067"></a>00067 fixed_digitmanager_t(<span class="keyword">const</span> base_digitmanager_t&amp; copy):
-<a name="l00068"></a>00068 digitmanager_t&lt;Alloc, Threadsafe, Secure&gt;(copy) { }
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keyword">virtual</span> base_digitmanager_t *new_of_type(base_digitmanager_t *copy = 0)<span class="keyword"></span>
-<a name="l00071"></a>00071 <span class="keyword"> const </span>{ <span class="keywordflow">if</span> (copy != 0) <span class="keywordflow">return</span> <span class="keyword">new</span> fixed_digitmanager_t&lt;Bits, Alloc,
-<a name="l00072"></a>00072 Threadsafe, Secure&gt;(*copy); <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">new</span> fixed_digitmanager_t&lt;Bits,
-<a name="l00073"></a>00073 Alloc, Threadsafe, Secure&gt;; }
-<a name="l00074"></a>00074 <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> fixed_length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fixed; }
-<a name="l00075"></a>00075 <span class="keyword">virtual</span> <span class="keywordtype">void</span> endmod_hook(digit_t *p) { *(p + last_digit_index) &amp;=
-<a name="l00076"></a>00076 last_digit_mask; }
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="keyword">protected</span>:
-<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> fixed, last_digit_index;
-<a name="l00080"></a>00080 <span class="keyword">static</span> <span class="keyword">const</span> digit_t last_digit_mask;
-<a name="l00081"></a>00081 };
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt;
-<a name="l00084"></a>00084 <span class="keyword">const</span> <span class="keywordtype">size_t</span> fixed_digitmanager_t&lt;Bits, Alloc, Threadsafe, Secure&gt;::fixed =
-<a name="l00085"></a>00085 detail::data_t::bits_to_digits(Bits);
-<a name="l00086"></a>00086 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt; <span class="keyword">const</span>
-<a name="l00087"></a>00087 <span class="keywordtype">size_t</span> fixed_digitmanager_t&lt;Bits, Alloc, Threadsafe,
-<a name="l00088"></a>00088 Secure&gt;::last_digit_index = fixed_digitmanager_t&lt;Bits, Alloc, Threadsafe,
-<a name="l00089"></a>00089 Secure&gt;::fixed - 1;
-<a name="l00090"></a>00090 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt; <span class="keyword">const</span>
-<a name="l00091"></a>00091 digit_t fixed_digitmanager_t&lt;Bits, Alloc, Threadsafe,
-<a name="l00092"></a>00092 Secure&gt;::last_digit_mask = (Bits % detail::bits_per_digit)
-<a name="l00093"></a>00093 ? digit_t((doubledigit_t(1) &lt;&lt; (Bits % detail::bits_per_digit)) - 1)
-<a name="l00094"></a>00094 : detail::digit_mask;
-<a name="l00095"></a>00095 } <span class="comment">// namespace detail</span>
-<a name="l00097"></a>00097 <span class="comment"></span>
-<a name="l00136"></a>00136 <a class="code" href="fixed__integer_8hpp.html#a66ab715e926e10eb88658e3c09911f81">BOOST_XINT_FINTEGER_INITIAL_TPL</a>
-<a name="l00137"></a>00137 <span class="keyword">class </span>fixed_integer: <span class="keyword">public</span> detail::fixed_digitmanager_t&lt;Bits, Alloc,
-<a name="l00138"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a6db421b2d6ddf1d406e3d5770e221146">00138</a> Threadsafe, Secure&gt;, <span class="keyword">public</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>
-<a name="l00139"></a>00139 {
-<a name="l00140"></a>00140 <span class="keyword">public</span>:
-<a name="l00141"></a>00141 <span class="keyword">typedef</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">type</a>;
-<a name="l00142"></a>00142
-<a name="l00145"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a08b015ede2d74d353558d28e02a1c5ba">00145</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a08b015ede2d74d353558d28e02a1c5ba">fixed_integer</a>();
-<a name="l00146"></a>00146 <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; b, <span class="keywordtype">bool</span> force_thread_safety =
-<a name="l00147"></a>00147 <span class="keyword">false</span>);
-<a name="l00148"></a>00148 <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">type</a>) b): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this,1) { <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">_swap</a>(b); }
-<a name="l00149"></a>00149 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00150"></a>00150 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00151"></a>00151 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00152"></a>00152 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits = 0);
-<a name="l00153"></a>00153 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>&amp; other, <span class="keywordtype">bool</span> force_thread_safety =
-<a name="l00154"></a>00154 <span class="keyword">false</span>);
-<a name="l00155"></a>00155 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> Type n, <span class="keyword">typename</span>
-<a name="l00156"></a>00156 boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::<a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a6db421b2d6ddf1d406e3d5770e221146">type</a>* = 0);
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l00159"></a>00159 <span class="preprocessor"></span>
-<a name="l00160"></a>00160 <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">fixed_integer</a>(<span class="keyword">const</span> detail::data_t c): detail::fixed_digitmanager_t&lt;Bits,
-<a name="l00161"></a>00161 Alloc, Threadsafe, Secure&gt;(*c.holder()), <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, c.length,
-<a name="l00162"></a>00162 c.negative) { data.beginendmod(); }
-<a name="l00163"></a>00163 <span class="preprocessor"> #endif</span>
-<a name="l00164"></a>00164 <span class="preprocessor"></span>
-<a name="l00165"></a>00165
-<a name="l00171"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a653c0a77740b27d6626daf6d3f75690f">00171</a> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a653c0a77740b27d6626daf6d3f75690f">operator=</a>(<a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">type</a>) c);
-<a name="l00172"></a>00172 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#aa0aca358b7caa1ea3a4d32546ce438a3">operator=</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">type</a>) c) { <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">_swap</a>(c);
-<a name="l00173"></a>00173 <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00174"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a1833c141efc0b733cb6a3c1ccb012815">00174</a> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#aa0aca358b7caa1ea3a4d32546ce438a3">operator=</a>(<span class="keyword">const</span> Type n) {
-<a name="l00175"></a>00175 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> nn(n); <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">_swap</a>(nn); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00176"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a946b6f16a5138e190ec6b3663a4e405f">00176</a>
-<a name="l00177"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a25f6feb79f23377b9a070ac57dc3272d">00177</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a1833c141efc0b733cb6a3c1ccb012815">operator!</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_zero(); }
-<a name="l00178"></a>00178 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#aff23f92ff8251cb1ef691e73ed3fe777">operator-</a>() <span class="keyword">const</span>;
-<a name="l00179"></a>00179 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a946b6f16a5138e190ec6b3663a4e405f">operator+</a>() { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00180"></a>00180 <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a946b6f16a5138e190ec6b3663a4e405f">operator+</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00181"></a>00181 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2e924b61df38e812c682f86e540f37d6" title="The Bitwise Ones&amp;#39; Complement (i.e. bitwise NOT) operator.">operator~</a>() <span class="keyword">const</span>;
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a41854f088fcd6eee52d9b99ad9f631f6">operator+=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b);
-<a name="l00184"></a>00184 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#affc385351bd34308be1681f9c3893f10">operator-=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b);
-<a name="l00185"></a>00185 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ae6933c0021c085aefef2c84871cf56aa">operator*=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b);
-<a name="l00186"></a>00186 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#af114bab3ffdcabfbb1dd968e32c47cd0">operator/=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b);
-<a name="l00187"></a>00187 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a5be10cf23614f86487795d3a52c59fe0">operator%=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b);
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a88dbfe8b18a9ea266e7613a55e0c8008">operator++</a>();
-<a name="l00190"></a>00190 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ad85b39d612438f84970e1d812f078b8a">operator--</a>();
-<a name="l00191"></a>00191 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a88dbfe8b18a9ea266e7613a55e0c8008">operator++</a>(<span class="keywordtype">int</span>);
-<a name="l00192"></a>00192 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ad85b39d612438f84970e1d812f078b8a">operator--</a>(<span class="keywordtype">int</span>);
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#aaa2bd5962f94dfecdb629fe91ca11916">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n);
-<a name="l00195"></a>00195 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2272dbf43c92ce1f56d5f0618a137425">operator|=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n);
-<a name="l00196"></a>00196 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ad568affeea647ef91d0de1d88cc76192">operator^=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n);
-<a name="l00197"></a>00197 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a326278f38ee384d2469f758e2d91c941">operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) <span class="keyword">const</span>;
-<a name="l00198"></a>00198 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#afaa0193c95ade2362b9e55dc4ebeb8f3">operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) <span class="keyword">const</span>;
-<a name="l00199"></a>00199 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a45846e1b9b7a31865ba2fb49b57ab138">operator&lt;&lt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift);
-<a name="l00200"></a>00200 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ac13d7456ad391ce19c5b2c22c94dadf5">operator&gt;&gt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift);
-<a name="l00202"></a>00202
-<a name="l00205"></a>00205 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#af7439d5c106032c8dd7909fca6ad8d12">is_odd</a>() <span class="keyword">const</span>;
-<a name="l00206"></a>00206 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a8d1217f7cded81d3ac3803ec4fd8a282">is_even</a>() <span class="keyword">const</span>;
-<a name="l00207"></a>00207 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a8ee6b3914e05703471fde2057226ddb3">sign</a>(<span class="keywordtype">bool</span> signed_zero = <span class="keyword">false</span>) <span class="keyword">const</span>;
-<a name="l00208"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a6919f6d6ac20e8a6dd2d539939ce1e38">00208</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a729023140c1b6edba03ffaa063c14e7f">hex_digits</a>() <span class="keyword">const</span>;
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t&lt;BOOST_XINT_FINTEGER_TYPE&gt;</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">divide_t</a>;
-<a name="l00212"></a>00212
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ac4928defd092ad3f30af55e0a221bd90">pow2</a>(<span class="keywordtype">size_t</span> exponent);
-<a name="l00222"></a>00222 <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2870a3a1b0b144dbfca6cc7f9134890c">factorial</a>(<span class="keywordtype">size_t</span> n);
-<a name="l00223"></a>00223 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#afe0884583cdf8c3a60dc3fd35fa40a31">random_by_size</a>(Type&amp;
-<a name="l00224"></a>00224 gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on = <span class="keyword">false</span>, <span class="keywordtype">bool</span> low_bit_on =
-<a name="l00225"></a>00225 <span class="keyword">false</span>, <span class="keywordtype">bool</span> can_be_negative = <span class="keyword">false</span>);
-<a name="l00226"></a>00226 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a7215f0327bf6d96d27f3ea805657e64c">random_prime</a>(Type&amp;
-<a name="l00227"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">00227</a> gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>);
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">_swap</a>(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; s) { <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">std::swap</a>; <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(data,
-<a name="l00231"></a>00231 s.data); }
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 <span class="keyword">private</span>:
-<a name="l00234"></a>00234 <a class="code" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(<a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a6db421b2d6ddf1d406e3d5770e221146">type</a>)
-<a name="l00235"></a>00235 };
-<a name="l00236"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2319506640477364b75decc7151a5776">00236</a>
-<a name="l00238"></a>00238 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00239"></a>00239 BOOST_XINT_FINTEGER_TYPE::fixed_integer(): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1) {
-<a name="l00240"></a>00240 <span class="comment">// Don&#39;t need to do anything, already preinitialized to zero.</span>
-<a name="l00241"></a>00241 }
-<a name="l00242"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#acd32b9af167671d4edbe2b2f26f2fce7">00242</a>
-<a name="l00244"></a>00244 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00245"></a>00245 BOOST_XINT_FINTEGER_TYPE::fixed_integer(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; b, <span class="keywordtype">bool</span>
-<a name="l00246"></a>00246 force_thread_safety): detail::fixed_digitmanager_t&lt;Bits, Alloc, Threadsafe,
-<a name="l00247"></a>00247 Secure&gt;(*b.data.holder()), <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, (std::min)(b.data.length,
-<a name="l00248"></a>00248 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>::fixed), b.data.negative)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 data.beginendmod();
-<a name="l00251"></a>00251 <span class="keywordflow">if</span> (force_thread_safety &amp;&amp; Threadsafe == <span class="keyword">false</span>) data.make_unique();
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00260"></a>00260 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00261"></a>00261 BOOST_XINT_FINTEGER_TYPE::fixed_integer(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base):
-<a name="l00262"></a>00262 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00263"></a>00263 {
-<a name="l00264"></a>00264 data.from_string(str, strlen(str), base);
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266
-<a name="l00274"></a>00274 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00275"></a>00275 BOOST_XINT_FINTEGER_TYPE::fixed_integer(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span>
-<a name="l00276"></a>00276 base): any_integer(*this, 1)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 data.from_string(str, endptr, base);
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280
-<a name="l00287"></a>00287 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00288"></a>00288 BOOST_XINT_FINTEGER_TYPE::fixed_integer(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base):
-<a name="l00289"></a>00289 any_integer(*this, 1)
-<a name="l00290"></a>00290 {
-<a name="l00291"></a>00291 data.from_string(str.c_str(), str.length(), base);
-<a name="l00292"></a>00292 }
-<a name="l00293"></a>00293
-<a name="l00301"></a>00301 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00302"></a>00302 BOOST_XINT_FINTEGER_TYPE::fixed_integer(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <span class="keywordtype">size_t</span> bits):
-<a name="l00303"></a>00303 any_integer(*this, 1)
-<a name="l00304"></a>00304 {
-<a name="l00305"></a>00305 data.from_binary(b, bits);
-<a name="l00306"></a>00306 }
-<a name="l00307"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a9caad2ce5da7b3a30385f6159903a680">00307</a>
-<a name="l00309"></a>00309 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00310"></a>00310 BOOST_XINT_FINTEGER_TYPE::fixed_integer(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>&amp; c, <span class="keywordtype">bool</span>):
-<a name="l00311"></a>00311 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00312"></a>00312 {
-<a name="l00313"></a>00313 <span class="keywordflow">if</span> (c._data().is_nan()) <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="l00314"></a>00314 data.duplicate_data(c._data());
-<a name="l00315"></a>00315 }
-<a name="l00316"></a>00316
-<a name="l00329"></a>00329 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00330"></a>00330 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; BOOST_XINT_FINTEGER_TYPE::fixed_integer(<span class="keyword">const</span> Type n,
-<a name="l00331"></a>00331 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::type*):
-<a name="l00332"></a>00332 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00333"></a>00333 {
-<a name="l00334"></a>00334 <span class="keywordflow">if</span> (std::numeric_limits&lt;Type&gt;::is_signed) data.set_signed(n);
-<a name="l00335"></a>00335 <span class="keywordflow">else</span> data.set_unsigned(n);
-<a name="l00336"></a>00336 }
-<a name="l00337"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#aa0aca358b7caa1ea3a4d32546ce438a3">00337</a>
-<a name="l00338"></a>00338 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00339"></a>00339 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp;
-<a name="l00340"></a>00340 BOOST_XINT_FINTEGER_TYPE::operator=(<a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1fixed__integer.html" title="A fixed-size integer type.">type</a>) c)
-<a name="l00341"></a>00341 {
-<a name="l00342"></a>00342 data = c.data;
-<a name="l00343"></a>00343 data.beginendmod();
-<a name="l00344"></a>00344 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00345"></a>00345 }
-<a name="l00346"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#aff23f92ff8251cb1ef691e73ed3fe777">00346</a>
-<a name="l00348"></a>00348 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00349"></a>00349 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">BOOST_XINT_FINTEGER_TYPE::operator-</a>()<span class="keyword"> const </span>{
-<a name="l00350"></a>00350 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(-data);
-<a name="l00351"></a>00351 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00352"></a>00352 }
-<a name="l00353"></a>00353
-<a name="l00359"></a>00359 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00360"></a>00360 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> BOOST_XINT_FINTEGER_TYPE::operator~()<span class="keyword"> const </span>{
-<a name="l00361"></a>00361 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00362"></a>00362 r.data.beginmod(this-&gt;fixed_length(), <span class="keyword">true</span>);
-<a name="l00363"></a>00363 <span class="keyword">const</span> detail::digit_t *s = data.digits(), *se = s + data.length;
-<a name="l00364"></a>00364 detail::digit_t *t = r.data.digits(), *te = t + this-&gt;fixed_length();
-<a name="l00365"></a>00365 <span class="keywordflow">while</span> (s != se) *t++ = ~(*s++);
-<a name="l00366"></a>00366 <span class="keywordflow">while</span> (t != te) *t++ = <span class="keyword">static_cast&lt;</span>detail::digit_t<span class="keyword">&gt;</span>(~0);
-<a name="l00367"></a>00367 r.data.length = this-&gt;fixed_length();
-<a name="l00368"></a>00368 r.data.endmod();
-<a name="l00369"></a>00369 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00370"></a>00370 }
-<a name="l00371"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a41854f088fcd6eee52d9b99ad9f631f6">00371</a>
-<a name="l00373"></a>00373 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00374"></a>00374 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator+=(<span class="keyword">const</span>
-<a name="l00375"></a>00375 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b)
-<a name="l00376"></a>00376 {
-<a name="l00377"></a>00377 data += b.data;
-<a name="l00378"></a>00378 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00379"></a>00379 }
-<a name="l00380"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#affc385351bd34308be1681f9c3893f10">00380</a>
-<a name="l00382"></a>00382 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00383"></a>00383 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator-=(<span class="keyword">const</span>
-<a name="l00384"></a>00384 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b)
-<a name="l00385"></a>00385 {
-<a name="l00386"></a>00386 data -= b.data;
-<a name="l00387"></a>00387 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00388"></a>00388 }
-<a name="l00389"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ae6933c0021c085aefef2c84871cf56aa">00389</a>
-<a name="l00391"></a>00391 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00392"></a>00392 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator*=(<span class="keyword">const</span>
-<a name="l00393"></a>00393 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b)
-<a name="l00394"></a>00394 {
-<a name="l00395"></a>00395 data *= b.data;
-<a name="l00396"></a>00396 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00397"></a>00397 }
-<a name="l00398"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#af114bab3ffdcabfbb1dd968e32c47cd0">00398</a>
-<a name="l00400"></a>00400 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00401"></a>00401 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator/=(<span class="keyword">const</span>
-<a name="l00402"></a>00402 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b)
-<a name="l00403"></a>00403 {
-<a name="l00404"></a>00404 data /= b.data;
-<a name="l00405"></a>00405 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00406"></a>00406 }
-<a name="l00407"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a5be10cf23614f86487795d3a52c59fe0">00407</a>
-<a name="l00409"></a>00409 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00410"></a>00410 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator%=(<span class="keyword">const</span>
-<a name="l00411"></a>00411 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> b)
-<a name="l00412"></a>00412 {
-<a name="l00413"></a>00413 data %= b.data;
-<a name="l00414"></a>00414 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00415"></a>00415 }
-<a name="l00416"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a88dbfe8b18a9ea266e7613a55e0c8008">00416</a>
-<a name="l00418"></a>00418 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00419"></a>00419 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator++() {
-<a name="l00420"></a>00420 ++data;
-<a name="l00421"></a>00421 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00422"></a>00422 }
-<a name="l00423"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ad85b39d612438f84970e1d812f078b8a">00423</a>
-<a name="l00425"></a>00425 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00426"></a>00426 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator--() {
-<a name="l00427"></a>00427 --data;
-<a name="l00428"></a>00428 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00429"></a>00429 }
-<a name="l00430"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a43d91bef8635dbe48d89e6bcc6b7c644">00430</a>
-<a name="l00432"></a>00432 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00433"></a>00433 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> BOOST_XINT_FINTEGER_TYPE::operator++(<span class="keywordtype">int</span>) {
-<a name="l00434"></a>00434 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(data++);
-<a name="l00435"></a>00435 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00436"></a>00436 }
-<a name="l00437"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a54a920edd865aa7e8b26ff8ba457e826">00437</a>
-<a name="l00439"></a>00439 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00440"></a>00440 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> BOOST_XINT_FINTEGER_TYPE::operator--(<span class="keywordtype">int</span>) {
-<a name="l00441"></a>00441 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(data--);
-<a name="l00442"></a>00442 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00443"></a>00443 }
-<a name="l00444"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#aaa2bd5962f94dfecdb629fe91ca11916">00444</a>
-<a name="l00446"></a>00446 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00447"></a>00447 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator&amp;=(<span class="keyword">const</span>
-<a name="l00448"></a>00448 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n)
-<a name="l00449"></a>00449 {
-<a name="l00450"></a>00450 data &amp;= n.data;
-<a name="l00451"></a>00451 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00452"></a>00452 }
-<a name="l00453"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2272dbf43c92ce1f56d5f0618a137425">00453</a>
-<a name="l00455"></a>00455 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00456"></a>00456 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator|=(<span class="keyword">const</span>
-<a name="l00457"></a>00457 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n)
-<a name="l00458"></a>00458 {
-<a name="l00459"></a>00459 data |= n.data;
-<a name="l00460"></a>00460 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00461"></a>00461 }
-<a name="l00462"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ad568affeea647ef91d0de1d88cc76192">00462</a>
-<a name="l00464"></a>00464 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00465"></a>00465 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator^=(<span class="keyword">const</span>
-<a name="l00466"></a>00466 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n)
-<a name="l00467"></a>00467 {
-<a name="l00468"></a>00468 data ^= n.data;
-<a name="l00469"></a>00469 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00470"></a>00470 }
-<a name="l00471"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a326278f38ee384d2469f758e2d91c941">00471</a>
-<a name="l00473"></a>00473 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00474"></a>00474 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">BOOST_XINT_FINTEGER_TYPE::operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)<span class="keyword"></span>
-<a name="l00475"></a>00475 <span class="keyword"> const</span>
-<a name="l00476"></a>00476 <span class="keyword"></span>{
-<a name="l00477"></a>00477 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(data &lt;&lt; shift);
-<a name="l00478"></a>00478 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00479"></a>00479 }
-<a name="l00480"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#afaa0193c95ade2362b9e55dc4ebeb8f3">00480</a>
-<a name="l00482"></a>00482 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00483"></a>00483 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">BOOST_XINT_FINTEGER_TYPE::operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)<span class="keyword"></span>
-<a name="l00484"></a>00484 <span class="keyword"> const</span>
-<a name="l00485"></a>00485 <span class="keyword"></span>{
-<a name="l00486"></a>00486 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(data &gt;&gt; shift);
-<a name="l00487"></a>00487 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00488"></a>00488 }
-<a name="l00489"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a45846e1b9b7a31865ba2fb49b57ab138">00489</a>
-<a name="l00491"></a>00491 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00492"></a>00492 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator&lt;&lt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) {
-<a name="l00493"></a>00493 data &lt;&lt;= shift;
-<a name="l00494"></a>00494 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00495"></a>00495 }
-<a name="l00496"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ac13d7456ad391ce19c5b2c22c94dadf5">00496</a>
-<a name="l00498"></a>00498 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00499"></a>00499 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; BOOST_XINT_FINTEGER_TYPE::operator&gt;&gt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) {
-<a name="l00500"></a>00500 data &gt;&gt;= shift;
-<a name="l00501"></a>00501 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00502"></a>00502 }
-<a name="l00503"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#af7439d5c106032c8dd7909fca6ad8d12">00503</a>
-<a name="l00505"></a>00505 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00506"></a>00506 <span class="keywordtype">bool</span> BOOST_XINT_FINTEGER_TYPE::is_odd()<span class="keyword"> const </span>{
-<a name="l00507"></a>00507 <span class="keywordflow">return</span> data.is_odd();
-<a name="l00508"></a>00508 }
-<a name="l00509"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a8d1217f7cded81d3ac3803ec4fd8a282">00509</a>
-<a name="l00511"></a>00511 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00512"></a>00512 <span class="keywordtype">bool</span> BOOST_XINT_FINTEGER_TYPE::is_even()<span class="keyword"> const </span>{
-<a name="l00513"></a>00513 <span class="keywordflow">return</span> data.is_even();
-<a name="l00514"></a>00514 }
-<a name="l00515"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a8ee6b3914e05703471fde2057226ddb3">00515</a>
-<a name="l00517"></a>00517 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00518"></a>00518 <span class="keywordtype">int</span> BOOST_XINT_FINTEGER_TYPE::sign(<span class="keywordtype">bool</span> signed_zero)<span class="keyword"> const </span>{
-<a name="l00519"></a>00519 <span class="keywordflow">return</span> data.sign(signed_zero);
-<a name="l00520"></a>00520 }
-<a name="l00521"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a729023140c1b6edba03ffaa063c14e7f">00521</a>
-<a name="l00523"></a>00523 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00524"></a>00524 <span class="keywordtype">size_t</span> BOOST_XINT_FINTEGER_TYPE::hex_digits()<span class="keyword"> const </span>{
-<a name="l00525"></a>00525 <span class="keywordflow">return</span> data.hex_digits();
-<a name="l00526"></a>00526 }
-<a name="l00527"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ac4928defd092ad3f30af55e0a221bd90">00527</a>
-<a name="l00529"></a>00529 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00530"></a>00530 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> BOOST_XINT_FINTEGER_TYPE::pow2(<span class="keywordtype">size_t</span> exponent) {
-<a name="l00531"></a>00531 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00532"></a>00532 <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#ac4928defd092ad3f30af55e0a221bd90">detail::pow2</a>(r.data, exponent);
-<a name="l00533"></a>00533 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00534"></a>00534 }
-<a name="l00535"></a><a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2870a3a1b0b144dbfca6cc7f9134890c">00535</a>
-<a name="l00537"></a>00537 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00538"></a>00538 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> BOOST_XINT_FINTEGER_TYPE::factorial(<span class="keywordtype">size_t</span> n) {
-<a name="l00539"></a>00539 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00540"></a>00540 <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a2870a3a1b0b144dbfca6cc7f9134890c">detail::factorial</a>(r.data, n);
-<a name="l00541"></a>00541 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00542"></a>00542 }
-<a name="l00543"></a>00543
-<a name="l00545"></a>00545 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00546"></a>00546 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
-<a name="l00547"></a>00547 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> BOOST_XINT_FINTEGER_TYPE::random_by_size(Type&amp; gen,
-<a name="l00548"></a>00548 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
-<a name="l00549"></a>00549 can_be_negative)
-<a name="l00550"></a>00550 {
-<a name="l00551"></a>00551 detail::random_generator&lt;Type&gt; rgen(gen);
-<a name="l00552"></a>00552
-<a name="l00553"></a>00553 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00554"></a>00554 <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#afe0884583cdf8c3a60dc3fd35fa40a31">detail::random_by_size</a>(r._data(), rgen, size_in_bits, high_bit_on,
-<a name="l00555"></a>00555 low_bit_on, can_be_negative);
-<a name="l00556"></a>00556 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00557"></a>00557 }
-<a name="l00558"></a>00558
-<a name="l00560"></a>00560 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00561"></a>00561 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
-<a name="l00562"></a>00562 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> BOOST_XINT_FINTEGER_TYPE::random_prime(Type&amp; gen,
-<a name="l00563"></a>00563 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
-<a name="l00564"></a>00564 {
-<a name="l00565"></a>00565 detail::random_generator&lt;Type&gt; rgen(gen);
-<a name="l00566"></a>00566
-<a name="l00567"></a>00567 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00568"></a>00568 <a class="code" href="classboost_1_1xint_1_1fixed__integer.html#a7215f0327bf6d96d27f3ea805657e64c">detail::random_prime</a>(r._data(), rgen, size_in_bits, callback);
-<a name="l00569"></a>00569 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00570"></a>00570 }
-<a name="l00571"></a>00571
-<a name="l00573"></a>00573 <span class="comment">// Free function template definitions</span>
-<a name="l00574"></a>00574
-<a name="l00578"></a>00578 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00579"></a>00579 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n) {
-<a name="l00580"></a>00580 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(<a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(n._data()));
-<a name="l00581"></a>00581 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00582"></a>00582 }
-<a name="l00583"></a><a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">00583</a>
-<a name="l00585"></a>00585 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00586"></a>00586 <span class="keyword">typename</span> BOOST_XINT_FINTEGER_TYPE::divide_t <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(<span class="keyword">const</span>
-<a name="l00587"></a>00587 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> dividend, <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> divisor)
-<a name="l00588"></a>00588 {
-<a name="l00589"></a>00589 <span class="keyword">typename</span> BOOST_XINT_FINTEGER_TYPE::divide_t r;
-<a name="l00590"></a>00590 <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(r.quotient._data(), r.remainder._data(), dividend._data(),
-<a name="l00591"></a>00591 divisor._data());
-<a name="l00592"></a>00592 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00593"></a>00593 }
-<a name="l00595"></a>00595
-<a name="l00599"></a>00599 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00600"></a>00600 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n) {
-<a name="l00601"></a>00601 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00602"></a>00602 <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(r._data(), n._data());
-<a name="l00603"></a>00603 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00604"></a>00604 }
-<a name="l00605"></a><a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">00605</a>
-<a name="l00607"></a>00607 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00608"></a>00608 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00609"></a>00609 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> e)
-<a name="l00610"></a>00610 {
-<a name="l00611"></a>00611 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00612"></a>00612 <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(r._data(), n._data(), e._data());
-<a name="l00613"></a>00613 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00614"></a>00614 }
-<a name="l00615"></a><a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">00615</a>
-<a name="l00617"></a>00617 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00618"></a>00618 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n) {
-<a name="l00619"></a>00619 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00620"></a>00620 <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(r._data(), n._data());
-<a name="l00621"></a>00621 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00622"></a>00622 }
-<a name="l00624"></a>00624
-<a name="l00628"></a>00628 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> Bits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span>
-<a name="l00629"></a>00629 Secure&gt;
-<a name="l00630"></a>00630 Type <a class="code" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">to</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n) {
-<a name="l00631"></a>00631 <span class="keywordflow">return</span> to&lt;Type&gt;(n._data());
-<a name="l00632"></a>00632 }
-<a name="l00633"></a><a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">00633</a>
-<a name="l00635"></a>00635 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00636"></a>00636 std::string <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <span class="keywordtype">size_t</span> base = 10, <span class="keywordtype">bool</span>
-<a name="l00637"></a>00637 uppercase = <span class="keyword">false</span>)
-<a name="l00638"></a>00638 {
-<a name="l00639"></a>00639 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(n._data(), base, uppercase);
-<a name="l00640"></a>00640 }
-<a name="l00641"></a><a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">00641</a>
-<a name="l00643"></a>00643 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00644"></a>00644 <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <span class="keywordtype">size_t</span> bits = 0) {
-<a name="l00645"></a>00645 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(n._data(), bits);
-<a name="l00646"></a>00646 }
-<a name="l00648"></a>00648
-<a name="l00652"></a>00652 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00653"></a>00653 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00654"></a>00654 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(n._data(), bit);
-<a name="l00655"></a>00655 }
-<a name="l00656"></a><a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">00656</a>
-<a name="l00658"></a>00658 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00659"></a>00659 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00660"></a>00660 <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(n._data(), bit);
-<a name="l00661"></a>00661 }
-<a name="l00662"></a><a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">00662</a>
-<a name="l00664"></a>00664 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00665"></a>00665 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00666"></a>00666 <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(n._data(), bit);
-<a name="l00667"></a>00667 }
-<a name="l00668"></a><a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">00668</a>
-<a name="l00670"></a>00670 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00671"></a>00671 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero =
-<a name="l00672"></a>00672 0)
-<a name="l00673"></a>00673 {
-<a name="l00674"></a>00674 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(n._data(), return_if_zero);
-<a name="l00675"></a>00675 }
-<a name="l00676"></a><a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">00676</a>
-<a name="l00678"></a>00678 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00679"></a>00679 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero
-<a name="l00680"></a>00680 = 0)
-<a name="l00681"></a>00681 {
-<a name="l00682"></a>00682 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(n._data(), return_if_zero);
-<a name="l00683"></a>00683 }
-<a name="l00685"></a>00685
-<a name="l00689"></a>00689 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00690"></a>00690 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00691"></a>00691 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> by, <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> modulus)
-<a name="l00692"></a>00692 {
-<a name="l00693"></a>00693 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00694"></a>00694 <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(r._data(), n._data(), by._data(), modulus._data());
-<a name="l00695"></a>00695 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00696"></a>00696 }
-<a name="l00697"></a><a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">00697</a>
-<a name="l00699"></a>00699 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00700"></a>00700 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00701"></a>00701 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> modulus)
-<a name="l00702"></a>00702 {
-<a name="l00703"></a>00703 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00704"></a>00704 <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(r._data(), n._data(), modulus._data());
-<a name="l00705"></a>00705 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00706"></a>00706 }
-<a name="l00707"></a><a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">00707</a>
-<a name="l00709"></a>00709 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00710"></a>00710 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00711"></a>00711 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> exponent, <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> modulus,
-<a name="l00712"></a>00712 <span class="keywordtype">bool</span> no_monty)
-<a name="l00713"></a>00713 {
-<a name="l00714"></a>00714 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00715"></a>00715 <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(r._data(), n._data(), exponent._data(), modulus._data(), no_monty);
-<a name="l00716"></a>00716 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00717"></a>00717 }
-<a name="l00718"></a><a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">00718</a>
-<a name="l00720"></a>00720 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00721"></a>00721 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00722"></a>00722 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> modulus)
-<a name="l00723"></a>00723 {
-<a name="l00724"></a>00724 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00725"></a>00725 <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(r._data(), n._data(), modulus._data());
-<a name="l00726"></a>00726 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00727"></a>00727 }
-<a name="l00729"></a>00729
-<a name="l00733"></a>00733 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00734"></a>00734 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback =
-<a name="l00735"></a>00735 <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>)
-<a name="l00736"></a>00736 {
-<a name="l00737"></a>00737 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(n._data(), callback);
-<a name="l00738"></a>00738 }
-<a name="l00740"></a><a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">00740</a>
-<a name="l00743"></a>00743 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00744"></a><a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">00744</a> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(n1._data(), n2._data()); }
-<a name="l00745"></a>00745 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00746"></a><a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">00746</a> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(n1._data(), n2._data()); }
-<a name="l00747"></a>00747 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00748"></a><a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">00748</a> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(n1._data(), n2._data()); }
-<a name="l00749"></a>00749 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00750"></a><a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">00750</a> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(n1._data(), n2._data()); }
-<a name="l00751"></a>00751 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00752"></a>00752 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(n1._data(), n2._data()); }
-<a name="l00753"></a>00753 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00754"></a>00754 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(n1._data(), n2._data()); }
-<a name="l00756"></a>00756
-<a name="l00760"></a>00760 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00761"></a>00761 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00762"></a>00762 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2)
-<a name="l00763"></a>00763 {
-<a name="l00764"></a>00764 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(n1._data() + n2._data());
-<a name="l00765"></a>00765 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00766"></a>00766 }
-<a name="l00767"></a><a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">00767</a>
-<a name="l00769"></a>00769 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00770"></a>00770 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00771"></a>00771 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2)
-<a name="l00772"></a>00772 {
-<a name="l00773"></a>00773 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(n1._data() - n2._data());
-<a name="l00774"></a>00774 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00775"></a>00775 }
-<a name="l00776"></a><a class="code" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">00776</a>
-<a name="l00778"></a>00778 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00779"></a>00779 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">operator*</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00780"></a>00780 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2)
-<a name="l00781"></a>00781 {
-<a name="l00782"></a>00782 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(n1._data() * n2._data());
-<a name="l00783"></a>00783 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00784"></a>00784 }
-<a name="l00785"></a><a class="code" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">00785</a>
-<a name="l00787"></a>00787 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00788"></a>00788 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">operator/</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> dividend,
-<a name="l00789"></a>00789 <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> divisor)
-<a name="l00790"></a>00790 {
-<a name="l00791"></a>00791 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(dividend._data() /
-<a name="l00792"></a>00792 divisor._data());
-<a name="l00793"></a>00793 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00794"></a>00794 }
-<a name="l00795"></a><a class="code" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">00795</a>
-<a name="l00797"></a>00797 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00798"></a>00798 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">operator%</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00799"></a>00799 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2)
-<a name="l00800"></a>00800 {
-<a name="l00801"></a>00801 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(n1._data() % n2._data());
-<a name="l00802"></a>00802 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00803"></a>00803 }
-<a name="l00804"></a><a class="code" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">00804</a>
-<a name="l00806"></a>00806 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00807"></a>00807 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00808"></a>00808 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2)
-<a name="l00809"></a>00809 {
-<a name="l00810"></a>00810 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(n1._data() &amp; n2._data());
-<a name="l00811"></a>00811 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00812"></a>00812 }
-<a name="l00813"></a><a class="code" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">00813</a>
-<a name="l00815"></a>00815 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00816"></a>00816 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">operator|</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00817"></a>00817 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2)
-<a name="l00818"></a>00818 {
-<a name="l00819"></a>00819 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(n1._data() | n2._data());
-<a name="l00820"></a>00820 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00821"></a>00821 }
-<a name="l00822"></a><a class="code" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">00822</a>
-<a name="l00824"></a>00824 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00825"></a>00825 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">operator^</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00826"></a>00826 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n2)
-<a name="l00827"></a>00827 {
-<a name="l00828"></a>00828 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r(n1._data() ^ n2._data());
-<a name="l00829"></a>00829 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00830"></a>00830 }
-<a name="l00832"></a>00832
-<a name="l00836"></a>00836 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00837"></a>00837 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> num1, <span class="keyword">const</span>
-<a name="l00838"></a>00838 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> num2)
-<a name="l00839"></a>00839 {
-<a name="l00840"></a>00840 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00841"></a>00841 <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(r._data(), num1._data(), num2._data());
-<a name="l00842"></a>00842 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00843"></a>00843 }
-<a name="l00844"></a><a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">00844</a>
-<a name="l00846"></a>00846 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00847"></a>00847 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> num1, <span class="keyword">const</span>
-<a name="l00848"></a>00848 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> num2)
-<a name="l00849"></a>00849 {
-<a name="l00850"></a>00850 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> r;
-<a name="l00851"></a>00851 <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(r._data(), num1._data(), num2._data());
-<a name="l00852"></a>00852 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00853"></a>00853 }
-<a name="l00854"></a><a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">00854</a>
-<a name="l00856"></a>00856 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00857"></a>00857 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n1, <span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>
-<a name="l00858"></a>00858 n2, <span class="keywordtype">bool</span> ignoresign = <span class="keyword">false</span>)
-<a name="l00859"></a>00859 {
-<a name="l00860"></a>00860 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(n1._data(), n2._data(), ignoresign);
-<a name="l00861"></a>00861 }
-<a name="l00862"></a><a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">00862</a>
-<a name="l00864"></a>00864 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00865"></a>00865 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(<span class="keyword">const</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n) {
-<a name="l00866"></a>00866 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(n._data());
-<a name="l00867"></a>00867 }
-<a name="l00869"></a><a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">00869</a>
-<a name="l00872"></a>00872 <span class="preprocessor">#define BOOST_XINT_FIXED_ANY_COMPARE(rtype, op) \</span>
-<a name="l00873"></a>00873 <span class="preprocessor"> template &lt;bitsize_t Bits, class Alloc, bool Threadsafe, bool Secure, typename \</span>
-<a name="l00874"></a>00874 <span class="preprocessor"> N&gt; \</span>
-<a name="l00875"></a>00875 <span class="preprocessor"> rtype op(const BOOST_XINT_FINTEGER_TYPE n1, const N n2) { \</span>
-<a name="l00876"></a>00876 <span class="preprocessor"> return op(n1, BOOST_XINT_FINTEGER_TYPE(n2)); \</span>
-<a name="l00877"></a>00877 <span class="preprocessor"> } \</span>
-<a name="l00878"></a>00878 <span class="preprocessor"> \</span>
-<a name="l00879"></a>00879 <span class="preprocessor"> template &lt;typename N, bitsize_t Bits, class Alloc, bool Threadsafe, bool \</span>
-<a name="l00880"></a>00880 <span class="preprocessor"> Secure&gt; \</span>
-<a name="l00881"></a>00881 <span class="preprocessor"> rtype op(const N n1, const BOOST_XINT_FINTEGER_TYPE n2) { \</span>
-<a name="l00882"></a>00882 <span class="preprocessor"> return op(BOOST_XINT_FINTEGER_TYPE(n1), n2); \</span>
-<a name="l00883"></a>00883 <span class="preprocessor"> }</span>
-<a name="l00884"></a>00884 <span class="preprocessor"></span>
-<a name="l00885"></a>00885 <a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, <span class="keyword">operator</span>&lt;)
-<a name="l00886"></a>00886 <a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;)
-<a name="l00887"></a>00887 <a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&lt;=)
-<a name="l00888"></a>00888 <a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;=)
-<a name="l00889"></a>00889 <a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator==)
-<a name="l00890"></a>00890 <a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator!=)
-<a name="l00891"></a><a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465">00891</a> <a class="code" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">BOOST_XINT_FIXED_ANY_COMPARE</a>(<span class="keywordtype">int</span>, <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>)
-<a name="l00892"></a>00892
-<a name="l00894"></a>00894 <span class="preprocessor">#define BOOST_XINT_FIXED_ANY_MATH(op) \</span>
-<a name="l00895"></a>00895 <span class="preprocessor"> template &lt;bitsize_t Bits, class Alloc, bool Threadsafe, bool Secure, typename \</span>
-<a name="l00896"></a>00896 <span class="preprocessor"> N&gt; \</span>
-<a name="l00897"></a>00897 <span class="preprocessor"> BOOST_XINT_FINTEGER_TYPE op(const BOOST_XINT_FINTEGER_TYPE n1, const N n2) \</span>
-<a name="l00898"></a>00898 <span class="preprocessor"> { \</span>
-<a name="l00899"></a>00899 <span class="preprocessor"> BOOST_XINT_FINTEGER_TYPE r(op(n1, BOOST_XINT_FINTEGER_TYPE(n2))); \</span>
-<a name="l00900"></a>00900 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
-<a name="l00901"></a>00901 <span class="preprocessor"> } \</span>
-<a name="l00902"></a>00902 <span class="preprocessor"> \</span>
-<a name="l00903"></a>00903 <span class="preprocessor"> template &lt;typename N, bitsize_t Bits, class Alloc, bool Threadsafe, bool \</span>
-<a name="l00904"></a>00904 <span class="preprocessor"> Secure&gt; \</span>
-<a name="l00905"></a>00905 <span class="preprocessor"> BOOST_XINT_FINTEGER_TYPE op(const N n1, const BOOST_XINT_FINTEGER_TYPE n2) \</span>
-<a name="l00906"></a>00906 <span class="preprocessor"> { \</span>
-<a name="l00907"></a>00907 <span class="preprocessor"> BOOST_XINT_FINTEGER_TYPE r(op(BOOST_XINT_FINTEGER_TYPE(n1), n2)); \</span>
-<a name="l00908"></a>00908 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
-<a name="l00909"></a>00909 <span class="preprocessor"> }</span>
-<a name="l00910"></a>00910 <span class="preprocessor"></span>
-<a name="l00911"></a>00911 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>)
-<a name="l00912"></a>00912 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>)
-<a name="l00913"></a>00913 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>)
-<a name="l00914"></a>00914 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>)
-<a name="l00915"></a>00915 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>)
-<a name="l00916"></a>00916 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator+)
-<a name="l00917"></a>00917 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator-)
-<a name="l00918"></a>00918 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator*)
-<a name="l00919"></a>00919 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator/)
-<a name="l00920"></a>00920 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator%)
-<a name="l00921"></a>00921 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator&amp;)
-<a name="l00922"></a>00922 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator|)
-<a name="l00923"></a>00923 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(operator^)
-<a name="l00924"></a>00924 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>)
-<a name="l00925"></a>00925 <a class="code" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465" title="Allows for operations between fixed_integer types and other integral values.">BOOST_XINT_FIXED_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>)
-<a name="l00926"></a>00926
-<a name="l00929"></a>00929 template &lt;typename charT, typename traits, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> Bits, class Alloc, <span class="keywordtype">bool</span>
-<a name="l00930"></a>00930 Threadsafe, <span class="keywordtype">bool</span> Secure&gt; inline std::basic_ostream&lt;charT,traits&gt;&amp;
-<a name="l00931"></a>00931 operator&lt;&lt;(std::basic_ostream&lt;charT, traits&gt;&amp; out, const
-<a name="l00932"></a>00932 <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a> n)
-<a name="l00933"></a>00933 {
-<a name="l00934"></a>00934 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">operator&lt;&lt;</a>(out, n._data());
-<a name="l00935"></a>00935 }
-<a name="l00936"></a><a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">00936</a>
-<a name="l00937"></a>00937 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> charT, <span class="keyword">typename</span> traits, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> Bits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span>
-<a name="l00938"></a>00938 Threadsafe, <span class="keywordtype">bool</span> Secure&gt; <span class="keyword">inline</span> std::basic_istream&lt;charT,traits&gt;&amp;
-<a name="l00939"></a>00939 <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(std::basic_istream&lt;charT, traits&gt;&amp; in, <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp;
-<a name="l00940"></a>00940 n)
-<a name="l00941"></a>00941 {
-<a name="l00942"></a>00942 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(in, n._data());
-<a name="l00943"></a>00943 }
-<a name="l00945"></a>00945
-<a name="l00946"></a>00946 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00947"></a>00947 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp; left, <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&amp;
-<a name="l00948"></a>00948 right)
-<a name="l00949"></a>00949 {
-<a name="l00950"></a>00950 left._swap(right);
-<a name="l00951"></a>00951 }
-<a name="l00952"></a>00952
-<a name="l00953"></a>00953 } <span class="comment">// namespace xint</span>
-<a name="l00954"></a>00954 } <span class="comment">// namespace boost</span>
-<a name="l00955"></a>00955
-<a name="l00956"></a><a class="code" href="namespacestd.html">00956</a> <span class="keyword">namespace </span>std {
-<a name="l00957"></a>00957
-<a name="l00958"></a>00958 <a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l00959"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">00959</a> <span class="keyword">class </span>numeric_limits&lt;boost::xint::<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">BOOST_XINT_FINTEGER_TYPE</a>&gt; {
-<a name="l00960"></a>00960 <span class="keyword">public</span>:
-<a name="l00961"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ad5bba760dc7f45a1a40816c677274994">00961</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="l00962"></a>00962
-<a name="l00963"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a7c876009ccd074c50ac68d5364a6927e">00963</a> <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a7c876009ccd074c50ac68d5364a6927e">min</a>() throw() { <span class="keywordflow">return</span>
-<a name="l00964"></a>00964 -~(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a>()); }
-<a name="l00965"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa570803d0924801fc9a83a8d988f6fda">00965</a> <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa570803d0924801fc9a83a8d988f6fda">max</a>() throw() { <span class="keywordflow">return</span>
-<a name="l00966"></a>00966 ~(<a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a>()); }
-<a name="l00967"></a>00967
-<a name="l00968"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#acf887056335bbd57afd0059306a6375d">00968</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits = Bits;
-<a name="l00969"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa121103a2fc350f2e47160d35f32b1b0">00969</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits10;
-<a name="l00970"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a80ac38d7f50e43c53ba2aa9cf788f768">00970</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="l00971"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aed61b7e5627cb539565683d6403d124e">00971</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="l00972"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae77708834538e2a799fb26210b504398">00972</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="l00973"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a73abfda3e959624708bff2584a3569e5">00973</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> radix = 2;
-<a name="l00974"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a8beefaed017232ca942faff10ae80290">00974</a> <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a8beefaed017232ca942faff10ae80290">epsilon</a>() throw() { <span class="keywordflow">return</span> 0; }
-<a name="l00975"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9950b392347455ca66c3208eef631c54">00975</a> <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9950b392347455ca66c3208eef631c54">round_error</a>() throw() { <span class="keywordflow">return</span>
-<a name="l00976"></a>00976 0; }
-<a name="l00977"></a>00977
-<a name="l00978"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae6f471a9a94780c51abaddc53391f9c8">00978</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent = 0; <span class="comment">// N/A</span>
-<a name="l00979"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#af7637a8b294a27481c288f463513b65c">00979</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent10 = 0; <span class="comment">// N/A</span>
-<a name="l00980"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a595ca04bcc4cb7a854577b7d139d34a6">00980</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent = 0; <span class="comment">// N/A</span>
-<a name="l00981"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ab958fd6af1edf41bbb4e2f10e74f7b52">00981</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent10 = 0; <span class="comment">// N/A</span>
-<a name="l00982"></a>00982
-<a name="l00983"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a275e529b9fa9708cf1f614817aca6c99">00983</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="l00984"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aede8f82c675954031a17f4be2e1ff50e">00984</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="l00985"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a4fc09940b572fcd4a80d4d35830ff650">00985</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="l00986"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a5dcb484140996dff95c4b3ccc37aa1ba">00986</a> <span class="keyword">static</span> <span class="keyword">const</span> float_denorm_style has_denorm = denorm_absent; <span class="comment">// N/A</span>
-<a name="l00987"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a35fae9645e74075b58b2056e59f4ac09">00987</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">// N/A</span>
-<a name="l00988"></a>00988
-<a name="l00989"></a>00989 <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a>
-<a name="l00990"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a022ff0b37f3179a432c14191f130610a">00990</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a022ff0b37f3179a432c14191f130610a">infinity</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// N/A</span>
-<a name="l00991"></a>00991 <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a>
-<a name="l00992"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a3dd7bc373d24691c24975911db3492d3">00992</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a3dd7bc373d24691c24975911db3492d3">quiet_NaN</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// N/A</span>
-<a name="l00993"></a>00993 <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a>
-<a name="l00994"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a12af0ae0ec77f10f4a631b3a842dfd84">00994</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a12af0ae0ec77f10f4a631b3a842dfd84">signaling_NaN</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// N/A</span>
-<a name="l00995"></a>00995 <span class="keyword">static</span> <a class="code" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">boost::xint::BOOST_XINT_FINTEGER_TYPE</a>
-<a name="l00996"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9f7aca6f0d6b52862d1e4c5933a027b8">00996</a> <a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9f7aca6f0d6b52862d1e4c5933a027b8">denorm_min</a>() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// N/A</span>
-<a name="l00997"></a>00997
-<a name="l00998"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aab6aebabb045e55b046da38742c84197">00998</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="l00999"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1c7ee1191e9fc33b86e28220a24a2f09">00999</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_bounded = <span class="keyword">true</span>;
-<a name="l01000"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1524d587221768a9e892b101b26f2ec0">01000</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_modulo = <span class="keyword">true</span>;
-<a name="l01001"></a>01001
-<a name="l01002"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aac313a7cb59649e80b2b8c4e93871c00">01002</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="l01003"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a777c2bc8e871fae3f5f0ae35c2f74ce9">01003</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">// N/A</span>
-<a name="l01004"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a49c51ada0c19e47aa5cb8dc00d536fbd">01004</a> <span class="keyword">static</span> <span class="keyword">const</span> float_round_style round_style = round_indeterminate; <span class="comment">// N/A</span>
-<a name="l01005"></a>01005 };
-<a name="l01006"></a>01006
-<a name="l01007"></a>01007 <span class="preprocessor">#ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l01008"></a>01008 <span class="preprocessor"></span><a class="code" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">BOOST_XINT_FINTEGER_TPL</a>
-<a name="l01009"></a>01009 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;boost::xint::BOOST_XINT_FINTEGER_TYPE &gt;::digits10 =
-<a name="l01010"></a>01010 <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(boost::xint::detail::log10_bits(Bits));
-<a name="l01011"></a>01011 <span class="preprocessor">#endif</span>
-<a name="l01012"></a>01012 <span class="preprocessor"></span>
-<a name="l01013"></a>01013 } <span class="comment">// namespace std</span>
-<a name="l01014"></a>01014
-<a name="l01015"></a>01015 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l01016"></a>01016 <span class="preprocessor"></span> <span class="comment">// Return the warning setting to its original value.</span>
-<a name="l01017"></a>01017 <span class="preprocessor"> #pragma warning(pop)</span>
-<a name="l01018"></a>01018 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l01019"></a>01019 <span class="preprocessor"></span>
-<a name="l01020"></a>01020 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_FIXED_INTEGER_HPP</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/fixedlength.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/fixedlength.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,34 @@
+<!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: Fixed-Length Integers</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>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="fixedlength">Fixed-Length Integers </a></h1><p>Fixed-length integers (created by specifying a non-zero value for the <code>Bits</code> parameter of the <code>integer_t</code> template) always use the same amount of memory. They can be noticeably faster than unlimited-length integers, especially when combined with an allocator designed for their allocation pattern. However, they can be less memory-efficient for holding smaller values. They also silently discard the upper bits on any value that is too big for them, which can bite the unwary.</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>The number of bits refers only to the unsigned magnitude of the number. The sign is stored separately. This means that, for example, a <code>integer_t&lt;8&gt;</code> has a range of -255 to +255, not -128 to +127 like an <code>int8_t</code>.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>Also note that when calculating with a fixed-length integer type, the number does not "wrap around" when it exceeds the type's size like the built-in signed integer types do. It is truncated to the lower bits instead. For example, <code>integer_t&lt;8&gt;(-255) - 1</code> and <code>integer_t&lt;8&gt;(255) + 1</code> will both be zero. However, the sign (on non-zero answers) is preserved, so <code>integer_t&lt;8&gt;(-255) - 2</code> will be -1. </dd></dl>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/fixedlength_8dox.html (from r62397, /sandbox/xint/libs/xint/doc/r__interface_8dox.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/r__interface_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/fixedlength_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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/libs/xint/doc/dox/r_interface.dox File Reference</title>
+<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/libs/xint/doc/dox/fixedlength.dox File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,10 +25,10 @@
   </div>
 </div>
 <div class="contents">
-<h1>/home/chad/projects/xint/libs/xint/doc/dox/r_interface.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<h1>/home/chad/projects/xint/libs/xint/doc/dox/fixedlength.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/functions.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions.html (original)
+++ sandbox/xint/libs/xint/doc/functions.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -34,40 +34,213 @@
   </div>
   <div class="tabs">
     <ul>
- <li class="current">_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
+ <li>b</li>
+ <li>c</li>
+ <li>d</li>
+ <li>f</li>
+ <li>h</li>
+ <li>i</li>
+ <li>n</li>
+ <li>o</li>
+ <li>p</li>
+ <li>q</li>
+ <li>r</li>
+ <li>s</li>
+ <li>t</li>
     </ul>
   </div>
 </div>
 <div class="contents">
 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>_nan_text()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a2ff82a3986a4282910ea24d7e4f1da92">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>_swap()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">boost::xint::fixed_integer&lt;&gt;</a>
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
+<li>base_divide_t()
+: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">boost::xint::base_divide_t&lt; T &gt;</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_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>default_random_generator()
+: <a class="el" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">boost::xint::default_random_generator</a>
+</li>
+<li>divide_by_zero()
+: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html#aaff4d720e4a134315acde919ff06e640">boost::xint::exceptions::divide_by_zero</a>
+</li>
+<li>divide_t
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">boost::xint::integer_t&lt;&gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
+<li>factorial()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">boost::xint::integer_t&lt;&gt;</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_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb">boost::xint::integer_t&lt;&gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
+<li>integer_t()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb">boost::xint::integer_t&lt;&gt;</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_1exceptions_1_1invalid__base.html#a4647071020547bd103ee885bec7edffa">boost::xint::exceptions::invalid_base</a>
+</li>
+<li>invalid_digit()
+: <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_1exceptions_1_1invalid__modulus.html#a16c06e28a7f483b0ca2fb5906d53278d">boost::xint::exceptions::invalid_modulus</a>
+</li>
+<li>is_even()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>is_nan()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>is_odd()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">boost::xint::integer_t&lt;&gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nan()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>no_strong_random()
+: <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_1exceptions_1_1not__a__number.html#aa47b024550fd673bd497e0875443c67f">boost::xint::exceptions::not_a_number</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>operator!()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator%=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator&amp;=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator*=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator+()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator++()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a86ddf2ee74e7716528baa9a0b7e18449">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator+=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator-()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator--()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator-=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator/=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator&lt;&lt;()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator&lt;&lt;=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator=()
+: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">boost::xint::base_divide_t&lt; T &gt;</a>
+, <a class="el" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator&gt;&gt;()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator&gt;&gt;=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator^=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator|=()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>operator~()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ad0328a5852615d76af78e99dbde3adc1">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>overflow_error()
+: <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_p">- p -</a></h3><ul>
+<li>pow2()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">boost::xint::integer_t&lt;&gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
+<li>quotient
+: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">boost::xint::base_divide_t&lt; T &gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
+<li>random_by_size()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>random_prime()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">boost::xint::integer_t&lt;&gt;</a>
+</li>
+<li>remainder
+: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">boost::xint::base_divide_t&lt; T &gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
+<li>sign()
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">boost::xint::integer_t&lt;&gt;</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_1exceptions_1_1too__big.html#a111e2c1a759054d80afcd5fa4af2995c">boost::xint::exceptions::too_big</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/functions_0x62.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x62.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,69 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li class="current">b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
-<li>base_divide_t()
-: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">boost::xint::base_divide_t&lt; T &gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x63.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x63.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,69 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li class="current">c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
-<li>cannot_represent()
-: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html#a0968d8ac61c24529816bcaf69d155b75">boost::xint::exceptions::cannot_represent</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x64.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x64.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,92 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li class="current">d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
-<li>default_random_generator()
-: <a class="el" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">boost::xint::default_random_generator</a>
-</li>
-<li>denorm_min()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9f7aca6f0d6b52862d1e4c5933a027b8">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-<li>digits
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#acf887056335bbd57afd0059306a6375d">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>digits10
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa121103a2fc350f2e47160d35f32b1b0">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>divide_by_zero()
-: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html#aaff4d720e4a134315acde919ff06e640">boost::xint::exceptions::divide_by_zero</a>
-</li>
-<li>divide_t
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a79eabe8735d1d487b39b4a69fbbe1e15">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6919f6d6ac20e8a6dd2d539939ce1e38">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x65.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x65.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,71 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li class="current">e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
-<li>epsilon()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a8beefaed017232ca942faff10ae80290">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x66.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x66.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,74 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li class="current">f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
-<li>factorial()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2870a3a1b0b144dbfca6cc7f9134890c">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a1696a934f6dbcd3b5798f0b2d15f7283">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>fixed_integer()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#abcc8ca0500c3647d20cfbc501df485b6">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x68.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x68.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,96 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li class="current">h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<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_1fixed__integer_01_4.html#a5dcb484140996dff95c4b3ccc37aa1ba">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>has_denorm_loss
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a35fae9645e74075b58b2056e59f4ac09">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a275e529b9fa9708cf1f614817aca6c99">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-</li>
-<li>has_quiet_NaN
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aede8f82c675954031a17f4be2e1ff50e">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a4fc09940b572fcd4a80d4d35830ff650">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-<li>hex_digits()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a3f3d0b7be14b9a5858ac76302341e573">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a729023140c1b6edba03ffaa063c14e7f">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb">boost::xint::integer_t&lt;&gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x69.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x69.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,134 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li class="current">i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<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_1fixed__integer_01_4.html#a022ff0b37f3179a432c14191f130610a">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>integer_t()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb">boost::xint::integer_t&lt;&gt;</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_1exceptions_1_1invalid__base.html#a4647071020547bd103ee885bec7edffa">boost::xint::exceptions::invalid_base</a>
-</li>
-<li>invalid_digit()
-: <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_1exceptions_1_1invalid__modulus.html#a16c06e28a7f483b0ca2fb5906d53278d">boost::xint::exceptions::invalid_modulus</a>
-</li>
-<li>is_bounded
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1c7ee1191e9fc33b86e28220a24a2f09">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>is_even()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8d1217f7cded81d3ac3803ec4fd8a282">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aacf756407b2a37dfeec01c9e2d2baa55">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>is_exact
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae77708834538e2a799fb26210b504398">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aab6aebabb045e55b046da38742c84197">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aed61b7e5627cb539565683d6403d124e">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-<li>is_modulo
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1524d587221768a9e892b101b26f2ec0">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>is_nan()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>is_odd()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af7439d5c106032c8dd7909fca6ad8d12">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aca45de2a1ab27699462dac63e47bc365">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">boost::xint::integer_t&lt;&gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a80ac38d7f50e43c53ba2aa9cf788f768">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ad5bba760dc7f45a1a40816c677274994">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x6d.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x6d.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,96 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li class="current">m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
-<li>max()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa570803d0924801fc9a83a8d988f6fda">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>max_exponent
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a595ca04bcc4cb7a854577b7d139d34a6">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ab958fd6af1edf41bbb4e2f10e74f7b52">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-</li>
-<li>min()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a7c876009ccd074c50ac68d5364a6927e">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae6f471a9a94780c51abaddc53391f9c8">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-<li>min_exponent10
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#af7637a8b294a27481c288f463513b65c">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x6e.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x6e.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,78 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li class="current">n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
-<li>nan()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>no_strong_random()
-: <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_1exceptions_1_1not__a__number.html#aa47b024550fd673bd497e0875443c67f">boost::xint::exceptions::not_a_number</a>
-</li>
-<li>nothrow_integer_t()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a227b5762857ac8b81a0ee4a1306060b8">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x6f.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x6f.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,171 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li class="current">o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
-<li>operator!()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a1833c141efc0b733cb6a3c1ccb012815">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a5ece8a816c760032dfbc2ec44853e608">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator%=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a5be10cf23614f86487795d3a52c59fe0">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a4c05efc7570c68cf66097250a89983e3">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator&amp;=()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#abdf888c46a80cd3ff27ce3cb7b1c926b">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aaa2bd5962f94dfecdb629fe91ca11916">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-<li>operator*=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ae6933c0021c085aefef2c84871cf56aa">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#af385460d651cf5e55f1b98163157e542">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator+()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a9c772faa5bee3403bed32e1d7c44f51b">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a533d61d717d6c2776cd01f9953a40434">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a946b6f16a5138e190ec6b3663a4e405f">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">boost::xint::integer_t&lt;&gt;</a>
-</li>
-<li>operator++()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a88dbfe8b18a9ea266e7613a55e0c8008">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab2c4f32b023d5993cac190f2d3b04d75">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator+=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a41854f088fcd6eee52d9b99ad9f631f6">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0f789839445460824a6a9e0ae09438e9">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator-()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aff23f92ff8251cb1ef691e73ed3fe777">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ad432f2c0daa6aea3f416cf5f8c666a77">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator--()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a54a920edd865aa7e8b26ff8ba457e826">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a545623af583e6db95648e439136487a8">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad85b39d612438f84970e1d812f078b8a">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-<li>operator-=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#affc385351bd34308be1681f9c3893f10">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a9cf2199722b2ae7b84b13df8f25e30bb">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator/=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af114bab3ffdcabfbb1dd968e32c47cd0">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa9e0d7a3b1c6468ddb6cafd8310cce33">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator&lt;&lt;()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a326278f38ee384d2469f758e2d91c941">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a337f26edac632e711f7636179c7905f4">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator&lt;&lt;=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a45846e1b9b7a31865ba2fb49b57ab138">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0fbb396ca3e90adeb21af98101e6ca64">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">boost::xint::integer_t&lt;&gt;</a>
-</li>
-<li>operator=()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aad86c142066a690b214affe3e9338f3e">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae211b395180df8b906af6894ec2437ee">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acf7984f96e96e094cebc84945af84237">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">boost::xint::base_divide_t&lt; T &gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aa0aca358b7caa1ea3a4d32546ce438a3">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a201e483d7d4c1e8abb23b129bf732278">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a7798d6022dd3478a10b35b094347c95f">boost::xint::integer_t&lt;&gt;</a>
-</li>
-<li>operator&gt;&gt;()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a210d46fc5a4b686e403cf7aedfcc5674">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afaa0193c95ade2362b9e55dc4ebeb8f3">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-<li>operator&gt;&gt;=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac13d7456ad391ce19c5b2c22c94dadf5">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a842db03f81eb40dbd2861379bbcb6f58">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator^=()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97fb50e03fc95bace0ab7eb3390ef20b">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad568affeea647ef91d0de1d88cc76192">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">boost::xint::integer_t&lt;&gt;</a>
-</li>
-<li>operator|=()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2272dbf43c92ce1f56d5f0618a137425">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97d99c9fdf91ac89641a7899fbb44f0f">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>operator~()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acd0fb55952130128a3fe7b2bf27c999a">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2e924b61df38e812c682f86e540f37d6">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-<li>overflow_error()
-: <a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html#a767d8fbe5816d77fa0aadf9481d0bd5a">boost::xint::exceptions::overflow_error</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x70.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x70.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,71 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li class="current">p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
-<li>pow2()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac4928defd092ad3f30af55e0a221bd90">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0c102b1fea546c819b8269d72548f93c">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">boost::xint::integer_t&lt;&gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x71.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x71.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,74 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li class="current">q</li>
- <li>r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
-<li>quiet_NaN()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a3dd7bc373d24691c24975911db3492d3">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>quotient
-: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">boost::xint::base_divide_t&lt; T &gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x72.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x72.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,94 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li class="current">r</li>
- <li>s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<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_1fixed__integer_01_4.html#a73abfda3e959624708bff2584a3569e5">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>random_by_size()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afe0884583cdf8c3a60dc3fd35fa40a31">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0de2e10bd4405b0cb8700345425c52f1">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>random_prime()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a72339e1215826ce74e3013c48d06598a">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a7215f0327bf6d96d27f3ea805657e64c">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-<li>remainder
-: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">boost::xint::base_divide_t&lt; T &gt;</a>
-</li>
-<li>round_error()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9950b392347455ca66c3208eef631c54">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a49c51ada0c19e47aa5cb8dc00d536fbd">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x73.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x73.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,76 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li class="current">s</li>
- <li>t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
-<li>sign()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8ee6b3914e05703471fde2057226ddb3">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a19ed49ed07a32317aa3b57410908bfe3">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>signaling_NaN()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a12af0ae0ec77f10f4a631b3a842dfd84">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/functions_0x74.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_0x74.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,84 +0,0 @@
-<!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: Class Members</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>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="current">Class Members</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li class="current">All</li>
- <li>Functions</li>
- <li>Variables</li>
- <li>Typedefs</li>
- </ul>
- </div>
- <div class="tabs">
- <ul>
- <li>_</li>
- <li>b</li>
- <li>c</li>
- <li>d</li>
- <li>e</li>
- <li>f</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>n</li>
- <li>o</li>
- <li>p</li>
- <li>q</li>
- <li>r</li>
- <li>s</li>
- <li class="current">t</li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all class members with links to the classes they belong to:
-
-<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_1fixed__integer_01_4.html#a777c2bc8e871fae3f5f0ae35c2f74ce9">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>too_big()
-: <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_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aac313a7cb59649e80b2b8c4e93871c00">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-<li>type
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6db421b2d6ddf1d406e3d5770e221146">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">boost::xint::integer_t&lt;&gt;</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/functions_func.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_func.html (original)
+++ sandbox/xint/libs/xint/doc/functions_func.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -34,19 +34,15 @@
   </div>
   <div class="tabs">
     <ul>
- <li>_</li>
       <li>b</li>
       <li>c</li>
       <li>d</li>
- <li>e</li>
       <li>f</li>
       <li>h</li>
       <li>i</li>
- <li>m</li>
       <li>n</li>
       <li>o</li>
       <li>p</li>
- <li>q</li>
       <li>r</li>
       <li>s</li>
       <li>t</li>
@@ -56,18 +52,6 @@
 <div class="contents">
 &nbsp;
 
-<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
-<li>_nan_text()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a2ff82a3986a4282910ea24d7e4f1da92">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>_swap()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a0a87772618416f9a5522db186accea2e">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-</ul>
-
-
 <h3><a class="anchor" id="index_b">- b -</a></h3><ul>
 <li>base_divide_t()
 : <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">boost::xint::base_divide_t&lt; T &gt;</a>
@@ -86,53 +70,27 @@
 <li>default_random_generator()
 : <a class="el" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">boost::xint::default_random_generator</a>
 </li>
-<li>denorm_min()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9f7aca6f0d6b52862d1e4c5933a027b8">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
 <li>divide_by_zero()
 : <a class="el" href="classboost_1_1xint_1_1exceptions_1_1divide__by__zero.html#aaff4d720e4a134315acde919ff06e640">boost::xint::exceptions::divide_by_zero</a>
 </li>
 </ul>
 
 
-<h3><a class="anchor" id="index_e">- e -</a></h3><ul>
-<li>epsilon()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a8beefaed017232ca942faff10ae80290">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-</ul>
-
-
 <h3><a class="anchor" id="index_f">- f -</a></h3><ul>
 <li>factorial()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2870a3a1b0b144dbfca6cc7f9134890c">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a1696a934f6dbcd3b5798f0b2d15f7283">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>fixed_integer()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#abcc8ca0500c3647d20cfbc501df485b6">boost::xint::fixed_integer&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">boost::xint::integer_t&lt;&gt;</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_1fixed__integer.html#a729023140c1b6edba03ffaa063c14e7f">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a3f3d0b7be14b9a5858ac76302341e573">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb">boost::xint::integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb">boost::xint::integer_t&lt;&gt;</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_1fixed__integer_01_4.html#a022ff0b37f3179a432c14191f130610a">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
 <li>integer_t()
 : <a class="el" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb">boost::xint::integer_t&lt;&gt;</a>
 </li>
@@ -150,37 +108,19 @@
 </li>
 <li>is_even()
 : <a class="el" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8d1217f7cded81d3ac3803ec4fd8a282">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aacf756407b2a37dfeec01c9e2d2baa55">boost::xint::nothrow_integer_t&lt;&gt;</a>
 </li>
 <li>is_nan()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>is_odd()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aca45de2a1ab27699462dac63e47bc365">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af7439d5c106032c8dd7909fca6ad8d12">boost::xint::fixed_integer&lt;&gt;</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
-<li>max()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa570803d0924801fc9a83a8d988f6fda">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>min()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a7c876009ccd074c50ac68d5364a6927e">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">boost::xint::integer_t&lt;&gt;</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_n">- n -</a></h3><ul>
 <li>nan()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>no_strong_random()
 : <a class="el" href="classboost_1_1xint_1_1exceptions_1_1no__strong__random.html#ab225c7d5d10a03eac6d5e9c784135675">boost::xint::exceptions::no_strong_random</a>
@@ -188,114 +128,67 @@
 <li>not_a_number()
 : <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_t()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a227b5762857ac8b81a0ee4a1306060b8">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
 </ul>
 
 
 <h3><a class="anchor" id="index_o">- o -</a></h3><ul>
 <li>operator!()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a1833c141efc0b733cb6a3c1ccb012815">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a5ece8a816c760032dfbc2ec44853e608">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator%=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a5be10cf23614f86487795d3a52c59fe0">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a4c05efc7570c68cf66097250a89983e3">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator&amp;=()
 : <a class="el" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#abdf888c46a80cd3ff27ce3cb7b1c926b">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aaa2bd5962f94dfecdb629fe91ca11916">boost::xint::fixed_integer&lt;&gt;</a>
 </li>
 <li>operator*=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ae6933c0021c085aefef2c84871cf56aa">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#af385460d651cf5e55f1b98163157e542">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator+()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a9c772faa5bee3403bed32e1d7c44f51b">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a533d61d717d6c2776cd01f9953a40434">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a946b6f16a5138e190ec6b3663a4e405f">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">boost::xint::integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator++()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a88dbfe8b18a9ea266e7613a55e0c8008">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab2c4f32b023d5993cac190f2d3b04d75">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a86ddf2ee74e7716528baa9a0b7e18449">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator+=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a41854f088fcd6eee52d9b99ad9f631f6">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0f789839445460824a6a9e0ae09438e9">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator-()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aff23f92ff8251cb1ef691e73ed3fe777">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ad432f2c0daa6aea3f416cf5f8c666a77">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator--()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a54a920edd865aa7e8b26ff8ba457e826">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a545623af583e6db95648e439136487a8">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad85b39d612438f84970e1d812f078b8a">boost::xint::fixed_integer&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator-=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#affc385351bd34308be1681f9c3893f10">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a9cf2199722b2ae7b84b13df8f25e30bb">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator/=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#af114bab3ffdcabfbb1dd968e32c47cd0">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa9e0d7a3b1c6468ddb6cafd8310cce33">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator&lt;&lt;()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a326278f38ee384d2469f758e2d91c941">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a337f26edac632e711f7636179c7905f4">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator&lt;&lt;=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a45846e1b9b7a31865ba2fb49b57ab138">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0fbb396ca3e90adeb21af98101e6ca64">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">boost::xint::integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator=()
-: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aad86c142066a690b214affe3e9338f3e">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae211b395180df8b906af6894ec2437ee">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">boost::xint::base_divide_t&lt; T &gt;</a>
 , <a class="el" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acf7984f96e96e094cebc84945af84237">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">boost::xint::base_divide_t&lt; T &gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#aa0aca358b7caa1ea3a4d32546ce438a3">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a201e483d7d4c1e8abb23b129bf732278">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a7798d6022dd3478a10b35b094347c95f">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator&gt;&gt;()
 : <a class="el" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a210d46fc5a4b686e403cf7aedfcc5674">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afaa0193c95ade2362b9e55dc4ebeb8f3">boost::xint::fixed_integer&lt;&gt;</a>
 </li>
 <li>operator&gt;&gt;=()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac13d7456ad391ce19c5b2c22c94dadf5">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a842db03f81eb40dbd2861379bbcb6f58">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator^=()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97fb50e03fc95bace0ab7eb3390ef20b">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ad568affeea647ef91d0de1d88cc76192">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">boost::xint::integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>operator|=()
 : <a class="el" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2272dbf43c92ce1f56d5f0618a137425">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97d99c9fdf91ac89641a7899fbb44f0f">boost::xint::nothrow_integer_t&lt;&gt;</a>
 </li>
 <li>operator~()
-: <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#acd0fb55952130128a3fe7b2bf27c999a">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a2e924b61df38e812c682f86e540f37d6">boost::xint::fixed_integer&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#ad0328a5852615d76af78e99dbde3adc1">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>overflow_error()
 : <a class="el" href="classboost_1_1xint_1_1exceptions_1_1overflow__error.html#a767d8fbe5816d77fa0aadf9481d0bd5a">boost::xint::exceptions::overflow_error</a>
@@ -305,51 +198,24 @@
 
 <h3><a class="anchor" id="index_p">- p -</a></h3><ul>
 <li>pow2()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#ac4928defd092ad3f30af55e0a221bd90">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0c102b1fea546c819b8269d72548f93c">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">boost::xint::integer_t&lt;&gt;</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
-<li>quiet_NaN()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a3dd7bc373d24691c24975911db3492d3">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">std::numeric_limits&lt; boost::xint::integer &gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">boost::xint::integer_t&lt;&gt;</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_r">- r -</a></h3><ul>
 <li>random_by_size()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#afe0884583cdf8c3a60dc3fd35fa40a31">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0de2e10bd4405b0cb8700345425c52f1">boost::xint::nothrow_integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2">boost::xint::integer_t&lt;&gt;</a>
 </li>
 <li>random_prime()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a7215f0327bf6d96d27f3ea805657e64c">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a72339e1215826ce74e3013c48d06598a">boost::xint::nothrow_integer_t&lt;&gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a9950b392347455ca66c3208eef631c54">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">std::numeric_limits&lt; boost::xint::integer &gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">boost::xint::integer_t&lt;&gt;</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_s">- s -</a></h3><ul>
 <li>sign()
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a8ee6b3914e05703471fde2057226ddb3">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">boost::xint::integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a19ed49ed07a32317aa3b57410908bfe3">boost::xint::nothrow_integer_t&lt;&gt;</a>
-</li>
-<li>signaling_NaN()
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a12af0ae0ec77f10f4a631b3a842dfd84">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">boost::xint::integer_t&lt;&gt;</a>
 </li>
 </ul>
 
@@ -360,7 +226,7 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/functions_type.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_type.html (original)
+++ sandbox/xint/libs/xint/doc/functions_type.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -36,18 +36,11 @@
 <div class="contents">
 &nbsp;<ul>
 <li>divide_t
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6919f6d6ac20e8a6dd2d539939ce1e38">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a79eabe8735d1d487b39b4a69fbbe1e15">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">boost::xint::integer_t&lt;&gt;</a>
-</li>
-<li>type
-: <a class="el" href="classboost_1_1xint_1_1fixed__integer.html#a6db421b2d6ddf1d406e3d5770e221146">boost::xint::fixed_integer&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">boost::xint::nothrow_integer_t&lt;&gt;</a>
-, <a class="el" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">boost::xint::integer_t&lt;&gt;</a>
+: <a class="el" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">boost::xint::integer_t&lt;&gt;</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/functions_vars.html
==============================================================================
--- sandbox/xint/libs/xint/doc/functions_vars.html (original)
+++ sandbox/xint/libs/xint/doc/functions_vars.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -32,165 +32,18 @@
       <li>Typedefs</li>
     </ul>
   </div>
- <div class="tabs">
- <ul>
- <li>d</li>
- <li>h</li>
- <li>i</li>
- <li>m</li>
- <li>q</li>
- <li>r</li>
- <li>t</li>
- </ul>
- </div>
 </div>
 <div class="contents">
-&nbsp;
-
-<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
-<li>digits
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#acf887056335bbd57afd0059306a6375d">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>digits10
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aa121103a2fc350f2e47160d35f32b1b0">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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_1fixed__integer_01_4.html#a5dcb484140996dff95c4b3ccc37aa1ba">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>has_denorm_loss
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a35fae9645e74075b58b2056e59f4ac09">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a275e529b9fa9708cf1f614817aca6c99">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aede8f82c675954031a17f4be2e1ff50e">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>has_signaling_NaN
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a4fc09940b572fcd4a80d4d35830ff650">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-</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_1fixed__integer_01_4.html#a1c7ee1191e9fc33b86e28220a24a2f09">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>is_exact
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae77708834538e2a799fb26210b504398">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aab6aebabb045e55b046da38742c84197">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-</li>
-<li>is_integer
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aed61b7e5627cb539565683d6403d124e">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>is_modulo
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a1524d587221768a9e892b101b26f2ec0">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-<li>is_signed
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a80ac38d7f50e43c53ba2aa9cf788f768">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-<li>is_specialized
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ad5bba760dc7f45a1a40816c677274994">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
-<li>max_exponent
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a595ca04bcc4cb7a854577b7d139d34a6">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>max_exponent10
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ab958fd6af1edf41bbb4e2f10e74f7b52">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#ae6f471a9a94780c51abaddc53391f9c8">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-</li>
-<li>min_exponent10
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#af7637a8b294a27481c288f463513b65c">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
+&nbsp;<ul>
 <li>quotient
 : <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">boost::xint::base_divide_t&lt; T &gt;</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_1fixed__integer_01_4.html#a73abfda3e959624708bff2584a3569e5">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
 <li>remainder
 : <a class="el" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">boost::xint::base_divide_t&lt; T &gt;</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&lt; boost::xint::nothrow_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#a49c51ada0c19e47aa5cb8dc00d536fbd">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</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_1fixed__integer_01_4.html#a777c2bc8e871fae3f5f0ae35c2f74ce9">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
-<li>traps
-: <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html#aac313a7cb59649e80b2b8c4e93871c00">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">std::numeric_limits&lt; boost::xint::integer &gt;</a>
-, <a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a>
-</li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/gcd_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/gcd_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/gcd.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>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>detail/gcd.cpp File Reference</h1>
-<p>Contains functions using the Greatest Common Denominator algorithm.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains functions using the Greatest Common Denominator algorithm. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/gcd_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/gcd_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,180 +0,0 @@
-<!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: detail/gcd.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>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>detail/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>
-<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">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<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 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">struct </span>gcd_core {
-<a name="l00032"></a>00032 gcd_core(<span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t m): u1(n.new_holder(), 1),
-<a name="l00033"></a>00033 u2(n.new_holder()), u3(n)
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">const</span> data_t zero(n.new_holder());
-<a name="l00036"></a>00036 data_t t1(m), t2(n), t3(m);
-<a name="l00037"></a>00037 t1.beginmod();
-<a name="l00038"></a>00038 t2.beginmod();
-<a name="l00039"></a>00039 t3.beginmod();
-<a name="l00040"></a>00040 u1.beginmod();
-<a name="l00041"></a>00041 u2.beginmod();
-<a name="l00042"></a>00042 u3.beginmod();
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 --t2;
-<a name="l00045"></a>00045 <span class="keywordflow">do</span> {
-<a name="l00046"></a>00046 <span class="keywordflow">do</span> {
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (u3.is_even()) {
-<a name="l00048"></a>00048 <span class="keywordflow">if</span> (u1.is_odd() || u2.is_odd()) { u1 += m; u2 += n; }
-<a name="l00049"></a>00049 u1 &gt;&gt;= 1;
-<a name="l00050"></a>00050 u2 &gt;&gt;= 1;
-<a name="l00051"></a>00051 u3 &gt;&gt;= 1;
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (t3.is_even() || u3 &lt; t3) {
-<a name="l00055"></a>00055 <span class="comment">// Swap the u&#39;s with the t&#39;s</span>
-<a name="l00056"></a>00056 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">std::swap</a>;
-<a name="l00057"></a>00057 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(u1, t1);
-<a name="l00058"></a>00058 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(u2, t2);
-<a name="l00059"></a>00059 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(u3, t3);
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061 } <span class="keywordflow">while</span> (u3.is_even());
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keywordflow">while</span> (u1 &lt; t1 || u2 &lt; t2) { u1 += m; u2 += n; }
-<a name="l00064"></a>00064 u1 -= t1; u2 -= t2; u3 -= t3;
-<a name="l00065"></a>00065 } <span class="keywordflow">while</span> (t3 &gt; zero);
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <span class="keywordflow">while</span> (u1 &gt;= m &amp;&amp; u2 &gt;= n) { u1 -= m; u2 -= n; }
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 u3.endmod();
-<a name="l00070"></a>00070 u2.endmod();
-<a name="l00071"></a>00071 u1.endmod();
-<a name="l00072"></a>00072 t3.endmod();
-<a name="l00073"></a>00073 t2.endmod();
-<a name="l00074"></a>00074 t1.endmod();
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 data_t u1, u2, u3;
-<a name="l00078"></a>00078 };
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(data_t&amp; target, <span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2)
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 target.beginmod();
-<a name="l00083"></a>00083 <span class="keywordflow">if</span> (num1.is_zero() &amp;&amp; num2.is_zero()) {
-<a name="l00084"></a>00084 target.set(0);
-<a name="l00085"></a>00085 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (num1.is_zero()) {
-<a name="l00086"></a>00086 target.duplicate_data(num2);
-<a name="l00087"></a>00087 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (num2.is_zero()) {
-<a name="l00088"></a>00088 target.duplicate_data(num1);
-<a name="l00089"></a>00089 } <span class="keywordflow">else</span> {
-<a name="l00090"></a>00090 data_t n(num1, <span class="keyword">false</span>), m(num2, <span class="keyword">false</span>);
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keywordtype">size_t</span> k = 0;
-<a name="l00093"></a>00093 <span class="keywordflow">if</span> (!<a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(n, k) &amp;&amp; !<a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(m, k)) ++k;
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (k != 0) { n &gt;&gt;= k; m &gt;&gt;= k; }
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 gcd_core core(n, m);
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (core.u3.is_zero()) {
-<a name="l00098"></a>00098 target.set(1);
-<a name="l00099"></a>00099 target &lt;&lt;= k;
-<a name="l00100"></a>00100 } <span class="keywordflow">else</span> {
-<a name="l00101"></a>00101 target.duplicate_data(core.u3);
-<a name="l00102"></a>00102 target &lt;&lt;= k;
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 target.endmod();
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(data_t&amp; target, <span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">if</span> (num1.is_zero() || num2.is_zero()) {
-<a name="l00111"></a>00111 target.set(0);
-<a name="l00112"></a>00112 } <span class="keywordflow">else</span> {
-<a name="l00113"></a>00113 data_t common(target.new_holder());
-<a name="l00114"></a>00114 <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(common, num1, num2);
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 target.beginmod();
-<a name="l00117"></a>00117 target.duplicate_data(num1);
-<a name="l00118"></a>00118 target *= num2;
-<a name="l00119"></a>00119 target /= common;
-<a name="l00120"></a>00120 target.negative = <span class="keyword">false</span>;
-<a name="l00121"></a>00121 target.endmod();
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00127"></a>00127 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t m) {
-<a name="l00128"></a>00128 <span class="keywordflow">if</span> (m.is_zero() || m.negative) <span class="keywordflow">throw</span> exceptions::invalid_modulus();
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> (n.is_zero()) {
-<a name="l00131"></a>00131 target.set(0);
-<a name="l00132"></a>00132 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.negative) {
-<a name="l00133"></a>00133 target.beginmod();
-<a name="l00134"></a>00134 <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(target, n.abs(), m);
-<a name="l00135"></a>00135 <span class="keywordflow">if</span> (!target.is_zero()) {
-<a name="l00136"></a>00136 target.negative = <span class="keyword">true</span>;
-<a name="l00137"></a>00137 target += m;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 target.endmod();
-<a name="l00140"></a>00140 } <span class="keywordflow">else</span> {
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (n.is_even() &amp;&amp; m.is_even()) {
-<a name="l00142"></a>00142 <span class="comment">// GCD != 1, no inverse possible.</span>
-<a name="l00143"></a>00143 target.set(0);
-<a name="l00144"></a>00144 } <span class="keywordflow">else</span> {
-<a name="l00145"></a>00145 gcd_core core(n, m);
-<a name="l00146"></a>00146 <span class="keywordflow">if</span> (core.u3 != data_t(target.new_holder(), 1)) {
-<a name="l00147"></a>00147 <span class="comment">// GCD != 1, no inverse possible.</span>
-<a name="l00148"></a>00148 target.set(0);
-<a name="l00149"></a>00149 } <span class="keywordflow">else</span> target.duplicate_data(core.u1);
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 } <span class="comment">// namespace detail</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="l00158"></a>00158 <span class="comment"></span>
-<a name="l00159"></a>00159 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/gcd_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/gcd_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/gcd_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/gcd_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/gcd.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/gcd.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/gcd.cpp File Reference</h1>
+<h1>detail/gcd.hpp File Reference</h1>
 <p>Contains functions using the Greatest Common Denominator algorithm.
 <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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains functions using the Greatest Common Denominator algorithm. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
+<p>Definition in file <a class="el" href="gcd_8hpp_source.html">gcd.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/gcd_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/gcd_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,164 @@
+<!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: detail/gcd.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>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>detail/gcd.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_GCD_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_GCD_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 <span class="keyword">struct </span>gcd_core {
+<a name="l00030"></a>00030 gcd_core(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span> BOOST_XINT_RAWINT m): u1(1), u2(),
+<a name="l00031"></a>00031 u3(n)
+<a name="l00032"></a>00032 {
+<a name="l00033"></a>00033 <span class="keyword">const</span> BOOST_XINT_RAWINT zero;
+<a name="l00034"></a>00034 BOOST_XINT_RAWINT t1(m), t2(n), t3(m);
+<a name="l00035"></a>00035 --t2;
+<a name="l00036"></a>00036 <span class="keywordflow">do</span> {
+<a name="l00037"></a>00037 <span class="keywordflow">do</span> {
+<a name="l00038"></a>00038 <span class="keywordflow">if</span> (u3.is_even()) {
+<a name="l00039"></a>00039 <span class="keywordflow">if</span> (u1.is_odd() || u2.is_odd()) { u1 += m; u2 += n; }
+<a name="l00040"></a>00040 u1 &gt;&gt;= 1;
+<a name="l00041"></a>00041 u2 &gt;&gt;= 1;
+<a name="l00042"></a>00042 u3 &gt;&gt;= 1;
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <span class="keywordflow">if</span> (t3.is_even() || u3 &lt; t3) {
+<a name="l00046"></a>00046 <span class="comment">// Swap the u&#39;s with the t&#39;s</span>
+<a name="l00047"></a>00047 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">std::swap</a>;
+<a name="l00048"></a>00048 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(u1, t1);
+<a name="l00049"></a>00049 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(u2, t2);
+<a name="l00050"></a>00050 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(u3, t3);
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 } <span class="keywordflow">while</span> (u3.is_even());
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keywordflow">while</span> (u1 &lt; t1 || u2 &lt; t2) { u1 += m; u2 += n; }
+<a name="l00055"></a>00055 u1 -= t1; u2 -= t2; u3 -= t3;
+<a name="l00056"></a>00056 } <span class="keywordflow">while</span> (t3 &gt; zero);
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="keywordflow">while</span> (u1 &gt;= m &amp;&amp; u2 &gt;= n) { u1 -= m; u2 -= n; }
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 BOOST_XINT_RAWINT u1, u2, u3;
+<a name="l00062"></a>00062 };
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 BOOST_XINT_RAWINT_TPL
+<a name="l00065"></a>00065 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(BOOST_XINT_RAWINT&amp; target, <span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span>
+<a name="l00066"></a>00066 BOOST_XINT_RAWINT num2)
+<a name="l00067"></a>00067 {
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (num1.is_zero() &amp;&amp; num2.is_zero()) {
+<a name="l00069"></a>00069 target.set(0);
+<a name="l00070"></a>00070 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (num1.is_zero()) {
+<a name="l00071"></a>00071 target = num2;
+<a name="l00072"></a>00072 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (num2.is_zero()) {
+<a name="l00073"></a>00073 target = num1;
+<a name="l00074"></a>00074 } <span class="keywordflow">else</span> {
+<a name="l00075"></a>00075 BOOST_XINT_RAWINT n(num1, <span class="keyword">false</span>), m(num2, <span class="keyword">false</span>);
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="keywordtype">size_t</span> k = 0;
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (!<a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba" title="Queries the value of a particular bit in an integer.">getbit</a>(n, k) &amp;&amp; !<a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba" title="Queries the value of a particular bit in an integer.">getbit</a>(m, k)) ++k;
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (k != 0) { n &gt;&gt;= k; m &gt;&gt;= k; }
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 gcd_core&lt;Bits, Secure, Alloc&gt; core(n, m);
+<a name="l00082"></a>00082 <span class="keywordflow">if</span> (core.u3.is_zero()) {
+<a name="l00083"></a>00083 target.set(1);
+<a name="l00084"></a>00084 target &lt;&lt;= k;
+<a name="l00085"></a>00085 } <span class="keywordflow">else</span> {
+<a name="l00086"></a>00086 target = core.u3;
+<a name="l00087"></a>00087 target &lt;&lt;= k;
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 BOOST_XINT_RAWINT_TPL
+<a name="l00093"></a>00093 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4" title="Calculate the Least Common Multiple of two integers.">lcm</a>(BOOST_XINT_RAWINT&amp; target, <span class="keyword">const</span> BOOST_XINT_RAWINT num1, <span class="keyword">const</span>
+<a name="l00094"></a>00094 BOOST_XINT_RAWINT num2)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (num1.is_zero() || num2.is_zero()) {
+<a name="l00097"></a>00097 target.set(0);
+<a name="l00098"></a>00098 } <span class="keywordflow">else</span> {
+<a name="l00099"></a>00099 BOOST_XINT_RAWINT common;
+<a name="l00100"></a>00100 <a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(common, num1, num2);
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 target = num1 * num2 / common;
+<a name="l00103"></a>00103 target.negative = <span class="keyword">false</span>;
+<a name="l00104"></a>00104 target.trim();
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00110"></a>00110 BOOST_XINT_RAWINT_TPL
+<a name="l00111"></a>00111 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span> BOOST_XINT_RAWINT m) {
+<a name="l00112"></a>00112 <span class="keywordflow">if</span> (m.is_zero() || m.negative) <span class="keywordflow">throw</span> exceptions::invalid_modulus();
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (n.is_zero()) {
+<a name="l00115"></a>00115 <span class="keywordflow">return</span> 0;
+<a name="l00116"></a>00116 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.negative) {
+<a name="l00117"></a>00117 BOOST_XINT_RAWINT target = <a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(n.abs(), m);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (!target.is_zero()) {
+<a name="l00119"></a>00119 target.negative = <span class="keyword">true</span>;
+<a name="l00120"></a>00120 target += m;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 target.trim();
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> target;
+<a name="l00124"></a>00124 } <span class="keywordflow">else</span> {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (n.is_even() &amp;&amp; m.is_even()) {
+<a name="l00126"></a>00126 <span class="comment">// GCD != 1, no inverse possible.</span>
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> 0;
+<a name="l00128"></a>00128 } <span class="keywordflow">else</span> {
+<a name="l00129"></a>00129 gcd_core&lt;Bits, Secure, Alloc&gt; core(n, m);
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (core.u3 != BOOST_XINT_RAWINT(1)) {
+<a name="l00131"></a>00131 <span class="comment">// GCD != 1, no inverse possible.</span>
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> 0;
+<a name="l00133"></a>00133 } <span class="keywordflow">else</span> <span class="keywordflow">return</span> core.u1;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 } <span class="comment">// namespace detail</span>
+<a name="l00139"></a>00139 } <span class="comment">// namespace xint</span>
+<a name="l00140"></a>00140 } <span class="comment">// namespace boost</span>
+<a name="l00142"></a>00142 <span class="comment"></span>
+<a name="l00143"></a>00143 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_GCD_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/globals.html
==============================================================================
--- sandbox/xint/libs/xint/doc/globals.html (original)
+++ sandbox/xint/libs/xint/doc/globals.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -39,64 +39,38 @@
 : <a class="el" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090">integer.hpp</a>
 </li>
 <li>BOOST_XINT_COPY_ASSIGN_REF
-: <a class="el" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">internals.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">basic_types_and_includes.hpp</a>
 </li>
 <li>BOOST_XINT_COPYABLE_AND_MOVABLE
-: <a class="el" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">internals.hpp</a>
-</li>
-<li>BOOST_XINT_FINTEGER_INITIAL_TPL
-: <a class="el" href="fixed__integer_8hpp.html#a66ab715e926e10eb88658e3c09911f81">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FINTEGER_TPL
-: <a class="el" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FINTEGER_TYPE
-: <a class="el" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FIXED_ANY_COMPARE
-: <a class="el" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FIXED_ANY_MATH
-: <a class="el" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465">fixed_integer.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">basic_types_and_includes.hpp</a>
 </li>
 <li>BOOST_XINT_FORWARD
-: <a class="el" href="internals_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">internals.hpp</a>
-</li>
-<li>BOOST_XINT_FROM_HEADER
-: <a class="el" href="internals_8hpp.html#a7621c4fd1f5760b878ca8f5e5e6bb4c2">internals.hpp</a>
-</li>
-<li>BOOST_XINT_INLINE
-: <a class="el" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">internals.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">basic_types_and_includes.hpp</a>
 </li>
 <li>BOOST_XINT_INTEGER_INITIAL_TPL
 : <a class="el" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">integer.hpp</a>
-, <a class="el" href="nothrow__integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">nothrow_integer.hpp</a>
 </li>
 <li>BOOST_XINT_INTEGER_TPL
-: <a class="el" href="nothrow__integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">nothrow_integer.hpp</a>
-, <a class="el" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">integer.hpp</a>
+: <a class="el" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">integer.hpp</a>
 </li>
 <li>BOOST_XINT_INTEGER_TYPE
 : <a class="el" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">integer.hpp</a>
 </li>
 <li>BOOST_XINT_MOVE
-: <a class="el" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">internals.hpp</a>
-</li>
-<li>BOOST_XINT_NOTHROW_ANY_COMPARE
-: <a class="el" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">nothrow_integer.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">basic_types_and_includes.hpp</a>
 </li>
-<li>BOOST_XINT_NOTHROW_ANY_MATH
-: <a class="el" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">nothrow_integer.hpp</a>
+<li>BOOST_XINT_OTHER_TPL
+: <a class="el" href="integer_8hpp.html#a29684216936e84f92ac88714348ca53b">integer.hpp</a>
 </li>
-<li>BOOST_XINT_NTINTEGER_TYPE
-: <a class="el" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">nothrow_integer.hpp</a>
+<li>BOOST_XINT_OTHER_TYPE
+: <a class="el" href="integer_8hpp.html#a4ddb5cb10f0acff5d6df8ee6e9791cad">integer.hpp</a>
 </li>
 <li>BOOST_XINT_RV_REF
-: <a class="el" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">internals.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">basic_types_and_includes.hpp</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/globals_defs.html
==============================================================================
--- sandbox/xint/libs/xint/doc/globals_defs.html (original)
+++ sandbox/xint/libs/xint/doc/globals_defs.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -39,64 +39,38 @@
 : <a class="el" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090">integer.hpp</a>
 </li>
 <li>BOOST_XINT_COPY_ASSIGN_REF
-: <a class="el" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">internals.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">basic_types_and_includes.hpp</a>
 </li>
 <li>BOOST_XINT_COPYABLE_AND_MOVABLE
-: <a class="el" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">internals.hpp</a>
-</li>
-<li>BOOST_XINT_FINTEGER_INITIAL_TPL
-: <a class="el" href="fixed__integer_8hpp.html#a66ab715e926e10eb88658e3c09911f81">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FINTEGER_TPL
-: <a class="el" href="fixed__integer_8hpp.html#a930c41cb36ce498a25ec978e9368ae64">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FINTEGER_TYPE
-: <a class="el" href="fixed__integer_8hpp.html#a351ce6b25ae62d47a5e70707f8c24ee0">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FIXED_ANY_COMPARE
-: <a class="el" href="fixed__integer_8hpp.html#a43d48c65c339614776ffda28eaca7acd">fixed_integer.hpp</a>
-</li>
-<li>BOOST_XINT_FIXED_ANY_MATH
-: <a class="el" href="fixed__integer_8hpp.html#ae2bb6656859af10870ac5410a3873465">fixed_integer.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">basic_types_and_includes.hpp</a>
 </li>
 <li>BOOST_XINT_FORWARD
-: <a class="el" href="internals_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">internals.hpp</a>
-</li>
-<li>BOOST_XINT_FROM_HEADER
-: <a class="el" href="internals_8hpp.html#a7621c4fd1f5760b878ca8f5e5e6bb4c2">internals.hpp</a>
-</li>
-<li>BOOST_XINT_INLINE
-: <a class="el" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">internals.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">basic_types_and_includes.hpp</a>
 </li>
 <li>BOOST_XINT_INTEGER_INITIAL_TPL
 : <a class="el" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">integer.hpp</a>
-, <a class="el" href="nothrow__integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">nothrow_integer.hpp</a>
 </li>
 <li>BOOST_XINT_INTEGER_TPL
-: <a class="el" href="nothrow__integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">nothrow_integer.hpp</a>
-, <a class="el" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">integer.hpp</a>
+: <a class="el" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">integer.hpp</a>
 </li>
 <li>BOOST_XINT_INTEGER_TYPE
 : <a class="el" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">integer.hpp</a>
 </li>
 <li>BOOST_XINT_MOVE
-: <a class="el" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">internals.hpp</a>
-</li>
-<li>BOOST_XINT_NOTHROW_ANY_COMPARE
-: <a class="el" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">nothrow_integer.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">basic_types_and_includes.hpp</a>
 </li>
-<li>BOOST_XINT_NOTHROW_ANY_MATH
-: <a class="el" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">nothrow_integer.hpp</a>
+<li>BOOST_XINT_OTHER_TPL
+: <a class="el" href="integer_8hpp.html#a29684216936e84f92ac88714348ca53b">integer.hpp</a>
 </li>
-<li>BOOST_XINT_NTINTEGER_TYPE
-: <a class="el" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">nothrow_integer.hpp</a>
+<li>BOOST_XINT_OTHER_TYPE
+: <a class="el" href="integer_8hpp.html#a4ddb5cb10f0acff5d6df8ee6e9791cad">integer.hpp</a>
 </li>
 <li>BOOST_XINT_RV_REF
-: <a class="el" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">internals.hpp</a>
+: <a class="el" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">basic_types_and_includes.hpp</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/hierarchy.html
==============================================================================
--- sandbox/xint/libs/xint/doc/hierarchy.html (original)
+++ sandbox/xint/libs/xint/doc/hierarchy.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,12 +27,6 @@
 </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_1any__integer.html">boost::xint::any_integer</a><ul>
-<li><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">boost::xint::fixed_integer&lt;&gt;</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></li>
-<li><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></li>
-</ul>
-</li>
 <li><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">boost::xint::base_divide_t&lt; T &gt;</a></li>
 <li><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></li>
 <li><a class="el" href="classboost_1_1xint_1_1exceptions_1_1cannot__represent.html">boost::xint::exceptions::cannot_represent</a></li>
@@ -45,13 +39,27 @@
 <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="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_1exceptions_1_1too__big.html">boost::xint::exceptions::too_big</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></li>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">boost::xint::options::fixedlength_base</a><ul>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength.html">boost::xint::options::fixedlength&lt; Bits &gt;</a></li>
+</ul>
+</li>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">boost::xint::options::nothrow_base</a><ul>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">boost::xint::options::nothrow&lt; Value &gt;</a></li>
+</ul>
+</li>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">boost::xint::options::secure_base</a><ul>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1secure.html">boost::xint::options::secure&lt; Value &gt;</a></li>
+</ul>
+</li>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">boost::xint::options::threadsafe_base</a><ul>
+<li><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe.html">boost::xint::options::threadsafe&lt; Value &gt;</a></li>
+</ul>
+</li>
 <li><a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref&lt; T &gt;</a></li>
-<li><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">std::numeric_limits&lt; boost::xint::fixed_integer &gt;</a></li>
-<li><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">std::numeric_limits&lt; boost::xint::integer &gt;</a></li>
-<li><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">std::numeric_limits&lt; boost::xint::nothrow_integer &gt;</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/history.html
==============================================================================
--- sandbox/xint/libs/xint/doc/history.html (original)
+++ sandbox/xint/libs/xint/doc/history.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -47,10 +47,17 @@
 <p><b>2010-06-01</b> </p>
 <ul>
 <li>Fourth version posted to the Boost File Vault for preliminary review.</li>
-<li>Another major redesign. All three types are now templates; and it can now be compiled or used as a header-only library. </li>
+<li>Another major redesign. All three types are now templates; and it can now be compiled or used as a header-only library.</li>
+</ul>
+<p><b>2010-06-12</b> </p>
+<ul>
+<li>Fifth version posted to the Boost File Vault for preliminary review.</li>
+<li>Final major redesign (I hope). All types are consolidated into a single <code>integer_t</code> template type.</li>
+<li>The library is now solely header-only, dictated by the templated nature of the types.</li>
+<li>Added Boost.Parameter options to the <code>integer_t</code> type, so you're no longer forced to list the options in order, and list all earlier options before the one that you want to change. </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/history_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/history_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/history_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/index.html
==============================================================================
--- sandbox/xint/libs/xint/doc/index.html (original)
+++ sandbox/xint/libs/xint/doc/index.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -39,13 +39,13 @@
 <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="different__types.html">The Different Integer Types</a></li>
+<li><a class="el" href="fixedlength.html">Fixed-Length Integers</a></li>
 <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 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>
-<li><a class="el" href="threadsafe.html">The <code>Threadsafe</code> Template Parameter</a></li>
+<li><a class="el" href="threadsafe.html">The <code>threadsafe</code> Template Parameter</a></li>
 </ul>
 <p>Library Information:</p>
 <ul>
@@ -62,7 +62,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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/index_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/index_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/index_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/integer_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/integer_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/integer_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -34,7 +34,6 @@
 <tr><td colspan="2"><h2>Classes</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::integer_t&lt;&gt;</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> class template. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</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&lt; boost::xint::integer &gt;</a></td></tr>
 <tr><td colspan="2"><h2>Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -42,11 +41,6 @@
 <p><tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
-
-<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>STL namespace. </p>
-<br/></td></tr>
-</p>
 <tr><td colspan="2"><h2>Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd">BOOST_XINT_ANY_COMPARE</a>(rtype, op)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allows for comparisons between integer_t types and other integral values. <br/></td></tr>
@@ -55,14 +49,19 @@
 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">BOOST_XINT_INTEGER_INITIAL_TPL</a>&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&nbsp;&nbsp;&nbsp;integer_t</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="integer_8hpp.html#a29684216936e84f92ac88714348ca53b">BOOST_XINT_OTHER_TPL</a>&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="integer_8hpp.html#a4ddb5cb10f0acff5d6df8ee6e9791cad">BOOST_XINT_OTHER_TYPE</a>&nbsp;&nbsp;&nbsp;integer_t&lt;other&gt;</td></tr>
 <tr><td colspan="2"><h2>Typedefs</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">boost::xint::integer</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default arbitrary-length integer type. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef integer_t<br class="typebreak"/>
+&lt; options::nothrow&lt; true &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4">boost::xint::nothrow_integer</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default arbitrary-length nothrow_integer type. <br/></td></tr>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">boost::xint::swap</a> (integer_t &amp;left, integer_t &amp;right)</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>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> There are only a couple of functions here because almost all mathematical primitives are implemented as operators. </p>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523">boost::xint::abs</a> (const integer_t n)</td></tr>
@@ -104,7 +103,10 @@
 <tr><td class="memTemplItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18">boost::xint::log2</a> (const integer_t n)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <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> </p>
+<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>
+<dl class="see"><dt><b>See also:</b></dt><dd>operator%(integer_t, integer_t) </dd>
+<dd>
+integer_t::operator%= </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad">boost::xint::invmod</a> (const integer_t n, const integer_t modulus)</td></tr>
@@ -120,12 +122,16 @@
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Random and prime number functions</div></td></tr>
 <tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa3caa0f3187a2dcc617c005b6b75011b"></a> </p>
+<dl class="see"><dt><b>See also:</b></dt><dd>integer_t::random_by_size </dd>
+<dd>
+integer_t::random_prime </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4">boost::xint::is_prime</a> (const integer_t n, callback_t callback=no_callback)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Comparison Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp54923b9793dae891d9489cc5947f263a"></a> </p>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp54923b9793dae891d9489cc5947f263a"></a> The nothrow&lt;true&gt; versions of these functions return <code>false</code> instead of throwing.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd>compare(integer_t, integer_t, bool) </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">boost::xint::operator!=</a> (const integer_t n1, const integer_t n2)</td></tr>
@@ -140,7 +146,7 @@
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">boost::xint::operator&gt;=</a> (const integer_t n1, const integer_t n2)</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> </p>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp8eb1e0f0af70edd858d54ba68b80ce7e"></a> These act exactly the same as for the built-in integer types. </p>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67">boost::xint::operator%</a> (const integer_t n1, const integer_t n2)</td></tr>
@@ -169,30 +175,33 @@
 <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&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a06ea2b89f8b6f52b2e89d0b9c51b60c0">boost::xint::operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const integer_t&lt; Alloc, Threadsafe, Secure &gt; n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
+traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">boost::xint::operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const integer_t n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream&lt; charT, <br class="typebreak"/>
 traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">boost::xint::operator&gt;&gt;</a> (std::basic_istream&lt; charT, traits &gt; &amp;in, integer_t &amp;n)</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>
+<dl class="see"><dt><b>See also:</b></dt><dd>integer_t::pow2 </dd>
+<dd>
+integer_t::factorial </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52">boost::xint::pow</a> (const integer_t n, const integer_t e)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a730b703534656d2f4d96484d7bb8cfc6">boost::xint::sqrt</a> (const integer_t n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424">boost::xint::square</a> (const integer_t n)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2">boost::xint::square_root</a> (const integer_t n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</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>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> Note that these only convert an integer type to something else. See the integer constructors for conversions the other way. </p>
 </div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename Type , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">Type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a36b0be620a1e56f439dde05db5d0033b">boost::xint::to</a> (const integer_t n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">xint::integer</a> type to a built-in integer type. <br/></td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename T , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afd9d2c7743d11e6959d6cda44c8abf69">boost::xint::to</a> (const integer_t n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">xint::integer</a> type to a built-in integer type. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">xint::binary_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40">boost::xint::to_binary</a> (const integer_t n, bitsize_t bits=0)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a binary representation of an integer. <br/></td></tr>
@@ -225,19 +234,35 @@
       </table>
 </div>
 <div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span> &lt;<span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure, <span class="keyword">typename</span> N&gt; \
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span> &lt;<span class="keyword">class</span> A0, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2, <span class="keyword">class</span> A3, <span class="keyword">class</span> A4, <span class="keyword">typename</span> N&gt; \
     rtype op(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span> N n2) { \
- <span class="keywordflow">return</span> op(n1, <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>(n2)); \
+ <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) { \
+ <span class="keywordflow">try</span> { \
+ <span class="keywordflow">return</span> op(n1, <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>(n2)); \
+ } <span class="keywordflow">catch</span> (std::exception&amp;) { \
+ <span class="keywordflow">return</span> rtype(0); \
+ } \
+ } <span class="keywordflow">else</span> { \
+ <span class="keywordflow">return</span> op(n1, <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>(n2)); \
+ } \
     } \
     \
- <span class="keyword">template</span> &lt;<span class="keyword">typename</span> N, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt; \
+ <span class="keyword">template</span> &lt;<span class="keyword">typename</span> N, <span class="keyword">class</span> A0, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2, <span class="keyword">class</span> A3, <span class="keyword">class</span> A4&gt; \
     rtype op(<span class="keyword">const</span> N n1, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2) { \
- <span class="keywordflow">return</span> op(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>(n1), n2); \
+ <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) { \
+ <span class="keywordflow">try</span> { \
+ <span class="keywordflow">return</span> op(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>(n1), n2); \
+ } <span class="keywordflow">catch</span> (std::exception&amp;) { \
+ <span class="keywordflow">return</span> rtype(0); \
+ } \
+ } <span class="keywordflow">else</span> { \
+ <span class="keywordflow">return</span> op(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>(n1), n2); \
+ } \
     }
 </pre></div>
 <p>Allows for comparisons between integer_t types and other integral values. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01376">1376</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02284">2284</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -256,27 +281,10 @@
       </table>
 </div>
 <div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span> &lt;<span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure, <span class="keyword">typename</span> N&gt; \
- <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> op(<span class="keyword">const</span> integer_t&lt;Alloc, Threadsafe, \
- Secure&gt; n1, <span class="keyword">const</span> N n2) \
- { \
- <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(op(n1, integer_t&lt;Alloc, Threadsafe, \
- Secure&gt;(n2))); \
- <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r); \
- } \
- \
- <span class="keyword">template</span> &lt;<span class="keyword">typename</span> N, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt; \
- <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> op(<span class="keyword">const</span> N n1, <span class="keyword">const</span> integer_t&lt;Alloc, Threadsafe, \
- Secure&gt; n2) \
- { \
- <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(op(integer_t&lt;Alloc, Threadsafe, Secure&gt;(n1), \
- n2)); \
- <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r); \
- }
-</pre></div>
+
 <p>Allows for operations between integer_t types and other integral values. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01396">1396</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02320">2320</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -291,7 +299,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00033">33</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00026">26</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -306,7 +314,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00034">34</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00027">27</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -321,12 +329,42 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00035">35</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00028">28</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a29684216936e84f92ac88714348ca53b"></a><!-- doxytag: member="integer.hpp::BOOST_XINT_OTHER_TPL" ref="a29684216936e84f92ac88714348ca53b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define BOOST_XINT_OTHER_TPL&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00029">29</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4ddb5cb10f0acff5d6df8ee6e9791cad"></a><!-- doxytag: member="integer.hpp::BOOST_XINT_OTHER_TYPE" ref="a4ddb5cb10f0acff5d6df8ee6e9791cad" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define BOOST_XINT_OTHER_TYPE&nbsp;&nbsp;&nbsp;integer_t&lt;other&gt;</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00030">30</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/integer_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/integer_8hpp_source.html (original)
+++ sandbox/xint/libs/xint/doc/integer_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -42,753 +42,1741 @@
 <a name="l00021"></a>00021 <span class="preprocessor">#include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">detail/internals.hpp</a>&quot;</span>
 <a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="random_8hpp.html" title="Declares items relating to random numbers.">random.hpp</a>&quot;</span>
 <a name="l00023"></a>00023
-<a name="l00024"></a>00024 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span> <span class="comment">// The file&#39;s constructors make heavy use of the &#39;this&#39; pointer, in a safe</span>
-<a name="l00026"></a>00026 <span class="comment">// manner. MSVC isn&#39;t smart enough to know that it&#39;s safe.</span>
-<a name="l00027"></a>00027 <span class="preprocessor"> #pragma warning(push)</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable: 4355)</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#ifdef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span> <span class="comment">// The documentation should see a simplified version of the functions.</span>
-<a name="l00033"></a><a class="code" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">00033</a> <span class="preprocessor"> #define BOOST_XINT_INTEGER_INITIAL_TPL template&lt;...&gt;</span>
-<a name="l00034"></a><a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">00034</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TPL template&lt;...&gt;</span>
-<a name="l00035"></a><a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">00035</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TYPE integer_t</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_INITIAL_TPL template &lt;class Alloc = \</span>
-<a name="l00038"></a>00038 <span class="preprocessor"> std::allocator&lt;detail::digit_t&gt;, bool Threadsafe = true, bool Secure = \</span>
-<a name="l00039"></a>00039 <span class="preprocessor"> false&gt;</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TPL template&lt;class Alloc, bool Threadsafe, bool \</span>
-<a name="l00041"></a>00041 <span class="preprocessor"> Secure&gt;</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TYPE integer_t&lt;Alloc, Threadsafe, Secure&gt;</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>
-<a name="l00045"></a>00045 <span class="keyword">namespace </span>boost {
-<a name="l00046"></a>00046 <span class="keyword">namespace </span>xint {
-<a name="l00047"></a>00047
-<a name="l00069"></a>00069 <a class="code" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">BOOST_XINT_INTEGER_INITIAL_TPL</a>
-<a name="l00070"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html">00070</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a>: <span class="keyword">private</span> detail::digitmanager_t&lt;Alloc, Threadsafe, Secure&gt;,
-<a name="l00071"></a>00071 <span class="keyword">public</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keyword">public</span>:
-<a name="l00074"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">00074</a> <span class="keyword">typedef</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">type</a>;
-<a name="l00075"></a>00075
-<a name="l00078"></a>00078 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>();
-<a name="l00079"></a>00079 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; b, <span class="keywordtype">bool</span> force_thread_safety =
-<a name="l00080"></a>00080 <span class="keyword">false</span>);
-<a name="l00081"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a3e00410a0d4c027e51d9377cd8e469c8">00081</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a3e00410a0d4c027e51d9377cd8e469c8">integer_t</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">type</a>) b): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1) { <a class="code" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">_swap</a>(b); }
-<a name="l00082"></a>00082 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00083"></a>00083 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00084"></a>00084 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00085"></a>00085 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits = 0);
-<a name="l00086"></a>00086 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>&amp; other, <span class="keywordtype">bool</span> force_thread_safety =
-<a name="l00087"></a>00087 <span class="keyword">false</span>);
-<a name="l00088"></a>00088 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> Type n,
-<a name="l00089"></a>00089 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::<a class="code" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">type</a>* = 0);
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>
-<a name="l00093"></a>00093 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> detail::data_t c):
-<a name="l00094"></a>00094 detail::digitmanager_t&lt;Alloc, Threadsafe, Secure&gt;(*c.holder()),
-<a name="l00095"></a>00095 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, c.length, c.negative) { data.beginendmod(); }
-<a name="l00096"></a>00096 <span class="preprocessor"> #endif</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span>
-<a name="l00098"></a>00098
-<a name="l00107"></a>00107 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">operator=</a>(<a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">type</a>) c);
-<a name="l00108"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">00108</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">operator=</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">type</a>) c) {
-<a name="l00109"></a>00109 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">_swap</a>(c); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00110"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a7798d6022dd3478a10b35b094347c95f">00110</a> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a7798d6022dd3478a10b35b094347c95f">operator=</a>(<span class="keyword">const</span> Type n) {
-<a name="l00111"></a>00111 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> nn(n); <a class="code" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">_swap</a>(nn); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00112"></a>00112
-<a name="l00113"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">00113</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">operator!</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_zero(); }
-<a name="l00114"></a>00114 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2" title="Return the additive inverse of an integer.">operator-</a>() <span class="keyword">const</span>;
-<a name="l00115"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">00115</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">operator+</a>() { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00116"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a9c772faa5bee3403bed32e1d7c44f51b">00116</a> <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a9c772faa5bee3403bed32e1d7c44f51b">operator+</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">operator+=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
-<a name="l00119"></a>00119 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">operator-=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
-<a name="l00120"></a>00120 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">operator*=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
-<a name="l00121"></a>00121 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">operator/=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
-<a name="l00122"></a>00122 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">operator%=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">operator++</a>();
-<a name="l00125"></a>00125 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">operator--</a>();
-<a name="l00126"></a>00126 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">operator++</a>(<span class="keywordtype">int</span>);
-<a name="l00127"></a>00127 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">operator--</a>(<span class="keywordtype">int</span>);
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n);
-<a name="l00130"></a>00130 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">operator|=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n);
-<a name="l00131"></a>00131 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">operator^=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n);
-<a name="l00132"></a>00132 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005" title="Left-shift an integer by a specified number of bits.">operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) <span class="keyword">const</span>;
-<a name="l00133"></a>00133 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8" title="Right-shift an integer by a specified number of bits.">operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) <span class="keyword">const</span>;
-<a name="l00134"></a>00134 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">operator&lt;&lt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift);
-<a name="l00135"></a>00135 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">operator&gt;&gt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift);
-<a name="l00137"></a>00137
-<a name="l00140"></a>00140 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654" title="Tests the lowest bit of *this to determine oddness.">is_odd</a>() <span class="keyword">const</span>;
-<a name="l00141"></a>00141 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790" title="Tests the lowest bit of *this to determine evenness.">is_even</a>() <span class="keyword">const</span>;
-<a name="l00142"></a>00142 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3" 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="l00143"></a>00143 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb" title="Tells you roughly how large *this is.">hex_digits</a>() <span class="keyword">const</span>;
-<a name="l00145"></a>00145
-<a name="l00146"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">00146</a> <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t&lt;BOOST_XINT_INTEGER_TYPE &gt;</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">divide_t</a>;
-<a name="l00147"></a>00147
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> exponent);
-<a name="l00157"></a>00157 <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n);
-<a name="l00158"></a>00158 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2" title="Generates a random integer with specific attributes.">random_by_size</a>(Type&amp;
-<a name="l00159"></a>00159 gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on = <span class="keyword">false</span>, <span class="keywordtype">bool</span> low_bit_on =
-<a name="l00160"></a>00160 <span class="keyword">false</span>, <span class="keywordtype">bool</span> can_be_negative = <span class="keyword">false</span>);
-<a name="l00161"></a>00161 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(Type&amp; gen,
-<a name="l00162"></a>00162 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>);
-<a name="l00164"></a>00164
-<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">00165</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a27556439782519a285b917f5c75f5619">_swap</a>(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; s) { <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">std::swap</a>;
-<a name="l00166"></a>00166 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(data, s.data); }
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 <span class="keyword">private</span>:
-<a name="l00169"></a>00169 <a class="code" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(<a class="code" href="classboost_1_1xint_1_1integer__t.html#aa5b251ae919e7748c4fa1568d3560e44">type</a>)
-<a name="l00170"></a>00170 };
-<a name="l00171"></a>00171
-<a name="l00173"></a>00173 <span class="comment">// Member function template definitions</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span> <span class="comment">// The documentation should see a simplified version of the functions.</span>
+<a name="l00026"></a><a class="code" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">00026</a> <span class="preprocessor"> #define BOOST_XINT_INTEGER_INITIAL_TPL template&lt;...&gt;</span>
+<a name="l00027"></a><a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">00027</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TPL template&lt;...&gt;</span>
+<a name="l00028"></a><a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">00028</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TYPE integer_t</span>
+<a name="l00029"></a><a class="code" href="integer_8hpp.html#a29684216936e84f92ac88714348ca53b">00029</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_OTHER_TPL template&lt;...&gt;</span>
+<a name="l00030"></a><a class="code" href="integer_8hpp.html#a4ddb5cb10f0acff5d6df8ee6e9791cad">00030</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_OTHER_TYPE integer_t&lt;other&gt;</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_INITIAL_TPL template &lt; \</span>
+<a name="l00033"></a>00033 <span class="preprocessor"> class A0 = parameter::void_, \</span>
+<a name="l00034"></a>00034 <span class="preprocessor"> class A1 = parameter::void_, \</span>
+<a name="l00035"></a>00035 <span class="preprocessor"> class A2 = parameter::void_, \</span>
+<a name="l00036"></a>00036 <span class="preprocessor"> class A3 = parameter::void_, \</span>
+<a name="l00037"></a>00037 <span class="preprocessor"> class A4 = parameter::void_&gt;</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TPL template&lt;class A0, class A1, class A2, \</span>
+<a name="l00039"></a>00039 <span class="preprocessor"> class A3, class A4&gt;</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TYPE integer_t&lt;A0, A1, A2, A3, A4&gt;</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span>
+<a name="l00042"></a>00042 <span class="preprocessor"> #define BOOST_XINT_OTHER_TPL template &lt;class B0, class B1, class B2, class \</span>
+<a name="l00043"></a>00043 <span class="preprocessor"> B3, class B4&gt;</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_OTHER_TYPE integer_t&lt;B0, B1, B2, B3, B4&gt;</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span>
+<a name="l00047"></a>00047 <span class="keyword">namespace </span>boost {
+<a name="l00048"></a>00048 <span class="keyword">namespace </span>xint {
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="comment">// todo: update for new parameters</span>
+<a name="l00101"></a>00101 <span class="comment"></span><a class="code" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">BOOST_XINT_INTEGER_INITIAL_TPL</a>
+<a name="l00102"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html">00102</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> {
+<a name="l00103"></a>00103 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> options::integer_signature::bind&lt;A0,A1,A2,A3,A4&gt;::type
+<a name="l00105"></a>00105 args;
+<a name="l00106"></a>00106 <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> binding&lt;args, tag::fixedlength_tag,
+<a name="l00107"></a>00107 <a class="code" href="structboost_1_1xint_1_1options_1_1fixedlength.html">options::fixedlength&lt;0&gt;</a> &gt;::type BitsType;
+<a name="l00108"></a>00108 <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> binding&lt;args, tag::threadsafe_tag, mpl::true_&gt;::type
+<a name="l00109"></a>00109 ThreadsafeType;
+<a name="l00110"></a>00110 <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> binding&lt;args, tag::secure_tag, mpl::false_&gt;::type
+<a name="l00111"></a>00111 SecureType;
+<a name="l00112"></a>00112 <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> binding&lt;args, tag::nothrow_tag, mpl::false_&gt;::type
+<a name="l00113"></a>00113 NothrowType;
+<a name="l00114"></a>00114 <span class="preprocessor"> #endif // BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span>
+<a name="l00116"></a>00116 <span class="keyword">public</span>:
+<a name="l00117"></a>00117 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> Bits;
+<a name="l00119"></a>00119 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> Threadsafe, Secure, Nothrow;
+<a name="l00120"></a>00120 <span class="keyword">typedef</span> <span class="keyword">typename</span> binding&lt;args, tag::allocator_tag,
+<a name="l00121"></a>00121 std::allocator&lt;detail::digit_t&gt; &gt;::type Alloc;
+<a name="l00122"></a>00122 <span class="keyword">typedef</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> type;
+<a name="l00123"></a>00123 <span class="keyword">typedef</span> detail::raw_integer_t&lt;BitsType::value, SecureType::value, Alloc&gt;
+<a name="l00124"></a>00124 datatype;
+<a name="l00125"></a>00125 <span class="preprocessor"> #endif // BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00126"></a>00126 <span class="preprocessor"></span>
+<a name="l00129"></a>00129 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>();
+<a name="l00130"></a>00130 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; b, <span class="keywordtype">bool</span> force_thread_safety =
+<a name="l00131"></a>00131 <span class="keyword">false</span>);
+<a name="l00132"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a3e00410a0d4c027e51d9377cd8e469c8">00132</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a3e00410a0d4c027e51d9377cd8e469c8">integer_t</a>(<a class="code" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(type) b) { _swap(b); }
+<a name="l00133"></a>00133 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base = 10);
+<a name="l00134"></a>00134 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base = 10);
+<a name="l00135"></a>00135 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base = 10);
+<a name="l00136"></a>00136 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> bits = 0);
+<a name="l00137"></a>00137 <a class="code" href="integer_8hpp.html#a29684216936e84f92ac88714348ca53b">BOOST_XINT_OTHER_TPL</a> <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4ddb5cb10f0acff5d6df8ee6e9791cad">BOOST_XINT_OTHER_TYPE</a>&amp; other,
+<a name="l00138"></a>00138 <span class="keywordtype">bool</span> force_thread_safety = <span class="keyword">false</span>);
+<a name="l00139"></a>00139 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> Type n,
+<a name="l00140"></a>00140 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::type* = 0);
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span>
+<a name="l00144"></a>00144 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> detail::raw_integer_t&lt;BitsType::value, SecureType::value,
+<a name="l00145"></a>00145 Alloc&gt; c): data(c) { <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique(); }
+<a name="l00146"></a>00146 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb" title="Creates a new integer with an initial value of zero.">integer_t</a>(<span class="keyword">const</span> detail::raw_integer_t&lt;BitsType::value, SecureType::value,
+<a name="l00147"></a>00147 Alloc&gt; c, <span class="keywordtype">bool</span> negative): data(c, negative) { <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>)
+<a name="l00148"></a>00148 data.make_unique(); }
+<a name="l00149"></a>00149 <span class="preprocessor"> #endif // BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00150"></a>00150 <span class="preprocessor"></span>
+<a name="l00151"></a>00151
+<a name="l00157"></a>00157 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">operator=</a>(<a class="code" href="basic__types__and__includes_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(type) c);
+<a name="l00158"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">00158</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ae8aaa078191d16525cfb8c97d9f5f401">operator=</a>(<a class="code" href="basic__types__and__includes_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(type) c) {
+<a name="l00159"></a>00159 _swap(c); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00160"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a7798d6022dd3478a10b35b094347c95f">00160</a> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a7798d6022dd3478a10b35b094347c95f">operator=</a>(<span class="keyword">const</span> Type n) {
+<a name="l00161"></a>00161 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> nn(n); _swap(nn); <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_1integer__t.html#ac15850352ec856e1a380209214cf8563">00163</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#ac15850352ec856e1a380209214cf8563">operator!</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_zero(); }
+<a name="l00164"></a>00164 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2" title="Return the additive inverse of an integer.">operator-</a>() <span class="keyword">const</span>;
+<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">00165</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a641a730bbcc4e4191db4fcf753dd3d18">operator+</a>() { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00166"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a9c772faa5bee3403bed32e1d7c44f51b">00166</a> <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a9c772faa5bee3403bed32e1d7c44f51b">operator+</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00167"></a>00167 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#ad0328a5852615d76af78e99dbde3adc1" title="The Bitwise Ones&amp;#39; Complement (i.e. bitwise NOT) operator.">operator~</a>() <span class="keyword">const</span>;
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">operator+=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
+<a name="l00170"></a>00170 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">operator-=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
+<a name="l00171"></a>00171 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">operator*=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
+<a name="l00172"></a>00172 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">operator/=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
+<a name="l00173"></a>00173 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">operator%=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b);
 <a name="l00174"></a>00174
-<a name="l00176"></a>00176 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00177"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb">00177</a> BOOST_XINT_INTEGER_TYPE::integer_t(): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1) {
-<a name="l00178"></a>00178 <span class="comment">// Don&#39;t need to do anything, already preinitialized to zero.</span>
-<a name="l00179"></a>00179 }
-<a name="l00180"></a>00180
-<a name="l00191"></a>00191 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00192"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a6735b1926fb31c09537fb8f2bcc243ef">00192</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; b, <span class="keywordtype">bool</span>
-<a name="l00193"></a>00193 force_thread_safety): detail::digitmanager_t&lt;Alloc, Threadsafe,
-<a name="l00194"></a>00194 Secure&gt;(*b.data.holder()), <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, b.data.length,
-<a name="l00195"></a>00195 b.data.negative)
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 data.beginendmod();
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (force_thread_safety &amp;&amp; Threadsafe == <span class="keyword">false</span>) data.make_unique();
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00202"></a>00202 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00203"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aabfdab7fc4cc16f776be0a7c8b886d68">00203</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base):
-<a name="l00204"></a>00204 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 data.from_string(str, strlen(str), base);
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208
-<a name="l00237"></a>00237 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00238"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#afc116db2b62cc68eb9b82ceb904ea187">00238</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base):
-<a name="l00239"></a>00239 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 data.from_string(str, endptr, base);
-<a name="l00242"></a>00242 }
-<a name="l00243"></a>00243
-<a name="l00268"></a>00268 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00269"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a75d00d3e27a38ecbf666eaa6fa6aaf5a">00269</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base):
-<a name="l00270"></a>00270 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 data.from_string(str.c_str(), str.length(), base);
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274
-<a name="l00296"></a>00296 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00297"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e">00297</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits):
-<a name="l00298"></a>00298 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00299"></a>00299 {
-<a name="l00300"></a>00300 data.from_binary(b, bits);
-<a name="l00301"></a>00301 }
-<a name="l00302"></a>00302
-<a name="l00319"></a>00319 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00320"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#af942496633d24b7121682a6fda401b8d">00320</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>&amp; c, <span class="keywordtype">bool</span>):
-<a name="l00321"></a>00321 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <span class="keywordflow">if</span> (c._data().is_nan()) <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="l00324"></a>00324 data.duplicate_data(c._data());
-<a name="l00325"></a>00325 }
-<a name="l00326"></a>00326
-<a name="l00339"></a>00339 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00340"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ad159c2201f2cf1e1de1988cc41f8b4eb">00340</a> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> Type n,
-<a name="l00341"></a>00341 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::<a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">type</a>*):
-<a name="l00342"></a>00342 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00343"></a>00343 {
-<a name="l00344"></a>00344 <span class="keywordflow">if</span> (std::numeric_limits&lt;Type&gt;::is_signed) data.set_signed(n);
-<a name="l00345"></a>00345 <span class="keywordflow">else</span> data.set_unsigned(n);
-<a name="l00346"></a>00346 }
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00349"></a>00349 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::
-<a name="l00350"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">00350</a> operator=(<a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">type</a>) c)
-<a name="l00351"></a>00351 {
-<a name="l00352"></a>00352 data = c.data;
-<a name="l00353"></a>00353 data.beginendmod();
-<a name="l00354"></a>00354 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00355"></a>00355 }
-<a name="l00356"></a>00356
-<a name="l00363"></a>00363 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00364"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2">00364</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">BOOST_XINT_INTEGER_TYPE::operator-</a>()<span class="keyword"> const </span>{
-<a name="l00365"></a>00365 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(-data);
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368
-<a name="l00370"></a>00370 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00371"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">00371</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator+=(<span class="keyword">const</span>
-<a name="l00372"></a>00372 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
-<a name="l00373"></a>00373 {
-<a name="l00374"></a>00374 data += b.data;
-<a name="l00375"></a>00375 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00376"></a>00376 }
-<a name="l00377"></a>00377
-<a name="l00379"></a>00379 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00380"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">00380</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator-=(<span class="keyword">const</span>
-<a name="l00381"></a>00381 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
-<a name="l00382"></a>00382 {
-<a name="l00383"></a>00383 data -= b.data;
-<a name="l00384"></a>00384 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00385"></a>00385 }
-<a name="l00386"></a>00386
-<a name="l00388"></a>00388 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00389"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">00389</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator*=(<span class="keyword">const</span>
-<a name="l00390"></a>00390 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
-<a name="l00391"></a>00391 {
-<a name="l00392"></a>00392 data *= b.data;
-<a name="l00393"></a>00393 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00175"></a>00175 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">operator++</a>();
+<a name="l00176"></a>00176 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">operator--</a>();
+<a name="l00177"></a>00177 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">operator++</a>(<span class="keywordtype">int</span>);
+<a name="l00178"></a>00178 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">operator--</a>(<span class="keywordtype">int</span>);
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n);
+<a name="l00181"></a>00181 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">operator|=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n);
+<a name="l00182"></a>00182 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">operator^=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n);
+<a name="l00183"></a>00183 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005" title="Left-shift an integer by a specified number of bits.">operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift) <span class="keyword">const</span>;
+<a name="l00184"></a>00184 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8" title="Right-shift an integer by a specified number of bits.">operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift) <span class="keyword">const</span>;
+<a name="l00185"></a>00185 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">operator&lt;&lt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift);
+<a name="l00186"></a>00186 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">operator&gt;&gt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift);
+<a name="l00188"></a>00188
+<a name="l00191"></a>00191 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654" title="Tests the lowest bit of *this to determine oddness.">is_odd</a>() <span class="keyword">const</span>;
+<a name="l00192"></a>00192 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790" title="Tests the lowest bit of *this to determine evenness.">is_even</a>() <span class="keyword">const</span>;
+<a name="l00193"></a>00193 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>() <span class="keyword">const</span>;
+<a name="l00194"></a>00194 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3" 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="l00195"></a>00195 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb" title="Tells you roughly how large *this is.">hex_digits</a>() <span class="keyword">const</span>;
+<a name="l00197"></a>00197
+<a name="l00198"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a1c701a8337c775e18c26759d55398b58">00198</a> <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t&lt;BOOST_XINT_INTEGER_TYPE &gt;</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">divide_t</a>;
+<a name="l00199"></a>00199
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> exponent);
+<a name="l00209"></a>00209 <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n);
+<a name="l00210"></a>00210 <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l00211"></a>00211 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2" title="Generates a random integer with specific attributes.">random_by_size</a>(Type&amp;
+<a name="l00212"></a>00212 gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on = <span class="keyword">false</span>, <span class="keywordtype">bool</span> low_bit_on =
+<a name="l00213"></a>00213 <span class="keyword">false</span>, <span class="keywordtype">bool</span> can_be_negative = <span class="keyword">false</span>);
+<a name="l00214"></a>00214 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(Type&amp; gen,
+<a name="l00215"></a>00215 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>);
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00219"></a>00219 <span class="preprocessor"></span>
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 <span class="keywordtype">void</span> _swap(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; s) { <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">std::swap</a>;
+<a name="l00222"></a>00222 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(data, s.data); }
+<a name="l00223"></a>00223 datatype&amp; _data() { <span class="keywordflow">return</span> data; }
+<a name="l00224"></a>00224 <span class="keyword">const</span> datatype&amp; _data()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }
+<a name="l00225"></a>00225 <span class="keywordtype">size_t</span> _get_length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.length; }
+<a name="l00226"></a>00226 detail::digit_t _get_digit(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data[i]; }
+<a name="l00227"></a>00227 <span class="keywordtype">void</span> _make_unique() { data.make_unique(); }
+<a name="l00229"></a>00229 <span class="preprocessor"> #endif</span>
+<a name="l00230"></a>00230 <span class="preprocessor"></span>
+<a name="l00231"></a>00231 <span class="keyword">private</span>:
+<a name="l00232"></a>00232 datatype data;
+<a name="l00233"></a>00233
+<a name="l00234"></a>00234 <a class="code" href="basic__types__and__includes_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(type)
+<a name="l00235"></a>00235 };
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="preprocessor">#ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00238"></a>00238 <span class="preprocessor"></span><a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00239"></a>00239 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> BOOST_XINT_INTEGER_TYPE::Bits =
+<a name="l00240"></a>00240 BOOST_XINT_INTEGER_TYPE::BitsType::value;
+<a name="l00241"></a>00241 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00242"></a>00242 <span class="keyword">const</span> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::Threadsafe =
+<a name="l00243"></a>00243 BOOST_XINT_INTEGER_TYPE::ThreadsafeType::value;
+<a name="l00244"></a>00244 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00245"></a>00245 <span class="keyword">const</span> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::Secure =
+<a name="l00246"></a>00246 BOOST_XINT_INTEGER_TYPE::SecureType::value;
+<a name="l00247"></a>00247 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00248"></a>00248 <span class="keyword">const</span> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::Nothrow =
+<a name="l00249"></a>00249 BOOST_XINT_INTEGER_TYPE::NothrowType::value;
+<a name="l00250"></a>00250 <span class="preprocessor">#endif // BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l00251"></a>00251 <span class="preprocessor"></span>
+<a name="l00253"></a>00253 <span class="comment">// Member function template definitions</span>
+<a name="l00254"></a>00254
+<a name="l00256"></a>00256 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00257"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adc039392b5197a0ebd69b5744ee420eb">00257</a> BOOST_XINT_INTEGER_TYPE::integer_t() {
+<a name="l00258"></a>00258 <span class="comment">// Don&#39;t need to do anything, already preinitialized to zero.</span>
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260
+<a name="l00271"></a>00271 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00272"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a6735b1926fb31c09537fb8f2bcc243ef">00272</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; b, <span class="keywordtype">bool</span>
+<a name="l00273"></a>00273 force_thread_safety)
+<a name="l00274"></a>00274 {
+<a name="l00275"></a>00275 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00276"></a>00276 <span class="keywordflow">try</span> {
+<a name="l00277"></a>00277 data = b.data;
+<a name="l00278"></a>00278 <span class="keywordflow">if</span> (!data.is_nan()) {
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (force_thread_safety &amp;&amp; Threadsafe == <span class="keyword">false</span>) data.make_unique();
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00282"></a>00282 data.make_nan();
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284 } <span class="keywordflow">else</span> {
+<a name="l00285"></a>00285 data = b.data;
+<a name="l00286"></a>00286 <span class="keywordflow">if</span> (force_thread_safety &amp;&amp; Threadsafe == <span class="keyword">false</span>) data.make_unique();
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289
+<a name="l00291"></a>00291 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00292"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aabfdab7fc4cc16f776be0a7c8b886d68">00292</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base) {
+<a name="l00293"></a>00293 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00294"></a>00294 <span class="keywordflow">try</span> {
+<a name="l00295"></a>00295 <span class="keywordflow">if</span> (str[0] == <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>[0] &amp;&amp; std::string(str) == <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>) {
+<a name="l00296"></a>00296 data.make_nan();
+<a name="l00297"></a>00297 } <span class="keywordflow">else</span> {
+<a name="l00298"></a>00298 data.from_string(str, base);
+<a name="l00299"></a>00299 }
+<a name="l00300"></a>00300 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00301"></a>00301 data.make_nan();
+<a name="l00302"></a>00302 }
+<a name="l00303"></a>00303 } <span class="keywordflow">else</span> {
+<a name="l00304"></a>00304 data.from_string(str, base);
+<a name="l00305"></a>00305 }
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307
+<a name="l00336"></a>00336 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00337"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#afc116db2b62cc68eb9b82ceb904ea187">00337</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00340"></a>00340 <span class="keywordflow">try</span> {
+<a name="l00341"></a>00341 <span class="keywordflow">if</span> (str[0] == <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>[0]) {
+<a name="l00342"></a>00342 std::string s(str);
+<a name="l00343"></a>00343 <span class="keywordflow">if</span> (s.substr(0, <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>.length()) == <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>) {
+<a name="l00344"></a>00344 data.make_nan();
+<a name="l00345"></a>00345 *endptr = str + <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>.length();
+<a name="l00346"></a>00346 <span class="keywordflow">return</span>;
+<a name="l00347"></a>00347 }
+<a name="l00348"></a>00348 }
+<a name="l00349"></a>00349 data.from_string(str, endptr, base);
+<a name="l00350"></a>00350 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00351"></a>00351 data.make_nan();
+<a name="l00352"></a>00352 }
+<a name="l00353"></a>00353 } <span class="keywordflow">else</span> {
+<a name="l00354"></a>00354 data.from_string(str, endptr, base);
+<a name="l00355"></a>00355 }
+<a name="l00356"></a>00356 }
+<a name="l00357"></a>00357
+<a name="l00382"></a>00382 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00383"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a75d00d3e27a38ecbf666eaa6fa6aaf5a">00383</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
+<a name="l00384"></a>00384 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00385"></a>00385 <span class="keywordflow">try</span> {
+<a name="l00386"></a>00386 <span class="keywordflow">if</span> (str == <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>) data.make_nan();
+<a name="l00387"></a>00387 <span class="keywordflow">else</span> data.from_string(str, base);
+<a name="l00388"></a>00388 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00389"></a>00389 data.make_nan();
+<a name="l00390"></a>00390 }
+<a name="l00391"></a>00391 } <span class="keywordflow">else</span> {
+<a name="l00392"></a>00392 data.from_string(str, base);
+<a name="l00393"></a>00393 }
 <a name="l00394"></a>00394 }
 <a name="l00395"></a>00395
-<a name="l00397"></a>00397 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00398"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">00398</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator/=(<span class="keyword">const</span>
-<a name="l00399"></a>00399 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
-<a name="l00400"></a>00400 {
-<a name="l00401"></a>00401 data /= b.data;
-<a name="l00402"></a>00402 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404
-<a name="l00406"></a>00406 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00407"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">00407</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator%=(<span class="keyword">const</span>
-<a name="l00408"></a>00408 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
-<a name="l00409"></a>00409 {
-<a name="l00410"></a>00410 data %= b.data;
-<a name="l00411"></a>00411 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00412"></a>00412 }
-<a name="l00413"></a>00413
-<a name="l00418"></a>00418 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00419"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">00419</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator++() {
-<a name="l00420"></a>00420 ++data;
-<a name="l00421"></a>00421 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00422"></a>00422 }
-<a name="l00423"></a>00423
-<a name="l00428"></a>00428 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00429"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">00429</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator--() {
-<a name="l00430"></a>00430 --data;
-<a name="l00431"></a>00431 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00432"></a>00432 }
-<a name="l00433"></a>00433
-<a name="l00441"></a>00441 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00442"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a86ddf2ee74e7716528baa9a0b7e18449">00442</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::operator++(<span class="keywordtype">int</span>) {
-<a name="l00443"></a>00443 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data++);
-<a name="l00444"></a>00444 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00445"></a>00445 }
-<a name="l00446"></a>00446
-<a name="l00454"></a>00454 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00455"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adab9f000397bd8856f6b73b45e6682c3">00455</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::operator--(<span class="keywordtype">int</span>) {
-<a name="l00456"></a>00456 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data--);
-<a name="l00457"></a>00457 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00458"></a>00458 }
-<a name="l00459"></a>00459
-<a name="l00461"></a>00461 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00462"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">00462</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator&amp;=(<span class="keyword">const</span>
-<a name="l00463"></a>00463 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n)
-<a name="l00464"></a>00464 {
-<a name="l00465"></a>00465 data &amp;= n.data;
-<a name="l00466"></a>00466 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00467"></a>00467 }
-<a name="l00468"></a>00468
-<a name="l00470"></a>00470 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00471"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">00471</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator|=(<span class="keyword">const</span>
-<a name="l00472"></a>00472 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n)
-<a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 data |= n.data;
-<a name="l00475"></a>00475 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00476"></a>00476 }
-<a name="l00477"></a>00477
-<a name="l00479"></a>00479 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00480"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">00480</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator^=(<span class="keyword">const</span>
-<a name="l00481"></a>00481 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n)
-<a name="l00482"></a>00482 {
-<a name="l00483"></a>00483 data ^= n.data;
-<a name="l00484"></a>00484 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00485"></a>00485 }
-<a name="l00486"></a>00486
+<a name="l00417"></a>00417 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00418"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e">00418</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> bits) {
+<a name="l00419"></a>00419 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00420"></a>00420 <span class="keywordflow">try</span> {
+<a name="l00421"></a>00421 data.from_binary(b, bits);
+<a name="l00422"></a>00422 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00423"></a>00423 data.make_nan();
+<a name="l00424"></a>00424 }
+<a name="l00425"></a>00425 } <span class="keywordflow">else</span> {
+<a name="l00426"></a>00426 data.from_binary(b, bits);
+<a name="l00427"></a>00427 }
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429
+<a name="l00442"></a>00442 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00443"></a>00443 <a class="code" href="integer_8hpp.html#a29684216936e84f92ac88714348ca53b">BOOST_XINT_OTHER_TPL</a>
+<a name="l00444"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#afcc80aaf55194eca5926d7a6d52489f0">00444</a> BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4ddb5cb10f0acff5d6df8ee6e9791cad">BOOST_XINT_OTHER_TYPE</a>&amp; b, <span class="keywordtype">bool</span>
+<a name="l00445"></a>00445 force_thread_safety)
+<a name="l00446"></a>00446 {
+<a name="l00447"></a>00447 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00448"></a>00448 <span class="keywordflow">try</span> {
+<a name="l00449"></a>00449 <span class="keywordflow">if</span> (b.is_nan()) {
+<a name="l00450"></a>00450 data.make_nan();
+<a name="l00451"></a>00451 } <span class="keywordflow">else</span> {
+<a name="l00452"></a>00452 data = b._data();
+<a name="l00453"></a>00453 <span class="keywordflow">if</span> (!data.is_nan() &amp;&amp; force_thread_safety &amp;&amp; Threadsafe ==
+<a name="l00454"></a>00454 <span class="keyword">false</span>) data.make_unique();
+<a name="l00455"></a>00455 }
+<a name="l00456"></a>00456 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00457"></a>00457 data.make_nan();
+<a name="l00458"></a>00458 }
+<a name="l00459"></a>00459 } <span class="keywordflow">else</span> {
+<a name="l00460"></a>00460 <span class="keywordflow">if</span> (b._data().is_nan()) <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="l00461"></a>00461 data = b._data();
+<a name="l00462"></a>00462 <span class="keywordflow">if</span> (force_thread_safety &amp;&amp; Threadsafe == <span class="keyword">false</span>) data.make_unique();
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465
+<a name="l00478"></a>00478 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00479"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ad159c2201f2cf1e1de1988cc41f8b4eb">00479</a> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; BOOST_XINT_INTEGER_TYPE::integer_t(<span class="keyword">const</span> Type n,
+<a name="l00480"></a>00480 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::type*)
+<a name="l00481"></a>00481 {
+<a name="l00482"></a>00482 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00483"></a>00483 <span class="keywordflow">try</span> {
+<a name="l00484"></a>00484 <span class="keywordflow">if</span> (std::numeric_limits&lt;Type&gt;::is_signed) data.set_signed(n);
+<a name="l00485"></a>00485 <span class="keywordflow">else</span> data.set_unsigned(n);
+<a name="l00486"></a>00486 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00487"></a>00487 data.make_nan();
+<a name="l00488"></a>00488 }
+<a name="l00489"></a>00489 } <span class="keywordflow">else</span> {
+<a name="l00490"></a>00490 <span class="keywordflow">if</span> (std::numeric_limits&lt;Type&gt;::is_signed) data.set_signed(n);
+<a name="l00491"></a>00491 <span class="keywordflow">else</span> data.set_unsigned(n);
+<a name="l00492"></a>00492 }
+<a name="l00493"></a>00493 }
+<a name="l00494"></a>00494
 <a name="l00495"></a>00495 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00496"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005">00496</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">BOOST_XINT_INTEGER_TYPE::operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)<span class="keyword"></span>
-<a name="l00497"></a>00497 <span class="keyword"> const</span>
-<a name="l00498"></a>00498 <span class="keyword"></span>{
-<a name="l00499"></a>00499 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data &lt;&lt; shift);
-<a name="l00500"></a>00500 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00501"></a>00501 }
-<a name="l00502"></a>00502
-<a name="l00511"></a>00511 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00512"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8">00512</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">BOOST_XINT_INTEGER_TYPE::operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)<span class="keyword"></span>
-<a name="l00513"></a>00513 <span class="keyword"> const</span>
-<a name="l00514"></a>00514 <span class="keyword"></span>{
-<a name="l00515"></a>00515 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data &gt;&gt; shift);
-<a name="l00516"></a>00516 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00517"></a>00517 }
-<a name="l00518"></a>00518
-<a name="l00520"></a>00520 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00521"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">00521</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator&lt;&lt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) {
-<a name="l00522"></a>00522 data &lt;&lt;= shift;
-<a name="l00523"></a>00523 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00524"></a>00524 }
-<a name="l00525"></a>00525
-<a name="l00527"></a>00527 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00528"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">00528</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator&gt;&gt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) {
-<a name="l00529"></a>00529 data &gt;&gt;= shift;
-<a name="l00530"></a>00530 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00531"></a>00531 }
-<a name="l00532"></a>00532
-<a name="l00539"></a>00539 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00540"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">00540</a> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::is_odd()<span class="keyword"> const </span>{
-<a name="l00541"></a>00541 <span class="keywordflow">return</span> data.is_odd();
-<a name="l00542"></a>00542 }
-<a name="l00543"></a>00543
-<a name="l00550"></a>00550 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00551"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790">00551</a> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::is_even()<span class="keyword"> const </span>{
-<a name="l00552"></a>00552 <span class="keywordflow">return</span> data.is_even();
-<a name="l00553"></a>00553 }
-<a name="l00554"></a>00554
-<a name="l00566"></a>00566 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00567"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">00567</a> <span class="keywordtype">int</span> BOOST_XINT_INTEGER_TYPE::sign(<span class="keywordtype">bool</span> signed_zero)<span class="keyword"> const </span>{
-<a name="l00568"></a>00568 <span class="keywordflow">return</span> data.sign(signed_zero);
-<a name="l00569"></a>00569 }
-<a name="l00570"></a>00570
-<a name="l00578"></a>00578 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00579"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb">00579</a> <span class="keywordtype">size_t</span> BOOST_XINT_INTEGER_TYPE::hex_digits()<span class="keyword"> const </span>{
-<a name="l00580"></a>00580 <span class="keywordflow">return</span> data.hex_digits();
-<a name="l00581"></a>00581 }
-<a name="l00582"></a>00582
-<a name="l00596"></a>00596 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00597"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">00597</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::pow2(<span class="keywordtype">size_t</span> exponent) {
-<a name="l00598"></a>00598 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l00599"></a>00599 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389" title="Calculate the value of 2e">detail::pow2</a>(r.data, exponent);
-<a name="l00600"></a>00600 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00601"></a>00601 }
-<a name="l00602"></a>00602
-<a name="l00616"></a>00616 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00617"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">00617</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::factorial(<span class="keywordtype">size_t</span> n) {
-<a name="l00618"></a>00618 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l00619"></a>00619 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d" title="Calculate the value of n! ">detail::factorial</a>(r.data, n);
-<a name="l00620"></a>00620 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00621"></a>00621 }
-<a name="l00622"></a>00622
-<a name="l00645"></a>00645 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00646"></a>00646 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
-<a name="l00647"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2">00647</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::random_by_size(Type&amp; gen,
-<a name="l00648"></a>00648 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
-<a name="l00649"></a>00649 can_be_negative)
-<a name="l00650"></a>00650 {
-<a name="l00651"></a>00651 detail::random_generator&lt;Type&gt; rgen(gen);
-<a name="l00652"></a>00652
-<a name="l00653"></a>00653 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l00654"></a>00654 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2" title="Generates a random integer with specific attributes.">detail::random_by_size</a>(r._data(), rgen, size_in_bits, high_bit_on,
-<a name="l00655"></a>00655 low_bit_on, can_be_negative);
-<a name="l00656"></a>00656 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00657"></a>00657 }
-<a name="l00658"></a>00658
-<a name="l00686"></a>00686 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00687"></a>00687 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
-<a name="l00688"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">00688</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::random_prime(Type&amp; gen,
-<a name="l00689"></a>00689 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
-<a name="l00690"></a>00690 {
-<a name="l00691"></a>00691 detail::random_generator&lt;Type&gt; rgen(gen);
-<a name="l00692"></a>00692
-<a name="l00693"></a>00693 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l00694"></a>00694 <a class="code" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02" title="Generate a randomly-generated prime number of a particular bit-size.">detail::random_prime</a>(r._data(), rgen, size_in_bits, callback);
-<a name="l00695"></a>00695 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00696"></a>00696 }
-<a name="l00697"></a>00697
-<a name="l00699"></a>00699 <span class="comment">// Free function template definitions</span>
-<a name="l00705"></a>00705 <span class="comment"></span>
-<a name="l00706"></a>00706
-<a name="l00715"></a>00715 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00716"></a><a class="code" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523">00716</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
-<a name="l00717"></a>00717 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(<a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(n._data()));
-<a name="l00718"></a>00718 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00719"></a>00719 }
-<a name="l00720"></a>00720
-<a name="l00738"></a>00738 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00739"></a><a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4">00739</a> <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::divide_t <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>
-<a name="l00740"></a>00740 dividend, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> divisor)
-<a name="l00741"></a>00741 {
-<a name="l00742"></a>00742 <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::divide_t r;
-<a name="l00743"></a>00743 <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(r.quotient._data(), r.remainder._data(), dividend._data(),
-<a name="l00744"></a>00744 divisor._data());
-<a name="l00745"></a>00745 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00746"></a>00746 }
-<a name="l00748"></a>00748
-<a name="l00754"></a>00754
-<a name="l00755"></a>00755
-<a name="l00766"></a>00766 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00767"></a><a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424">00767</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
-<a name="l00768"></a>00768 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l00769"></a>00769 <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(r._data(), n._data());
-<a name="l00770"></a>00770 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00771"></a>00771 }
-<a name="l00772"></a>00772
-<a name="l00781"></a>00781 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00782"></a><a class="code" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52">00782</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00783"></a>00783 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> e)
-<a name="l00784"></a>00784 {
-<a name="l00785"></a>00785 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l00786"></a>00786 <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(r._data(), n._data(), e._data());
-<a name="l00787"></a>00787 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00788"></a>00788 }
-<a name="l00789"></a>00789
-<a name="l00802"></a>00802 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00803"></a><a class="code" href="namespaceboost_1_1xint.html#a730b703534656d2f4d96484d7bb8cfc6">00803</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
-<a name="l00804"></a>00804 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l00805"></a>00805 <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(r._data(), n._data());
-<a name="l00806"></a>00806 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00807"></a>00807 }
-<a name="l00809"></a>00809
+<a name="l00496"></a>00496 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::
+<a name="l00497"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#abc18fd9b5fce57c1824f3da24eae0d95">00497</a> operator=(<a class="code" href="basic__types__and__includes_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(type) c)
+<a name="l00498"></a>00498 {
+<a name="l00499"></a>00499 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00500"></a>00500 <span class="keywordflow">if</span> (c._data().is_nan()) data.make_nan();
+<a name="l00501"></a>00501 <span class="keywordflow">else</span> {
+<a name="l00502"></a>00502 <span class="keywordflow">try</span> {
+<a name="l00503"></a>00503 data = c.data;
+<a name="l00504"></a>00504 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00505"></a>00505 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00506"></a>00506 data.make_nan();
+<a name="l00507"></a>00507 }
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 } <span class="keywordflow">else</span> {
+<a name="l00510"></a>00510 data = c.data;
+<a name="l00511"></a>00511 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00512"></a>00512 }
+<a name="l00513"></a>00513 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515
+<a name="l00524"></a>00524 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00525"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ad0328a5852615d76af78e99dbde3adc1">00525</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::operator~()<span class="keyword"> const </span>{
+<a name="l00526"></a>00526 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00527"></a>00527 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00528"></a>00528 <span class="keywordflow">try</span> {
+<a name="l00529"></a>00529 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(~data);
+<a name="l00530"></a>00530 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00531"></a>00531 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00532"></a>00532 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00533"></a>00533 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l00534"></a>00534 }
+<a name="l00535"></a>00535 } <span class="keywordflow">else</span> {
+<a name="l00536"></a>00536 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(~data);
+<a name="l00537"></a>00537 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00538"></a>00538 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00539"></a>00539 }
+<a name="l00540"></a>00540 }
+<a name="l00541"></a>00541
+<a name="l00548"></a>00548 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00549"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a567e8464311600fb2b825df15fa286f2">00549</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27" title="Calculate the difference between two integers.">BOOST_XINT_INTEGER_TYPE::operator-</a>()<span class="keyword"> const </span>{
+<a name="l00550"></a>00550 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00551"></a>00551 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00552"></a>00552 <span class="keywordflow">try</span> {
+<a name="l00553"></a>00553 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(*<span class="keyword">this</span>);
+<a name="l00554"></a>00554 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00555"></a>00555 r.data = -r.data;
+<a name="l00556"></a>00556 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00557"></a>00557 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00558"></a>00558 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l00559"></a>00559 }
+<a name="l00560"></a>00560 } <span class="keywordflow">else</span> {
+<a name="l00561"></a>00561 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(*<span class="keyword">this</span>);
+<a name="l00562"></a>00562 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00563"></a>00563 r.data = -r.data;
+<a name="l00564"></a>00564 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00565"></a>00565 }
+<a name="l00566"></a>00566 }
+<a name="l00567"></a>00567
+<a name="l00569"></a>00569 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00570"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aabc91bf8c44e6aff12c0b19097feceba">00570</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator+=(<span class="keyword">const</span>
+<a name="l00571"></a>00571 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
+<a name="l00572"></a>00572 {
+<a name="l00573"></a>00573 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00574"></a>00574 <span class="keywordflow">if</span> (b.is_nan()) data.make_nan();
+<a name="l00575"></a>00575 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00576"></a>00576 <span class="keywordflow">try</span> {
+<a name="l00577"></a>00577 data += b.data;
+<a name="l00578"></a>00578 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00579"></a>00579 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00580"></a>00580 data.make_nan();
+<a name="l00581"></a>00581 }
+<a name="l00582"></a>00582 }
+<a name="l00583"></a>00583 } <span class="keywordflow">else</span> {
+<a name="l00584"></a>00584 data += b.data;
+<a name="l00585"></a>00585 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00586"></a>00586 }
+<a name="l00587"></a>00587 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00588"></a>00588 }
+<a name="l00589"></a>00589
+<a name="l00591"></a>00591 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00592"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a7a9f9597a52bfb7c5f83bf73690a4d0c">00592</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator-=(<span class="keyword">const</span>
+<a name="l00593"></a>00593 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
+<a name="l00594"></a>00594 {
+<a name="l00595"></a>00595 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00596"></a>00596 <span class="keywordflow">if</span> (b.is_nan()) data.make_nan();
+<a name="l00597"></a>00597 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00598"></a>00598 <span class="keywordflow">try</span> {
+<a name="l00599"></a>00599 data -= b.data;
+<a name="l00600"></a>00600 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00601"></a>00601 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00602"></a>00602 data.make_nan();
+<a name="l00603"></a>00603 }
+<a name="l00604"></a>00604 }
+<a name="l00605"></a>00605 } <span class="keywordflow">else</span> {
+<a name="l00606"></a>00606 data -= b.data;
+<a name="l00607"></a>00607 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00608"></a>00608 }
+<a name="l00609"></a>00609 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00613"></a>00613 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00614"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a75277c26ae0bea13bb263b4586d000af">00614</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator*=(<span class="keyword">const</span>
+<a name="l00615"></a>00615 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
+<a name="l00616"></a>00616 {
+<a name="l00617"></a>00617 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00618"></a>00618 <span class="keywordflow">if</span> (b.is_nan()) data.make_nan();
+<a name="l00619"></a>00619 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00620"></a>00620 <span class="keywordflow">try</span> {
+<a name="l00621"></a>00621 data *= b.data;
+<a name="l00622"></a>00622 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00623"></a>00623 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00624"></a>00624 data.make_nan();
+<a name="l00625"></a>00625 }
+<a name="l00626"></a>00626 }
+<a name="l00627"></a>00627 } <span class="keywordflow">else</span> {
+<a name="l00628"></a>00628 data *= b.data;
+<a name="l00629"></a>00629 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00630"></a>00630 }
+<a name="l00631"></a>00631 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00632"></a>00632 }
+<a name="l00633"></a>00633
+<a name="l00635"></a>00635 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00636"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">00636</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator/=(<span class="keyword">const</span>
+<a name="l00637"></a>00637 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
+<a name="l00638"></a>00638 {
+<a name="l00639"></a>00639 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00640"></a>00640 <span class="keywordflow">if</span> (b.is_nan()) data.make_nan();
+<a name="l00641"></a>00641 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00642"></a>00642 <span class="keywordflow">try</span> {
+<a name="l00643"></a>00643 data /= b.data;
+<a name="l00644"></a>00644 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00645"></a>00645 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00646"></a>00646 data.make_nan();
+<a name="l00647"></a>00647 }
+<a name="l00648"></a>00648 }
+<a name="l00649"></a>00649 } <span class="keywordflow">else</span> {
+<a name="l00650"></a>00650 data /= b.data;
+<a name="l00651"></a>00651 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00652"></a>00652 }
+<a name="l00653"></a>00653 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00654"></a>00654 }
+<a name="l00655"></a>00655
+<a name="l00657"></a>00657 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00658"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">00658</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator%=(<span class="keyword">const</span>
+<a name="l00659"></a>00659 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> b)
+<a name="l00660"></a>00660 {
+<a name="l00661"></a>00661 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00662"></a>00662 <span class="keywordflow">if</span> (b.is_nan()) data.make_nan();
+<a name="l00663"></a>00663 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00664"></a>00664 <span class="keywordflow">try</span> {
+<a name="l00665"></a>00665 data %= b.data;
+<a name="l00666"></a>00666 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00667"></a>00667 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00668"></a>00668 data.make_nan();
+<a name="l00669"></a>00669 }
+<a name="l00670"></a>00670 }
+<a name="l00671"></a>00671 } <span class="keywordflow">else</span> {
+<a name="l00672"></a>00672 data %= b.data;
+<a name="l00673"></a>00673 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00674"></a>00674 }
+<a name="l00675"></a>00675 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677
+<a name="l00682"></a>00682 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00683"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a68ed7bd6ea19ffe3e2c84c65a456ff38">00683</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator++() {
+<a name="l00684"></a>00684 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00685"></a>00685 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00686"></a>00686 <span class="keywordflow">try</span> {
+<a name="l00687"></a>00687 ++data;
+<a name="l00688"></a>00688 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00689"></a>00689 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00690"></a>00690 data.make_nan();
+<a name="l00691"></a>00691 }
+<a name="l00692"></a>00692 }
+<a name="l00693"></a>00693 } <span class="keywordflow">else</span> {
+<a name="l00694"></a>00694 ++data;
+<a name="l00695"></a>00695 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00696"></a>00696 }
+<a name="l00697"></a>00697 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00698"></a>00698 }
+<a name="l00699"></a>00699
+<a name="l00704"></a>00704 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00705"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adac8c52f928aa7aeb8556aa3a2ec16a7">00705</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator--() {
+<a name="l00706"></a>00706 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00707"></a>00707 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00708"></a>00708 <span class="keywordflow">try</span> {
+<a name="l00709"></a>00709 --data;
+<a name="l00710"></a>00710 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00711"></a>00711 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00712"></a>00712 data.make_nan();
+<a name="l00713"></a>00713 }
+<a name="l00714"></a>00714 }
+<a name="l00715"></a>00715 } <span class="keywordflow">else</span> {
+<a name="l00716"></a>00716 --data;
+<a name="l00717"></a>00717 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00720"></a>00720 }
+<a name="l00721"></a>00721
+<a name="l00729"></a>00729 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00730"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a86ddf2ee74e7716528baa9a0b7e18449">00730</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::operator++(<span class="keywordtype">int</span>) {
+<a name="l00731"></a>00731 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00732"></a>00732 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00733"></a>00733 <span class="keywordflow">try</span> {
+<a name="l00734"></a>00734 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data++);
+<a name="l00735"></a>00735 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) { r._make_unique(); data.make_unique(); }
+<a name="l00736"></a>00736 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00737"></a>00737 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00738"></a>00738 data.make_nan();
+<a name="l00739"></a>00739 }
+<a name="l00740"></a>00740 } <span class="keywordflow">else</span> {
+<a name="l00741"></a>00741 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data++);
+<a name="l00742"></a>00742 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) { r._make_unique(); data.make_unique(); }
+<a name="l00743"></a>00743 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00744"></a>00744 }
+<a name="l00745"></a>00745 }
+<a name="l00746"></a>00746
+<a name="l00754"></a>00754 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00755"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adab9f000397bd8856f6b73b45e6682c3">00755</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::operator--(<span class="keywordtype">int</span>) {
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00757"></a>00757 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00758"></a>00758 <span class="keywordflow">try</span> {
+<a name="l00759"></a>00759 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data--);
+<a name="l00760"></a>00760 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) { r._make_unique(); data.make_unique(); }
+<a name="l00761"></a>00761 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00762"></a>00762 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00763"></a>00763 data.make_nan();
+<a name="l00764"></a>00764 }
+<a name="l00765"></a>00765 } <span class="keywordflow">else</span> {
+<a name="l00766"></a>00766 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data--);
+<a name="l00767"></a>00767 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) { r._make_unique(); data.make_unique(); }
+<a name="l00768"></a>00768 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00769"></a>00769 }
+<a name="l00770"></a>00770 }
+<a name="l00771"></a>00771
+<a name="l00773"></a>00773 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00774"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a10ef8068734ee6473686db051023e781">00774</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator&amp;=(<span class="keyword">const</span>
+<a name="l00775"></a>00775 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n)
+<a name="l00776"></a>00776 {
+<a name="l00777"></a>00777 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00778"></a>00778 <span class="keywordflow">if</span> (n.is_nan()) data.make_nan();
+<a name="l00779"></a>00779 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00780"></a>00780 <span class="keywordflow">try</span> {
+<a name="l00781"></a>00781 data &amp;= n.data;
+<a name="l00782"></a>00782 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00783"></a>00783 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00784"></a>00784 data.make_nan();
+<a name="l00785"></a>00785 }
+<a name="l00786"></a>00786 }
+<a name="l00787"></a>00787 } <span class="keywordflow">else</span> {
+<a name="l00788"></a>00788 data &amp;= n.data;
+<a name="l00789"></a>00789 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00790"></a>00790 }
+<a name="l00791"></a>00791 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00792"></a>00792 }
+<a name="l00793"></a>00793
+<a name="l00795"></a>00795 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00796"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aefbb50f543ab91bef86e9aabc6e61610">00796</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator|=(<span class="keyword">const</span>
+<a name="l00797"></a>00797 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n)
+<a name="l00798"></a>00798 {
+<a name="l00799"></a>00799 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00800"></a>00800 <span class="keywordflow">if</span> (n.is_nan()) data.make_nan();
+<a name="l00801"></a>00801 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00802"></a>00802 <span class="keywordflow">try</span> {
+<a name="l00803"></a>00803 data |= n.data;
+<a name="l00804"></a>00804 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00805"></a>00805 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00806"></a>00806 data.make_nan();
+<a name="l00807"></a>00807 }
+<a name="l00808"></a>00808 }
+<a name="l00809"></a>00809 } <span class="keywordflow">else</span> {
+<a name="l00810"></a>00810 data |= n.data;
+<a name="l00811"></a>00811 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00812"></a>00812 }
+<a name="l00813"></a>00813 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00814"></a>00814 }
 <a name="l00815"></a>00815
-<a name="l00816"></a>00816
-<a name="l00829"></a>00829 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt;
-<a name="l00830"></a><a class="code" href="namespaceboost_1_1xint.html#a36b0be620a1e56f439dde05db5d0033b">00830</a> Type <a class="code" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">to</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
-<a name="l00831"></a>00831 <span class="keywordflow">return</span> to&lt;Type&gt;(n._data());
-<a name="l00832"></a>00832 }
-<a name="l00833"></a>00833
-<a name="l00853"></a>00853 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00854"></a><a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2">00854</a> std::string <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keywordtype">size_t</span> base = 10, <span class="keywordtype">bool</span>
-<a name="l00855"></a>00855 uppercase = <span class="keyword">false</span>)
-<a name="l00856"></a>00856 {
-<a name="l00857"></a>00857 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(n._data(), base, uppercase);
-<a name="l00858"></a>00858 }
-<a name="l00859"></a>00859
-<a name="l00886"></a>00886 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00887"></a><a class="code" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40">00887</a> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits = 0) {
-<a name="l00888"></a>00888 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(n._data(), bits);
-<a name="l00889"></a>00889 }
-<a name="l00891"></a>00891
-<a name="l00894"></a>00894
-<a name="l00905"></a>00905 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00906"></a><a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba">00906</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00907"></a>00907 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(n._data(), bit);
-<a name="l00908"></a>00908 }
-<a name="l00909"></a>00909
-<a name="l00919"></a>00919 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00920"></a><a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921">00920</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00921"></a>00921 <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(n._data(), bit);
-<a name="l00922"></a>00922 }
-<a name="l00923"></a>00923
-<a name="l00933"></a>00933 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00934"></a><a class="code" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175">00934</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00935"></a>00935 <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(n._data(), bit);
-<a name="l00936"></a>00936 }
-<a name="l00937"></a>00937
-<a name="l00950"></a>00950 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00951"></a><a class="code" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4">00951</a> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero =
-<a name="l00952"></a>00952 0)
-<a name="l00953"></a>00953 {
-<a name="l00954"></a>00954 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(n._data(), return_if_zero);
-<a name="l00955"></a>00955 }
-<a name="l00956"></a>00956
-<a name="l00969"></a>00969 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00970"></a><a class="code" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0">00970</a> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero =
-<a name="l00971"></a>00971 0)
-<a name="l00972"></a>00972 {
-<a name="l00973"></a>00973 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(n._data(), return_if_zero);
-<a name="l00974"></a>00974 }
-<a name="l00976"></a>00976
-<a name="l00985"></a>00985
-<a name="l00986"></a>00986
-<a name="l01001"></a>01001 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01002"></a><a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564">01002</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l01003"></a>01003 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> by, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus)
-<a name="l01004"></a>01004 {
-<a name="l01005"></a>01005 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l01006"></a>01006 <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(r._data(), n._data(), by._data(), modulus._data());
-<a name="l01007"></a>01007 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01008"></a>01008 }
-<a name="l01009"></a>01009
-<a name="l01024"></a>01024 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01025"></a><a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877">01025</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l01026"></a>01026 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus)
-<a name="l01027"></a>01027 {
-<a name="l01028"></a>01028 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l01029"></a>01029 <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(r._data(), n._data(), modulus._data());
-<a name="l01030"></a>01030 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01031"></a>01031 }
-<a name="l01032"></a>01032
-<a name="l01056"></a>01056 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01057"></a><a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0">01057</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l01058"></a>01058 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> exponent, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus,
-<a name="l01059"></a>01059 <span class="keywordtype">bool</span> no_monty = <span class="keyword">false</span>)
-<a name="l01060"></a>01060 {
-<a name="l01061"></a>01061 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l01062"></a>01062 <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(r._data(), n._data(), exponent._data(), modulus._data(), no_monty);
-<a name="l01063"></a>01063 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01064"></a>01064 }
-<a name="l01065"></a>01065
-<a name="l01078"></a>01078 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01079"></a><a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad">01079</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l01080"></a>01080 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus)
-<a name="l01081"></a>01081 {
-<a name="l01082"></a>01082 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l01083"></a>01083 <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(r._data(), n._data(), modulus._data());
-<a name="l01084"></a>01084 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01085"></a>01085 }
-<a name="l01087"></a>01087
-<a name="l01093"></a>01093
-<a name="l01094"></a>01094
-<a name="l01118"></a>01118 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01119"></a><a class="code" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4">01119</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>)
-<a name="l01120"></a>01120 {
-<a name="l01121"></a>01121 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(n._data(), callback);
-<a name="l01122"></a>01122 }
-<a name="l01124"></a>01124
-<a name="l01129"></a>01129
-<a name="l01130"></a><a class="code" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">01130</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01131"></a>01131 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(n1._data(),
-<a name="l01132"></a>01132 n2._data()); }
-<a name="l01133"></a><a class="code" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">01133</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01134"></a>01134 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(n1._data(),
-<a name="l01135"></a>01135 n2._data()); }
-<a name="l01136"></a><a class="code" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">01136</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01137"></a>01137 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(n1._data(),
-<a name="l01138"></a>01138 n2._data()); }
-<a name="l01139"></a><a class="code" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">01139</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01140"></a>01140 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(n1._data(),
-<a name="l01141"></a>01141 n2._data()); }
-<a name="l01142"></a><a class="code" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">01142</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01143"></a>01143 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(n1._data(),
-<a name="l01144"></a>01144 n2._data()); }
-<a name="l01145"></a><a class="code" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">01145</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01146"></a>01146 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(n1._data(),
-<a name="l01147"></a>01147 n2._data()); }
-<a name="l01149"></a>01149
-<a name="l01154"></a>01154
-<a name="l01155"></a>01155
-<a name="l01164"></a>01164 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01165"></a><a class="code" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915">01165</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01166"></a>01166 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
-<a name="l01167"></a>01167 {
-<a name="l01168"></a>01168 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() + n2._data());
-<a name="l01169"></a>01169 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01170"></a>01170 }
-<a name="l01171"></a>01171
-<a name="l01180"></a>01180 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01181"></a><a class="code" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27">01181</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01182"></a>01182 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
-<a name="l01183"></a>01183 {
-<a name="l01184"></a>01184 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() - n2._data());
-<a name="l01185"></a>01185 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01186"></a>01186 }
-<a name="l01187"></a>01187
-<a name="l01200"></a>01200 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01201"></a><a class="code" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455">01201</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">operator*</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01202"></a>01202 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
-<a name="l01203"></a>01203 {
-<a name="l01204"></a>01204 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() * n2._data());
-<a name="l01205"></a>01205 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01206"></a>01206 }
-<a name="l01207"></a>01207
-<a name="l01218"></a>01218 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01219"></a><a class="code" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21">01219</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">operator/</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> dividend, <span class="keyword">const</span>
-<a name="l01220"></a>01220 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> divisor)
-<a name="l01221"></a>01221 {
-<a name="l01222"></a>01222 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(dividend._data() / divisor._data());
-<a name="l01223"></a>01223 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01224"></a>01224 }
-<a name="l01225"></a>01225
-<a name="l01235"></a>01235 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01236"></a><a class="code" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67">01236</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">operator%</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01237"></a>01237 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
-<a name="l01238"></a>01238 {
-<a name="l01239"></a>01239 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() % n2._data());
-<a name="l01240"></a>01240 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01241"></a>01241 }
-<a name="l01242"></a>01242
-<a name="l01252"></a>01252 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01253"></a><a class="code" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3">01253</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01254"></a>01254 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
-<a name="l01255"></a>01255 {
-<a name="l01256"></a>01256 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() &amp; n2._data());
-<a name="l01257"></a>01257 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01258"></a>01258 }
-<a name="l01259"></a>01259
-<a name="l01269"></a>01269 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01270"></a><a class="code" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075">01270</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">operator|</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01271"></a>01271 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
-<a name="l01272"></a>01272 {
-<a name="l01273"></a>01273 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() | n2._data());
-<a name="l01274"></a>01274 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01275"></a>01275 }
-<a name="l01276"></a>01276
-<a name="l01286"></a>01286 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01287"></a><a class="code" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025">01287</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">operator^</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01288"></a>01288 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
-<a name="l01289"></a>01289 {
-<a name="l01290"></a>01290 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() ^ n2._data());
-<a name="l01291"></a>01291 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01292"></a>01292 }
-<a name="l01294"></a>01294
-<a name="l01297"></a>01297
-<a name="l01307"></a>01307 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01308"></a><a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e">01308</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num1, <span class="keyword">const</span>
-<a name="l01309"></a>01309 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num2)
-<a name="l01310"></a>01310 {
-<a name="l01311"></a>01311 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l01312"></a>01312 <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(r._data(), num1._data(), num2._data());
-<a name="l01313"></a>01313 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00817"></a>00817 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00818"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ac70939fc8a6ab9b1dd59694fbcdbd3ae">00818</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator^=(<span class="keyword">const</span>
+<a name="l00819"></a>00819 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n)
+<a name="l00820"></a>00820 {
+<a name="l00821"></a>00821 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00822"></a>00822 <span class="keywordflow">if</span> (n.is_nan()) data.make_nan();
+<a name="l00823"></a>00823 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00824"></a>00824 <span class="keywordflow">try</span> {
+<a name="l00825"></a>00825 data ^= n.data;
+<a name="l00826"></a>00826 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00827"></a>00827 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00828"></a>00828 data.make_nan();
+<a name="l00829"></a>00829 }
+<a name="l00830"></a>00830 }
+<a name="l00831"></a>00831 } <span class="keywordflow">else</span> {
+<a name="l00832"></a>00832 data ^= n.data;
+<a name="l00833"></a>00833 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00834"></a>00834 }
+<a name="l00835"></a>00835 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00836"></a>00836 }
+<a name="l00837"></a>00837
+<a name="l00846"></a>00846 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00847"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#ae328872eb71547090e6259c7af6d9005">00847</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">BOOST_XINT_INTEGER_TYPE::operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift)<span class="keyword"></span>
+<a name="l00848"></a>00848 <span class="keyword"> const</span>
+<a name="l00849"></a>00849 <span class="keyword"></span>{
+<a name="l00850"></a>00850 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00851"></a>00851 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00852"></a>00852 <span class="keywordflow">try</span> {
+<a name="l00853"></a>00853 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data &lt;&lt; shift);
+<a name="l00854"></a>00854 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00855"></a>00855 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00856"></a>00856 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00857"></a>00857 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l00858"></a>00858 }
+<a name="l00859"></a>00859 } <span class="keywordflow">else</span> {
+<a name="l00860"></a>00860 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data &lt;&lt; shift);
+<a name="l00861"></a>00861 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00862"></a>00862 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00863"></a>00863 }
+<a name="l00864"></a>00864 }
+<a name="l00865"></a>00865
+<a name="l00874"></a>00874 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00875"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a62d51331f6ec9b4878c537b7848265d8">00875</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">BOOST_XINT_INTEGER_TYPE::operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift)<span class="keyword"></span>
+<a name="l00876"></a>00876 <span class="keyword"> const</span>
+<a name="l00877"></a>00877 <span class="keyword"></span>{
+<a name="l00878"></a>00878 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00879"></a>00879 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00880"></a>00880 <span class="keywordflow">try</span> {
+<a name="l00881"></a>00881 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data &gt;&gt; shift);
+<a name="l00882"></a>00882 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00883"></a>00883 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00884"></a>00884 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00885"></a>00885 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l00886"></a>00886 }
+<a name="l00887"></a>00887 } <span class="keywordflow">else</span> {
+<a name="l00888"></a>00888 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(data &gt;&gt; shift);
+<a name="l00889"></a>00889 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l00890"></a>00890 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l00891"></a>00891 }
+<a name="l00892"></a>00892 }
+<a name="l00893"></a>00893
+<a name="l00895"></a>00895 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00896"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a75912e8f7238e9db46f53e793be13549">00896</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator&lt;&lt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift) {
+<a name="l00897"></a>00897 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00898"></a>00898 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00899"></a>00899 <span class="keywordflow">try</span> {
+<a name="l00900"></a>00900 data &lt;&lt;= shift;
+<a name="l00901"></a>00901 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00902"></a>00902 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00903"></a>00903 data.make_nan();
+<a name="l00904"></a>00904 }
+<a name="l00905"></a>00905 }
+<a name="l00906"></a>00906 } <span class="keywordflow">else</span> {
+<a name="l00907"></a>00907 data &lt;&lt;= shift;
+<a name="l00908"></a>00908 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00909"></a>00909 }
+<a name="l00910"></a>00910 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00911"></a>00911 }
+<a name="l00912"></a>00912
+<a name="l00914"></a>00914 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00915"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aaf46801d882d2f215b03eab5ec8622dc">00915</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; BOOST_XINT_INTEGER_TYPE::operator&gt;&gt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> shift) {
+<a name="l00916"></a>00916 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00917"></a>00917 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) {
+<a name="l00918"></a>00918 <span class="keywordflow">try</span> {
+<a name="l00919"></a>00919 data &gt;&gt;= shift;
+<a name="l00920"></a>00920 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00921"></a>00921 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00922"></a>00922 data.make_nan();
+<a name="l00923"></a>00923 }
+<a name="l00924"></a>00924 }
+<a name="l00925"></a>00925 } <span class="keywordflow">else</span> {
+<a name="l00926"></a>00926 data &gt;&gt;= shift;
+<a name="l00927"></a>00927 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) data.make_unique();
+<a name="l00928"></a>00928 }
+<a name="l00929"></a>00929 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00930"></a>00930 }
+<a name="l00931"></a>00931
+<a name="l00939"></a>00939 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00940"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a28c1cf2549da47e36ada1e3a2a020654">00940</a> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::is_odd()<span class="keyword"> const </span>{
+<a name="l00941"></a>00941 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00942"></a>00942 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00943"></a>00943 <span class="keywordflow">return</span> data.is_odd();
+<a name="l00944"></a>00944 } <span class="keywordflow">else</span> {
+<a name="l00945"></a>00945 <span class="keywordflow">return</span> data.is_odd();
+<a name="l00946"></a>00946 }
+<a name="l00947"></a>00947 }
+<a name="l00948"></a>00948
+<a name="l00956"></a>00956 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00957"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#af7d57cc73521c4d72bc853435127b790">00957</a> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::is_even()<span class="keyword"> const </span>{
+<a name="l00958"></a>00958 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00959"></a>00959 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00960"></a>00960 <span class="keywordflow">return</span> data.is_even();
+<a name="l00961"></a>00961 } <span class="keywordflow">else</span> {
+<a name="l00962"></a>00962 <span class="keywordflow">return</span> data.is_even();
+<a name="l00963"></a>00963 }
+<a name="l00964"></a>00964 }
+<a name="l00965"></a>00965
+<a name="l00977"></a>00977 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00978"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5">00978</a> <span class="keywordtype">bool</span> BOOST_XINT_INTEGER_TYPE::is_nan()<span class="keyword"> const </span>{
+<a name="l00979"></a>00979 <span class="keywordflow">return</span> data.is_nan();
+<a name="l00980"></a>00980 }
+<a name="l00981"></a>00981
+<a name="l00993"></a>00993 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l00994"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#aa278c48753019fe3deaa623eecdb16b3">00994</a> <span class="keywordtype">int</span> BOOST_XINT_INTEGER_TYPE::sign(<span class="keywordtype">bool</span> signed_zero)<span class="keyword"> const </span>{
+<a name="l00995"></a>00995 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l00996"></a>00996 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> 0;
+<a name="l00997"></a>00997 <span class="keywordflow">try</span> {
+<a name="l00998"></a>00998 <span class="keywordflow">return</span> data.sign(signed_zero);
+<a name="l00999"></a>00999 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01000"></a>01000 <span class="keywordflow">return</span> 0;
+<a name="l01001"></a>01001 }
+<a name="l01002"></a>01002 } <span class="keywordflow">else</span> {
+<a name="l01003"></a>01003 <span class="keywordflow">return</span> data.sign(signed_zero);
+<a name="l01004"></a>01004 }
+<a name="l01005"></a>01005 }
+<a name="l01006"></a>01006
+<a name="l01014"></a>01014 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01015"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a6575f1fd58be6bf73145459b4b46afbb">01015</a> <span class="keywordtype">size_t</span> BOOST_XINT_INTEGER_TYPE::hex_digits()<span class="keyword"> const </span>{
+<a name="l01016"></a>01016 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l01017"></a>01017 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer__t.html#a9afdf728b490f4fea0f6bd4805e96bd5" title="Tests whether the object is a Not-a-Number.">is_nan</a>()) <span class="keywordflow">return</span> 0;
+<a name="l01018"></a>01018 <span class="keywordflow">try</span> {
+<a name="l01019"></a>01019 <span class="keywordflow">return</span> data.hex_digits();
+<a name="l01020"></a>01020 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01021"></a>01021 <span class="keywordflow">return</span> 0;
+<a name="l01022"></a>01022 }
+<a name="l01023"></a>01023 } <span class="keywordflow">else</span> {
+<a name="l01024"></a>01024 <span class="keywordflow">return</span> data.hex_digits();
+<a name="l01025"></a>01025 }
+<a name="l01026"></a>01026 }
+<a name="l01027"></a>01027
+<a name="l01041"></a>01041 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01042"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389">01042</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::pow2(<span class="keywordtype">size_t</span> exponent) {
+<a name="l01043"></a>01043 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l01044"></a>01044 <span class="keywordflow">try</span> {
+<a name="l01045"></a>01045 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l01046"></a>01046 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389" title="Calculate the value of 2e">detail::pow2</a>(r.data, exponent);
+<a name="l01047"></a>01047 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01048"></a>01048 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01049"></a>01049 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01050"></a>01050 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l01051"></a>01051 }
+<a name="l01052"></a>01052 } <span class="keywordflow">else</span> {
+<a name="l01053"></a>01053 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l01054"></a>01054 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389" title="Calculate the value of 2e">detail::pow2</a>(r.data, exponent);
+<a name="l01055"></a>01055 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01056"></a>01056 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01057"></a>01057 }
+<a name="l01058"></a>01058 }
+<a name="l01059"></a>01059
+<a name="l01073"></a>01073 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01074"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d">01074</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::factorial(<span class="keywordtype">size_t</span> n) {
+<a name="l01075"></a>01075 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l01076"></a>01076 <span class="keywordflow">try</span> {
+<a name="l01077"></a>01077 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l01078"></a>01078 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d" title="Calculate the value of n! ">detail::factorial</a>(r.data, n);
+<a name="l01079"></a>01079 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01080"></a>01080 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01081"></a>01081 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01082"></a>01082 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l01083"></a>01083 }
+<a name="l01084"></a>01084 } <span class="keywordflow">else</span> {
+<a name="l01085"></a>01085 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l01086"></a>01086 <a class="code" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d" title="Calculate the value of n! ">detail::factorial</a>(r.data, n);
+<a name="l01087"></a>01087 <span class="keywordflow">if</span> (Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01088"></a>01088 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01089"></a>01089 }
+<a name="l01090"></a>01090 }
+<a name="l01091"></a>01091
+<a name="l01105"></a>01105 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01106"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1">01106</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::nan() {
+<a name="l01107"></a>01107 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l01108"></a>01108 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l01109"></a>01109 r._data().make_nan();
+<a name="l01110"></a>01110 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01111"></a>01111 } <span class="keywordflow">else</span> {
+<a name="l01112"></a>01112 <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="l01113"></a>01113 }
+<a name="l01114"></a>01114 }
+<a name="l01115"></a>01115
+<a name="l01138"></a>01138 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01139"></a>01139 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
+<a name="l01140"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2">01140</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::random_by_size(Type&amp; gen,
+<a name="l01141"></a>01141 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
+<a name="l01142"></a>01142 can_be_negative)
+<a name="l01143"></a>01143 {
+<a name="l01144"></a>01144 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l01145"></a>01145 <span class="keywordflow">try</span> {
+<a name="l01146"></a>01146 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2" title="Generates a random integer with specific attributes.">datatype::random_by_size</a>(gen, size_in_bits, high_bit_on,
+<a name="l01147"></a>01147 low_bit_on, can_be_negative);
+<a name="l01148"></a>01148 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01149"></a>01149 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l01150"></a>01150 }
+<a name="l01151"></a>01151 } <span class="keywordflow">else</span> {
+<a name="l01152"></a>01152 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2" title="Generates a random integer with specific attributes.">datatype::random_by_size</a>(gen, size_in_bits, high_bit_on,
+<a name="l01153"></a>01153 low_bit_on, can_be_negative);
+<a name="l01154"></a>01154 }
+<a name="l01155"></a>01155 }
+<a name="l01156"></a>01156
+<a name="l01184"></a>01184 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01185"></a>01185 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
+<a name="l01186"></a><a class="code" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">01186</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> BOOST_XINT_INTEGER_TYPE::random_prime(Type&amp; gen,
+<a name="l01187"></a>01187 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
+<a name="l01188"></a>01188 {
+<a name="l01189"></a>01189 <span class="keywordflow">if</span> (Nothrow) {
+<a name="l01190"></a>01190 <span class="keywordflow">try</span> {
+<a name="l01191"></a>01191 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02" title="Generate a randomly-generated prime number of a particular bit-size.">datatype::random_prime</a>(gen, size_in_bits, callback);
+<a name="l01192"></a>01192 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01193"></a>01193 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#a49eff434d2a1f0729d7757e6349fd2c1" title="Returns a Not-a-Number value, for types that support it.">nan</a>();
+<a name="l01194"></a>01194 }
+<a name="l01195"></a>01195 } <span class="keywordflow">else</span> {
+<a name="l01196"></a>01196 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02" title="Generate a randomly-generated prime number of a particular bit-size.">datatype::random_prime</a>(gen, size_in_bits, callback);
+<a name="l01197"></a>01197 }
+<a name="l01198"></a>01198 }
+<a name="l01199"></a>01199
+<a name="l01201"></a>01201 <span class="comment">// Free function template definitions</span>
+<a name="l01207"></a>01207 <span class="comment"></span>
+<a name="l01208"></a>01208
+<a name="l01217"></a>01217 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01218"></a><a class="code" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523">01218</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
+<a name="l01219"></a>01219 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01220"></a>01220 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01221"></a>01221 <span class="keywordflow">try</span> {
+<a name="l01222"></a>01222 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n._data().abs());
+<a name="l01223"></a>01223 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01224"></a>01224 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01225"></a>01225 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01226"></a>01226 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01227"></a>01227 }
+<a name="l01228"></a>01228 } <span class="keywordflow">else</span> {
+<a name="l01229"></a>01229 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n._data().abs());
+<a name="l01230"></a>01230 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01231"></a>01231 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01232"></a>01232 }
+<a name="l01233"></a>01233 }
+<a name="l01234"></a>01234
+<a name="l01253"></a>01253 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01254"></a><a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4">01254</a> <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::divide_t <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>
+<a name="l01255"></a>01255 dividend, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> divisor)
+<a name="l01256"></a>01256 {
+<a name="l01257"></a>01257 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01258"></a>01258 <span class="keywordflow">if</span> (dividend.is_nan() || divisor.is_nan()) <span class="keywordflow">return</span> <span class="keyword">typename</span>
+<a name="l01259"></a>01259 BOOST_XINT_INTEGER_TYPE::divide_t(BOOST_XINT_INTEGER_TYPE::nan(),
+<a name="l01260"></a>01260 BOOST_XINT_INTEGER_TYPE::nan());
+<a name="l01261"></a>01261 <span class="keywordflow">try</span> {
+<a name="l01262"></a>01262 <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::datatype::divide_t rr =
+<a name="l01263"></a>01263 <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">detail::divide</a>(dividend._data(), divisor._data());
+<a name="l01264"></a>01264 <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::divide_t r(rr.quotient,
+<a name="l01265"></a>01265 rr.remainder);
+<a name="l01266"></a>01266 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01267"></a>01267 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01268"></a>01268 <span class="keywordflow">return</span> <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::divide_t(
+<a name="l01269"></a>01269 BOOST_XINT_INTEGER_TYPE::nan(), BOOST_XINT_INTEGER_TYPE::nan());
+<a name="l01270"></a>01270 }
+<a name="l01271"></a>01271 } <span class="keywordflow">else</span> {
+<a name="l01272"></a>01272 <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::datatype::divide_t rr =
+<a name="l01273"></a>01273 <a class="code" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4" title="Calculate how many dividends would fit into divisor, with the remainder.">detail::divide</a>(dividend._data(), divisor._data());
+<a name="l01274"></a>01274 <span class="keyword">typename</span> BOOST_XINT_INTEGER_TYPE::divide_t r(rr.quotient, rr.remainder);
+<a name="l01275"></a>01275 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01276"></a>01276 }
+<a name="l01277"></a>01277 }
+<a name="l01279"></a>01279
+<a name="l01285"></a>01285
+<a name="l01286"></a>01286
+<a name="l01298"></a>01298 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01299"></a><a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424">01299</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">square</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
+<a name="l01300"></a>01300 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01301"></a>01301 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> n;
+<a name="l01302"></a>01302 <span class="keywordflow">try</span> {
+<a name="l01303"></a>01303 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">detail::square</a>(n._data());
+<a name="l01304"></a>01304 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01305"></a>01305 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01306"></a>01306 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01307"></a>01307 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01308"></a>01308 }
+<a name="l01309"></a>01309 } <span class="keywordflow">else</span> {
+<a name="l01310"></a>01310 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">detail::square</a>(n._data());
+<a name="l01311"></a>01311 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01312"></a>01312 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01313"></a>01313 }
 <a name="l01314"></a>01314 }
 <a name="l01315"></a>01315
-<a name="l01326"></a>01326 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01327"></a><a class="code" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4">01327</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num1, <span class="keyword">const</span>
-<a name="l01328"></a>01328 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num2)
-<a name="l01329"></a>01329 {
-<a name="l01330"></a>01330 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
-<a name="l01331"></a>01331 <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(r._data(), num1._data(), num2._data());
-<a name="l01332"></a>01332 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01333"></a>01333 }
-<a name="l01334"></a>01334
-<a name="l01347"></a>01347 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01348"></a><a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0">01348</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2,
-<a name="l01349"></a>01349 <span class="keywordtype">bool</span> ignoresign = <span class="keyword">false</span>)
-<a name="l01350"></a>01350 {
-<a name="l01351"></a>01351 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(n1._data(), n2._data(), ignoresign);
-<a name="l01352"></a>01352 }
-<a name="l01353"></a>01353
-<a name="l01369"></a>01369 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01370"></a><a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18">01370</a> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
-<a name="l01371"></a>01371 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(n._data());
-<a name="l01372"></a>01372 }
-<a name="l01374"></a>01374
-<a name="l01376"></a><a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd">01376</a> <span class="preprocessor">#define BOOST_XINT_ANY_COMPARE(rtype, op) \</span>
-<a name="l01377"></a>01377 <span class="preprocessor"> template &lt;class Alloc, bool Threadsafe, bool Secure, typename N&gt; \</span>
-<a name="l01378"></a>01378 <span class="preprocessor"> rtype op(const BOOST_XINT_INTEGER_TYPE n1, const N n2) { \</span>
-<a name="l01379"></a>01379 <span class="preprocessor"> return op(n1, BOOST_XINT_INTEGER_TYPE(n2)); \</span>
-<a name="l01380"></a>01380 <span class="preprocessor"> } \</span>
-<a name="l01381"></a>01381 <span class="preprocessor"> \</span>
-<a name="l01382"></a>01382 <span class="preprocessor"> template &lt;typename N, class Alloc, bool Threadsafe, bool Secure&gt; \</span>
-<a name="l01383"></a>01383 <span class="preprocessor"> rtype op(const N n1, const BOOST_XINT_INTEGER_TYPE n2) { \</span>
-<a name="l01384"></a>01384 <span class="preprocessor"> return op(BOOST_XINT_INTEGER_TYPE(n1), n2); \</span>
-<a name="l01385"></a>01385 <span class="preprocessor"> }</span>
-<a name="l01386"></a>01386 <span class="preprocessor"></span>
-<a name="l01387"></a>01387 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, <span class="keyword">operator</span>&lt;)
-<a name="l01388"></a>01388 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;)
-<a name="l01389"></a>01389 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&lt;=)
-<a name="l01390"></a>01390 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;=)
-<a name="l01391"></a>01391 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator==)
-<a name="l01392"></a>01392 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator!=)
-<a name="l01393"></a>01393 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">int</span>, <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>)
-<a name="l01394"></a>01394
-<a name="l01396"></a><a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090">01396</a> <span class="preprocessor">#define BOOST_XINT_ANY_MATH(op) \</span>
-<a name="l01397"></a>01397 <span class="preprocessor"> template &lt;class Alloc, bool Threadsafe, bool Secure, typename N&gt; \</span>
-<a name="l01398"></a>01398 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE op(const integer_t&lt;Alloc, Threadsafe, \</span>
-<a name="l01399"></a>01399 <span class="preprocessor"> Secure&gt; n1, const N n2) \</span>
-<a name="l01400"></a>01400 <span class="preprocessor"> { \</span>
-<a name="l01401"></a>01401 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE r(op(n1, integer_t&lt;Alloc, Threadsafe, \</span>
-<a name="l01402"></a>01402 <span class="preprocessor"> Secure&gt;(n2))); \</span>
-<a name="l01403"></a>01403 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
-<a name="l01404"></a>01404 <span class="preprocessor"> } \</span>
-<a name="l01405"></a>01405 <span class="preprocessor"> \</span>
-<a name="l01406"></a>01406 <span class="preprocessor"> template &lt;typename N, class Alloc, bool Threadsafe, bool Secure&gt; \</span>
-<a name="l01407"></a>01407 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE op(const N n1, const integer_t&lt;Alloc, Threadsafe, \</span>
-<a name="l01408"></a>01408 <span class="preprocessor"> Secure&gt; n2) \</span>
-<a name="l01409"></a>01409 <span class="preprocessor"> { \</span>
-<a name="l01410"></a>01410 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE r(op(integer_t&lt;Alloc, Threadsafe, Secure&gt;(n1), \</span>
-<a name="l01411"></a>01411 <span class="preprocessor"> n2)); \</span>
-<a name="l01412"></a>01412 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
-<a name="l01413"></a>01413 <span class="preprocessor"> }</span>
-<a name="l01414"></a>01414 <span class="preprocessor"></span>
-<a name="l01415"></a>01415 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>)
-<a name="l01416"></a>01416 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>)
-<a name="l01417"></a>01417 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>)
-<a name="l01418"></a>01418 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>)
-<a name="l01419"></a>01419 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>)
-<a name="l01420"></a>01420 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator+)
-<a name="l01421"></a>01421 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator-)
-<a name="l01422"></a>01422 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator*)
-<a name="l01423"></a>01423 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator/)
-<a name="l01424"></a>01424 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator%)
-<a name="l01425"></a>01425 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator&amp;)
-<a name="l01426"></a>01426 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator|)
-<a name="l01427"></a>01427 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator^)
-<a name="l01428"></a>01428 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>)
-<a name="l01429"></a>01429 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>)
-<a name="l01430"></a>01430
-<a name="l01433"></a>01433 template &lt;typename charT, typename traits, class Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span>
-<a name="l01434"></a><a class="code" href="namespaceboost_1_1xint.html#a06ea2b89f8b6f52b2e89d0b9c51b60c0">01434</a> Secure&gt; inline std::basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(
-<a name="l01435"></a>01435 std::basic_ostream&lt;charT, traits&gt;&amp; out, const <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a>&lt;Alloc, Threadsafe,
-<a name="l01436"></a>01436 Secure&gt; n)
-<a name="l01437"></a>01437 {
-<a name="l01438"></a>01438 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">operator&lt;&lt;</a>(out, n._data());
-<a name="l01439"></a>01439 }
-<a name="l01440"></a>01440
-<a name="l01441"></a>01441 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> charT, <span class="keyword">typename</span> traits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span>
-<a name="l01442"></a><a class="code" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">01442</a> Secure&gt; <span class="keyword">inline</span> std::basic_istream&lt;charT,traits&gt;&amp; <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(
-<a name="l01443"></a>01443 std::basic_istream&lt;charT, traits&gt;&amp; in, <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; n)
-<a name="l01444"></a>01444 {
-<a name="l01445"></a>01445 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(in, n._data());
-<a name="l01446"></a>01446 }
-<a name="l01448"></a>01448
-<a name="l01449"></a>01449 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01450"></a><a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">01450</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; left, <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; right)
-<a name="l01451"></a>01451 {
-<a name="l01452"></a>01452 left._swap(right);
-<a name="l01453"></a>01453 }
-<a name="l01454"></a>01454
-<a name="l01459"></a><a class="code" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">01459</a> <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t&lt;&gt;</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer</a>;
-<a name="l01460"></a>01460
-<a name="l01461"></a>01461 } <span class="comment">// namespace xint</span>
-<a name="l01462"></a>01462 } <span class="comment">// namespace boost</span>
-<a name="l01463"></a>01463
-<a name="l01464"></a>01464 <span class="keyword">namespace </span>std {
-<a name="l01465"></a>01465 <span class="keyword">template</span>&lt;&gt;
-<a name="l01466"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html">01466</a> <span class="keyword">class </span>numeric_limits&lt;boost::xint::<a class="code" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">integer</a>&gt; {
-<a name="l01467"></a>01467 <span class="keyword">public</span>:
-<a name="l01468"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a797b5572e1defb2e54824d8f93757b70">01468</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="l01469"></a>01469
-<a name="l01470"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abe602c2142a3f18efad7ee6165e6ae35">01470</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01471"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a61b48d9ed6de684cd6f848e0c51a8350">01471</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01472"></a>01472
-<a name="l01473"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad2b6d99afd7e533fe7bb39675c50f4d8">01473</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="l01474"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a59c21d55527213fb2638618f986a5a23">01474</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="l01475"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ab805f71787e27a6a760a1158eed67604">01475</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="l01476"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0a0ca82b32be38bd2b1129678c29a367">01476</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="l01477"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af14e06e3d92f0642f1936ed2f789fe62">01477</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="l01478"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a14cba561a014bdaad371f21e8471e9f6">01478</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> radix = 2;
-<a name="l01479"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8cb7f699b54712581184f3486fe23ecd">01479</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01480"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a0cde53b5ca1063e2fbfd9c9e6f0866bc">01480</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01481"></a>01481
-<a name="l01482"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad0d8fd556c393bf63f2525a4a494fcf7">01482</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="l01483"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8b75c7ee1e29fdfc3a8d51386ed4389d">01483</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="l01484"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a552090a8e12558fd5514176fb8b203c3">01484</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="l01485"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#abcd8e2fb1e04a51fc5747603515cf497">01485</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="l01486"></a>01486
-<a name="l01487"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#afc2b5e56fb2057c2459180219491d930">01487</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="l01488"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a4349ec37234b540226385641b57849c4">01488</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="l01489"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa2f2d54b32c5c675a012b64d5b03302">01489</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="l01490"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#af6ad8de5f9785bce47d09baa074f209a">01490</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="l01491"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a16c5bbfdae90e62a46d9d604a615d071">01491</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="l01492"></a>01492
-<a name="l01493"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa26e13fe18d53c4345611e4939c1bd08">01493</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01494"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a7bc02a7f92402e24f127babd46845b38">01494</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01495"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a5b2267da5707a0345f04d962742a4de0">01495</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01496"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa0ce0042cd4a473feaf0efbe3bb6d3d7">01496</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">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="l01497"></a>01497
-<a name="l01498"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aa29c196c9fdae93c3c7ebc2bdcde118e">01498</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="l01499"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#aaa3d9b178e56460ba4701baf6044a6e1">01499</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="l01500"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a88b83cf94dbe0c5d665c0da31384373b">01500</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="l01501"></a>01501
-<a name="l01502"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#ad469dddd16a7ba6fed9e88c969a5faa6">01502</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="l01503"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a6f43a2e1dcba42a7cf73a1a4323ed931">01503</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="l01504"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1integer_01_4.html#a8bb32df27ec29cc90e46adb78df8c4c2">01504</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="l01505"></a>01505 };
-<a name="l01506"></a>01506 } <span class="comment">// namespace std</span>
-<a name="l01507"></a>01507
-<a name="l01508"></a>01508 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l01509"></a>01509 <span class="preprocessor"></span> <span class="comment">// Return the warning setting to its original value.</span>
-<a name="l01510"></a>01510 <span class="preprocessor"> #pragma warning(pop)</span>
-<a name="l01511"></a>01511 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l01512"></a>01512 <span class="preprocessor"></span>
-<a name="l01513"></a>01513 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_INTEGER_HPP</span>
+<a name="l01324"></a>01324 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01325"></a><a class="code" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52">01325</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52" title="Calculate the value of ne">pow</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
+<a name="l01326"></a>01326 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> e)
+<a name="l01327"></a>01327 {
+<a name="l01328"></a>01328 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01329"></a>01329 <span class="keywordflow">if</span> (n.is_nan() || e.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01330"></a>01330 <span class="keywordflow">try</span> {
+<a name="l01331"></a>01331 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l01332"></a>01332 <a class="code" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52" title="Calculate the value of ne">pow</a>(r._data(), n._data(), e._data());
+<a name="l01333"></a>01333 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01334"></a>01334 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01335"></a>01335 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01336"></a>01336 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01337"></a>01337 }
+<a name="l01338"></a>01338 } <span class="keywordflow">else</span> {
+<a name="l01339"></a>01339 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l01340"></a>01340 <a class="code" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52" title="Calculate the value of ne">pow</a>(r._data(), n._data(), e._data());
+<a name="l01341"></a>01341 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01342"></a>01342 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01343"></a>01343 }
+<a name="l01344"></a>01344 }
+<a name="l01345"></a>01345
+<a name="l01358"></a>01358 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01359"></a><a class="code" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2">01359</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2" title="Calculate the square root of an integer.">square_root</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
+<a name="l01360"></a>01360 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01361"></a>01361 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> n;
+<a name="l01362"></a>01362 <span class="keywordflow">try</span> {
+<a name="l01363"></a>01363 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2" title="Calculate the square root of an integer.">square_root</a>(n._data());
+<a name="l01364"></a>01364 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01365"></a>01365 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01366"></a>01366 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01367"></a>01367 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01368"></a>01368 }
+<a name="l01369"></a>01369 } <span class="keywordflow">else</span> {
+<a name="l01370"></a>01370 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2" title="Calculate the square root of an integer.">square_root</a>(n._data());
+<a name="l01371"></a>01371 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01372"></a>01372 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01373"></a>01373 }
+<a name="l01374"></a>01374 }
+<a name="l01376"></a>01376
+<a name="l01382"></a>01382
+<a name="l01383"></a>01383
+<a name="l01396"></a>01396 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> A0, <span class="keyword">class</span> A1, <span class="keyword">class</span> A2, <span class="keyword">class</span> A3, <span class="keyword">class</span> A4&gt;
+<a name="l01397"></a><a class="code" href="namespaceboost_1_1xint.html#afd9d2c7743d11e6959d6cda44c8abf69">01397</a> T <a class="code" href="namespaceboost_1_1xint.html#afd9d2c7743d11e6959d6cda44c8abf69" title="Converts an xint::integer type to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
+<a name="l01398"></a>01398 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01399"></a>01399 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> T(0);
+<a name="l01400"></a>01400 <span class="keywordflow">try</span> {
+<a name="l01401"></a>01401 <span class="keywordflow">return</span> to&lt;T&gt;(n._data());
+<a name="l01402"></a>01402 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01403"></a>01403 <span class="keywordflow">return</span> T(0);
+<a name="l01404"></a>01404 }
+<a name="l01405"></a>01405 } <span class="keywordflow">else</span> {
+<a name="l01406"></a>01406 <span class="keywordflow">return</span> to&lt;T&gt;(n._data());
+<a name="l01407"></a>01407 }
+<a name="l01408"></a>01408 }
+<a name="l01409"></a>01409
+<a name="l01430"></a>01430 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01431"></a><a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2">01431</a> std::string <a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keywordtype">size_t</span> base = 10, <span class="keywordtype">bool</span>
+<a name="l01432"></a>01432 uppercase = <span class="keyword">false</span>)
+<a name="l01433"></a>01433 {
+<a name="l01434"></a>01434 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01435"></a>01435 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>;
+<a name="l01436"></a>01436 <span class="keywordflow">try</span> {
+<a name="l01437"></a>01437 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2" title="Creates a string representation of the specified integer.">to_string</a>(n._data(), base, uppercase);
+<a name="l01438"></a>01438 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01439"></a>01439 <span class="keywordflow">return</span> std::string();
+<a name="l01440"></a>01440 }
+<a name="l01441"></a>01441 } <span class="keywordflow">else</span> {
+<a name="l01442"></a>01442 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2" title="Creates a string representation of the specified integer.">to_string</a>(n._data(), base, uppercase);
+<a name="l01443"></a>01443 }
+<a name="l01444"></a>01444 }
+<a name="l01445"></a>01445
+<a name="l01473"></a>01473 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01474"></a><a class="code" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40">01474</a> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> <a class="code" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40" title="Creates a binary representation of an integer.">to_binary</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> bits = 0) {
+<a name="l01475"></a>01475 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01476"></a>01476 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a>();
+<a name="l01477"></a>01477 <span class="keywordflow">try</span> {
+<a name="l01478"></a>01478 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40" title="Creates a binary representation of an integer.">to_binary</a>(n._data(), bits);
+<a name="l01479"></a>01479 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01480"></a>01480 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a>();
+<a name="l01481"></a>01481 }
+<a name="l01482"></a>01482 } <span class="keywordflow">else</span> {
+<a name="l01483"></a>01483 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40" title="Creates a binary representation of an integer.">to_binary</a>(n._data(), bits);
+<a name="l01484"></a>01484 }
+<a name="l01485"></a>01485 }
+<a name="l01487"></a>01487
+<a name="l01490"></a>01490
+<a name="l01501"></a>01501 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01502"></a><a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba">01502</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> bit) {
+<a name="l01503"></a>01503 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01504"></a>01504 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01505"></a>01505 <span class="keywordflow">try</span> {
+<a name="l01506"></a>01506 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba" title="Queries the value of a particular bit in an integer.">getbit</a>(n._data(), bit);
+<a name="l01507"></a>01507 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01508"></a>01508 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01509"></a>01509 }
+<a name="l01510"></a>01510 } <span class="keywordflow">else</span> {
+<a name="l01511"></a>01511 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba" title="Queries the value of a particular bit in an integer.">getbit</a>(n._data(), bit);
+<a name="l01512"></a>01512 }
+<a name="l01513"></a>01513 }
+<a name="l01514"></a>01514
+<a name="l01524"></a>01524 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01525"></a><a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921">01525</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> bit) {
+<a name="l01526"></a>01526 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01527"></a>01527 <span class="keywordflow">if</span> (!n.is_nan()) {
+<a name="l01528"></a>01528 <span class="keywordflow">try</span> {
+<a name="l01529"></a>01529 <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(n._data(), bit);
+<a name="l01530"></a>01530 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01531"></a>01531 <span class="comment">// Do nothing.</span>
+<a name="l01532"></a>01532 }
+<a name="l01533"></a>01533 }
+<a name="l01534"></a>01534 } <span class="keywordflow">else</span> {
+<a name="l01535"></a>01535 <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(n._data(), bit);
+<a name="l01536"></a>01536 }
+<a name="l01537"></a>01537 }
+<a name="l01538"></a>01538
+<a name="l01548"></a>01548 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01549"></a><a class="code" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175">01549</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> bit) {
+<a name="l01550"></a>01550 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01551"></a>01551 <span class="keywordflow">if</span> (!n.is_nan()) {
+<a name="l01552"></a>01552 <span class="keywordflow">try</span> {
+<a name="l01553"></a>01553 <a class="code" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175" title="Sets a specific bit in an integer to zero.">clearbit</a>(n._data(), bit);
+<a name="l01554"></a>01554 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01555"></a>01555 <span class="comment">// Do nothing.</span>
+<a name="l01556"></a>01556 }
+<a name="l01557"></a>01557 }
+<a name="l01558"></a>01558 } <span class="keywordflow">else</span> {
+<a name="l01559"></a>01559 <a class="code" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175" title="Sets a specific bit in an integer to zero.">clearbit</a>(n._data(), bit);
+<a name="l01560"></a>01560 }
+<a name="l01561"></a>01561 }
+<a name="l01562"></a>01562
+<a name="l01576"></a>01576 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01577"></a><a class="code" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4">01577</a> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4" 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="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> return_if_zero =
+<a name="l01578"></a>01578 0)
+<a name="l01579"></a>01579 {
+<a name="l01580"></a>01580 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01581"></a>01581 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> return_if_zero;
+<a name="l01582"></a>01582 <span class="keywordflow">try</span> {
+<a name="l01583"></a>01583 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(n._data(), return_if_zero);
+<a name="l01584"></a>01584 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01585"></a>01585 <span class="keywordflow">return</span> return_if_zero;
+<a name="l01586"></a>01586 }
+<a name="l01587"></a>01587 } <span class="keywordflow">else</span> {
+<a name="l01588"></a>01588 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(n._data(), return_if_zero);
+<a name="l01589"></a>01589 }
+<a name="l01590"></a>01590 }
+<a name="l01591"></a>01591
+<a name="l01605"></a>01605 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01606"></a><a class="code" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0">01606</a> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0" 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="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> return_if_zero =
+<a name="l01607"></a>01607 0)
+<a name="l01608"></a>01608 {
+<a name="l01609"></a>01609 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01610"></a>01610 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> return_if_zero;
+<a name="l01611"></a>01611 <span class="keywordflow">try</span> {
+<a name="l01612"></a>01612 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(n._data(), return_if_zero);
+<a name="l01613"></a>01613 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01614"></a>01614 <span class="keywordflow">return</span> return_if_zero;
+<a name="l01615"></a>01615 }
+<a name="l01616"></a>01616 } <span class="keywordflow">else</span> {
+<a name="l01617"></a>01617 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(n._data(), return_if_zero);
+<a name="l01618"></a>01618 }
+<a name="l01619"></a>01619 }
+<a name="l01621"></a>01621
+<a name="l01630"></a>01630
+<a name="l01631"></a>01631
+<a name="l01646"></a>01646 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01647"></a><a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564">01647</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
+<a name="l01648"></a>01648 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> by, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus)
+<a name="l01649"></a>01649 {
+<a name="l01650"></a>01650 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01651"></a>01651 <span class="keywordflow">if</span> (n.is_nan() || by.is_nan() || modulus.is_nan()) <span class="keywordflow">return</span>
+<a name="l01652"></a>01652 BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01653"></a>01653 <span class="keywordflow">try</span> {
+<a name="l01654"></a>01654 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564" title="Get the modular product of two integers.">mulmod</a>(n._data(), by._data(),
+<a name="l01655"></a>01655 modulus._data());
+<a name="l01656"></a>01656 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01657"></a>01657 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01658"></a>01658 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01659"></a>01659 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01660"></a>01660 }
+<a name="l01661"></a>01661 } <span class="keywordflow">else</span> {
+<a name="l01662"></a>01662 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564" title="Get the modular product of two integers.">mulmod</a>(n._data(), by._data(),
+<a name="l01663"></a>01663 modulus._data());
+<a name="l01664"></a>01664 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01665"></a>01665 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01666"></a>01666 }
+<a name="l01667"></a>01667 }
+<a name="l01668"></a>01668
+<a name="l01683"></a>01683 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01684"></a><a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877">01684</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
+<a name="l01685"></a>01685 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus)
+<a name="l01686"></a>01686 {
+<a name="l01687"></a>01687 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01688"></a>01688 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> n;
+<a name="l01689"></a>01689 <span class="keywordflow">try</span> {
+<a name="l01690"></a>01690 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877" title="Get the modular product of squaring an integer.">sqrmod</a>(n._data(), modulus._data());
+<a name="l01691"></a>01691 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01692"></a>01692 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01693"></a>01693 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01694"></a>01694 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01695"></a>01695 }
+<a name="l01696"></a>01696 } <span class="keywordflow">else</span> {
+<a name="l01697"></a>01697 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877" title="Get the modular product of squaring an integer.">sqrmod</a>(n._data(), modulus._data());
+<a name="l01698"></a>01698 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01699"></a>01699 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01700"></a>01700 }
+<a name="l01701"></a>01701 }
+<a name="l01702"></a>01702
+<a name="l01726"></a>01726 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01727"></a><a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0">01727</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
+<a name="l01728"></a>01728 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> exponent, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus,
+<a name="l01729"></a>01729 <span class="keywordtype">bool</span> no_monty = <span class="keyword">false</span>)
+<a name="l01730"></a>01730 {
+<a name="l01731"></a>01731 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01732"></a>01732 <span class="keywordflow">if</span> (n.is_nan() || exponent.is_nan() || modulus.is_nan()) <span class="keywordflow">return</span>
+<a name="l01733"></a>01733 BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01734"></a>01734 <span class="keywordflow">try</span> {
+<a name="l01735"></a>01735 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(n._data(), exponent._data(),
+<a name="l01736"></a>01736 modulus._data(), no_monty);
+<a name="l01737"></a>01737 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01738"></a>01738 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01739"></a>01739 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01740"></a>01740 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01741"></a>01741 }
+<a name="l01742"></a>01742 } <span class="keywordflow">else</span> {
+<a name="l01743"></a>01743 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(n._data(), exponent._data(),
+<a name="l01744"></a>01744 modulus._data(), no_monty);
+<a name="l01745"></a>01745 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01746"></a>01746 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01747"></a>01747 }
+<a name="l01748"></a>01748 }
+<a name="l01749"></a>01749
+<a name="l01762"></a>01762 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01763"></a><a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad">01763</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad" 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="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <span class="keyword">const</span>
+<a name="l01764"></a>01764 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> modulus)
+<a name="l01765"></a>01765 {
+<a name="l01766"></a>01766 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01767"></a>01767 <span class="keywordflow">if</span> (n.is_nan() || modulus.is_nan()) <span class="keywordflow">return</span>
+<a name="l01768"></a>01768 BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01769"></a>01769 <span class="keywordflow">try</span> {
+<a name="l01770"></a>01770 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(n._data(), modulus._data());
+<a name="l01771"></a>01771 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01772"></a>01772 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01773"></a>01773 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01774"></a>01774 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01775"></a>01775 }
+<a name="l01776"></a>01776 } <span class="keywordflow">else</span> {
+<a name="l01777"></a>01777 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r = <a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(n._data(), modulus._data());
+<a name="l01778"></a>01778 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l01779"></a>01779 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01780"></a>01780 }
+<a name="l01781"></a>01781 }
+<a name="l01783"></a>01783
+<a name="l01789"></a>01789
+<a name="l01790"></a>01790
+<a name="l01815"></a>01815 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01816"></a><a class="code" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4">01816</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>)
+<a name="l01817"></a>01817 {
+<a name="l01818"></a>01818 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01819"></a>01819 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> -2;
+<a name="l01820"></a>01820 <span class="keywordflow">try</span> {
+<a name="l01821"></a>01821 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4" title="Tests an integer for primality.">is_prime</a>(n._data(), callback);
+<a name="l01822"></a>01822 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01823"></a>01823 <span class="keywordflow">return</span> -2;
+<a name="l01824"></a>01824 }
+<a name="l01825"></a>01825 } <span class="keywordflow">else</span> {
+<a name="l01826"></a>01826 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4" title="Tests an integer for primality.">is_prime</a>(n._data(), callback);
+<a name="l01827"></a>01827 }
+<a name="l01828"></a>01828 }
+<a name="l01830"></a>01830
+<a name="l01838"></a>01838
+<a name="l01839"></a><a class="code" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">01839</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01840"></a>01840 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01841"></a>01841 {
+<a name="l01842"></a>01842 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01843"></a>01843 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01844"></a>01844 <span class="keywordflow">try</span> {
+<a name="l01845"></a>01845 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">operator&lt;</a>(n1._data(), n2._data());
+<a name="l01846"></a>01846 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01847"></a>01847 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01848"></a>01848 }
+<a name="l01849"></a>01849 } <span class="keywordflow">else</span> {
+<a name="l01850"></a>01850 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">operator&lt;</a>(n1._data(), n2._data());
+<a name="l01851"></a>01851 }
+<a name="l01852"></a>01852 }
+<a name="l01853"></a>01853
+<a name="l01854"></a><a class="code" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">01854</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01855"></a>01855 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01856"></a>01856 {
+<a name="l01857"></a>01857 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01858"></a>01858 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01859"></a>01859 <span class="keywordflow">try</span> {
+<a name="l01860"></a>01860 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">operator&gt;</a>(n1._data(), n2._data());
+<a name="l01861"></a>01861 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01862"></a>01862 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01863"></a>01863 }
+<a name="l01864"></a>01864 } <span class="keywordflow">else</span> {
+<a name="l01865"></a>01865 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">operator&gt;</a>(n1._data(), n2._data());
+<a name="l01866"></a>01866 }
+<a name="l01867"></a>01867 }
+<a name="l01868"></a>01868
+<a name="l01869"></a><a class="code" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">01869</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01870"></a>01870 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01871"></a>01871 {
+<a name="l01872"></a>01872 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01873"></a>01873 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01874"></a>01874 <span class="keywordflow">try</span> {
+<a name="l01875"></a>01875 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">operator&lt;=</a>(n1._data(), n2._data());
+<a name="l01876"></a>01876 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01877"></a>01877 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01878"></a>01878 }
+<a name="l01879"></a>01879 } <span class="keywordflow">else</span> {
+<a name="l01880"></a>01880 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">operator&lt;=</a>(n1._data(), n2._data());
+<a name="l01881"></a>01881 }
+<a name="l01882"></a>01882 }
+<a name="l01883"></a>01883
+<a name="l01884"></a><a class="code" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">01884</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01885"></a>01885 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01886"></a>01886 {
+<a name="l01887"></a>01887 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01888"></a>01888 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01889"></a>01889 <span class="keywordflow">try</span> {
+<a name="l01890"></a>01890 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">operator&gt;=</a>(n1._data(), n2._data());
+<a name="l01891"></a>01891 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01892"></a>01892 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01893"></a>01893 }
+<a name="l01894"></a>01894 } <span class="keywordflow">else</span> {
+<a name="l01895"></a>01895 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">operator&gt;=</a>(n1._data(), n2._data());
+<a name="l01896"></a>01896 }
+<a name="l01897"></a>01897 }
+<a name="l01898"></a>01898
+<a name="l01899"></a><a class="code" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">01899</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">operator==</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01900"></a>01900 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01901"></a>01901 {
+<a name="l01902"></a>01902 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01903"></a>01903 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01904"></a>01904 <span class="keywordflow">try</span> {
+<a name="l01905"></a>01905 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">operator==</a>(n1._data(), n2._data());
+<a name="l01906"></a>01906 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01907"></a>01907 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01908"></a>01908 }
+<a name="l01909"></a>01909 } <span class="keywordflow">else</span> {
+<a name="l01910"></a>01910 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">operator==</a>(n1._data(), n2._data());
+<a name="l01911"></a>01911 }
+<a name="l01912"></a>01912 }
+<a name="l01913"></a>01913
+<a name="l01914"></a><a class="code" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">01914</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">operator!=</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01915"></a>01915 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01916"></a>01916 {
+<a name="l01917"></a>01917 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01918"></a>01918 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01919"></a>01919 <span class="keywordflow">try</span> {
+<a name="l01920"></a>01920 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">operator!=</a>(n1._data(), n2._data());
+<a name="l01921"></a>01921 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01922"></a>01922 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01923"></a>01923 }
+<a name="l01924"></a>01924 } <span class="keywordflow">else</span> {
+<a name="l01925"></a>01925 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">operator!=</a>(n1._data(), n2._data());
+<a name="l01926"></a>01926 }
+<a name="l01927"></a>01927 }
+<a name="l01929"></a>01929
+<a name="l01934"></a>01934
+<a name="l01935"></a>01935
+<a name="l01944"></a>01944 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01945"></a><a class="code" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915">01945</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915" title="Calculate the sum of two integers.">operator+</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01946"></a>01946 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01947"></a>01947 {
+<a name="l01948"></a>01948 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01949"></a>01949 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01950"></a>01950 <span class="keywordflow">try</span> {
+<a name="l01951"></a>01951 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() + n2._data());
+<a name="l01952"></a>01952 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01953"></a>01953 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01954"></a>01954 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01955"></a>01955 }
+<a name="l01956"></a>01956 } <span class="keywordflow">else</span> {
+<a name="l01957"></a>01957 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() + n2._data());
+<a name="l01958"></a>01958 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01959"></a>01959 }
+<a name="l01960"></a>01960 }
+<a name="l01961"></a>01961
+<a name="l01970"></a>01970 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l01971"></a><a class="code" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27">01971</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27" title="Calculate the difference between two integers.">operator-</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l01972"></a>01972 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l01973"></a>01973 {
+<a name="l01974"></a>01974 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l01975"></a>01975 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01976"></a>01976 <span class="keywordflow">try</span> {
+<a name="l01977"></a>01977 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() - n2._data());
+<a name="l01978"></a>01978 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01979"></a>01979 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l01980"></a>01980 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l01981"></a>01981 }
+<a name="l01982"></a>01982 } <span class="keywordflow">else</span> {
+<a name="l01983"></a>01983 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() - n2._data());
+<a name="l01984"></a>01984 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l01985"></a>01985 }
+<a name="l01986"></a>01986 }
+<a name="l01987"></a>01987
+<a name="l02000"></a>02000 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02001"></a><a class="code" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455">02001</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455" title="Calculate the product of two integers.">operator*</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l02002"></a>02002 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l02003"></a>02003 {
+<a name="l02004"></a>02004 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02005"></a>02005 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02006"></a>02006 <span class="keywordflow">try</span> {
+<a name="l02007"></a>02007 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() * n2._data());
+<a name="l02008"></a>02008 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02009"></a>02009 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02010"></a>02010 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02011"></a>02011 }
+<a name="l02012"></a>02012 } <span class="keywordflow">else</span> {
+<a name="l02013"></a>02013 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() * n2._data());
+<a name="l02014"></a>02014 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02015"></a>02015 }
+<a name="l02016"></a>02016 }
+<a name="l02017"></a>02017
+<a name="l02028"></a>02028 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02029"></a><a class="code" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21">02029</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21" title="Calculate how many dividends would fit into divisor.">operator/</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> dividend, <span class="keyword">const</span>
+<a name="l02030"></a>02030 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> divisor)
+<a name="l02031"></a>02031 {
+<a name="l02032"></a>02032 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02033"></a>02033 <span class="keywordflow">if</span> (dividend.is_nan() || divisor.is_nan()) <span class="keywordflow">return</span>
+<a name="l02034"></a>02034 BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02035"></a>02035 <span class="keywordflow">try</span> {
+<a name="l02036"></a>02036 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(dividend._data() / divisor._data());
+<a name="l02037"></a>02037 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02038"></a>02038 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02039"></a>02039 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02040"></a>02040 }
+<a name="l02041"></a>02041 } <span class="keywordflow">else</span> {
+<a name="l02042"></a>02042 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(dividend._data() / divisor._data());
+<a name="l02043"></a>02043 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02044"></a>02044 }
+<a name="l02045"></a>02045 }
+<a name="l02046"></a>02046
+<a name="l02056"></a>02056 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02057"></a><a class="code" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67">02057</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l02058"></a>02058 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l02059"></a>02059 {
+<a name="l02060"></a>02060 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02061"></a>02061 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02062"></a>02062 <span class="keywordflow">try</span> {
+<a name="l02063"></a>02063 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() % n2._data());
+<a name="l02064"></a>02064 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02065"></a>02065 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02066"></a>02066 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02067"></a>02067 }
+<a name="l02068"></a>02068 } <span class="keywordflow">else</span> {
+<a name="l02069"></a>02069 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() % n2._data());
+<a name="l02070"></a>02070 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02071"></a>02071 }
+<a name="l02072"></a>02072 }
+<a name="l02073"></a>02073
+<a name="l02083"></a>02083 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02084"></a><a class="code" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3">02084</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3" title="Combine two integers using a bitwise AND operation.">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l02085"></a>02085 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l02086"></a>02086 {
+<a name="l02087"></a>02087 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02088"></a>02088 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02089"></a>02089 <span class="keywordflow">try</span> {
+<a name="l02090"></a>02090 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() &amp; n2._data());
+<a name="l02091"></a>02091 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02092"></a>02092 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02093"></a>02093 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02094"></a>02094 }
+<a name="l02095"></a>02095 } <span class="keywordflow">else</span> {
+<a name="l02096"></a>02096 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() &amp; n2._data());
+<a name="l02097"></a>02097 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02098"></a>02098 }
+<a name="l02099"></a>02099 }
+<a name="l02100"></a>02100
+<a name="l02110"></a>02110 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02111"></a><a class="code" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075">02111</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075" title="Combine two integers using a bitwise OR operation.">operator|</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l02112"></a>02112 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l02113"></a>02113 {
+<a name="l02114"></a>02114 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02115"></a>02115 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02116"></a>02116 <span class="keywordflow">try</span> {
+<a name="l02117"></a>02117 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() | n2._data());
+<a name="l02118"></a>02118 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02119"></a>02119 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02120"></a>02120 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02121"></a>02121 }
+<a name="l02122"></a>02122 } <span class="keywordflow">else</span> {
+<a name="l02123"></a>02123 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() | n2._data());
+<a name="l02124"></a>02124 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02125"></a>02125 }
+<a name="l02126"></a>02126 }
+<a name="l02127"></a>02127
+<a name="l02137"></a>02137 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02138"></a><a class="code" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025">02138</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025" title="Combine two integers using a bitwise XOR operation.">operator^</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span>
+<a name="l02139"></a>02139 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2)
+<a name="l02140"></a>02140 {
+<a name="l02141"></a>02141 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02142"></a>02142 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02143"></a>02143 <span class="keywordflow">try</span> {
+<a name="l02144"></a>02144 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() ^ n2._data());
+<a name="l02145"></a>02145 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02146"></a>02146 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02147"></a>02147 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02148"></a>02148 }
+<a name="l02149"></a>02149 } <span class="keywordflow">else</span> {
+<a name="l02150"></a>02150 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r(n1._data() ^ n2._data());
+<a name="l02151"></a>02151 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02152"></a>02152 }
+<a name="l02153"></a>02153 }
+<a name="l02155"></a>02155
+<a name="l02158"></a>02158
+<a name="l02168"></a>02168 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02169"></a><a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e">02169</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num1, <span class="keyword">const</span>
+<a name="l02170"></a>02170 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num2)
+<a name="l02171"></a>02171 {
+<a name="l02172"></a>02172 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02173"></a>02173 <span class="keywordflow">if</span> (num1.is_nan() || num2.is_nan()) <span class="keywordflow">return</span>
+<a name="l02174"></a>02174 BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02175"></a>02175 <span class="keywordflow">try</span> {
+<a name="l02176"></a>02176 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l02177"></a>02177 <a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(r._data(), num1._data(), num2._data());
+<a name="l02178"></a>02178 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l02179"></a>02179 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02180"></a>02180 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02181"></a>02181 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02182"></a>02182 }
+<a name="l02183"></a>02183 } <span class="keywordflow">else</span> {
+<a name="l02184"></a>02184 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l02185"></a>02185 <a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(r._data(), num1._data(), num2._data());
+<a name="l02186"></a>02186 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l02187"></a>02187 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02188"></a>02188 }
+<a name="l02189"></a>02189 }
+<a name="l02190"></a>02190
+<a name="l02201"></a>02201 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02202"></a><a class="code" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4">02202</a> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num1, <span class="keyword">const</span>
+<a name="l02203"></a>02203 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> num2)
+<a name="l02204"></a>02204 {
+<a name="l02205"></a>02205 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02206"></a>02206 <span class="keywordflow">if</span> (num1.is_nan() || num2.is_nan()) <span class="keywordflow">return</span>
+<a name="l02207"></a>02207 BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02208"></a>02208 <span class="keywordflow">try</span> {
+<a name="l02209"></a>02209 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l02210"></a>02210 <a class="code" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4" title="Calculate the Least Common Multiple of two integers.">lcm</a>(r._data(), num1._data(), num2._data());
+<a name="l02211"></a>02211 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l02212"></a>02212 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02213"></a>02213 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02214"></a>02214 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPE::nan();
+<a name="l02215"></a>02215 }
+<a name="l02216"></a>02216 } <span class="keywordflow">else</span> {
+<a name="l02217"></a>02217 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> r;
+<a name="l02218"></a>02218 <a class="code" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4" title="Calculate the Least Common Multiple of two integers.">lcm</a>(r._data(), num1._data(), num2._data());
+<a name="l02219"></a>02219 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Threadsafe == <span class="keyword">true</span>) r._make_unique();
+<a name="l02220"></a>02220 <span class="keywordflow">return</span> <a class="code" href="basic__types__and__includes_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
+<a name="l02221"></a>02221 }
+<a name="l02222"></a>02222 }
+<a name="l02223"></a>02223
+<a name="l02236"></a>02236 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02237"></a><a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0">02237</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n1, <span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n2,
+<a name="l02238"></a>02238 <span class="keywordtype">bool</span> ignoresign = <span class="keyword">false</span>)
+<a name="l02239"></a>02239 {
+<a name="l02240"></a>02240 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02241"></a>02241 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> 2;
+<a name="l02242"></a>02242 <span class="keywordflow">try</span> {
+<a name="l02243"></a>02243 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(n1._data(), n2._data(), ignoresign);
+<a name="l02244"></a>02244 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02245"></a>02245 <span class="keywordflow">return</span> 2;
+<a name="l02246"></a>02246 }
+<a name="l02247"></a>02247 } <span class="keywordflow">else</span> {
+<a name="l02248"></a>02248 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>(n1._data(), n2._data(), ignoresign);
+<a name="l02249"></a>02249 }
+<a name="l02250"></a>02250 }
+<a name="l02251"></a>02251
+<a name="l02268"></a>02268 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02269"></a><a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18">02269</a> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n) {
+<a name="l02270"></a>02270 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow) {
+<a name="l02271"></a>02271 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> 0;
+<a name="l02272"></a>02272 <span class="keywordflow">try</span> {
+<a name="l02273"></a>02273 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(n._data());
+<a name="l02274"></a>02274 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l02275"></a>02275 <span class="keywordflow">return</span> 0;
+<a name="l02276"></a>02276 }
+<a name="l02277"></a>02277 } <span class="keywordflow">else</span> {
+<a name="l02278"></a>02278 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(n._data());
+<a name="l02279"></a>02279 }
+<a name="l02280"></a>02280 }
+<a name="l02282"></a>02282
+<a name="l02284"></a><a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd">02284</a> <span class="preprocessor">#define BOOST_XINT_ANY_COMPARE(rtype, op) \</span>
+<a name="l02285"></a>02285 <span class="preprocessor"> template &lt;class A0, class A1, class A2, class A3, class A4, typename N&gt; \</span>
+<a name="l02286"></a>02286 <span class="preprocessor"> rtype op(const BOOST_XINT_INTEGER_TYPE n1, const N n2) { \</span>
+<a name="l02287"></a>02287 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \</span>
+<a name="l02288"></a>02288 <span class="preprocessor"> try { \</span>
+<a name="l02289"></a>02289 <span class="preprocessor"> return op(n1, BOOST_XINT_INTEGER_TYPE(n2)); \</span>
+<a name="l02290"></a>02290 <span class="preprocessor"> } catch (std::exception&amp;) { \</span>
+<a name="l02291"></a>02291 <span class="preprocessor"> return rtype(0); \</span>
+<a name="l02292"></a>02292 <span class="preprocessor"> } \</span>
+<a name="l02293"></a>02293 <span class="preprocessor"> } else { \</span>
+<a name="l02294"></a>02294 <span class="preprocessor"> return op(n1, BOOST_XINT_INTEGER_TYPE(n2)); \</span>
+<a name="l02295"></a>02295 <span class="preprocessor"> } \</span>
+<a name="l02296"></a>02296 <span class="preprocessor"> } \</span>
+<a name="l02297"></a>02297 <span class="preprocessor"> \</span>
+<a name="l02298"></a>02298 <span class="preprocessor"> template &lt;typename N, class A0, class A1, class A2, class A3, class A4&gt; \</span>
+<a name="l02299"></a>02299 <span class="preprocessor"> rtype op(const N n1, const BOOST_XINT_INTEGER_TYPE n2) { \</span>
+<a name="l02300"></a>02300 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \</span>
+<a name="l02301"></a>02301 <span class="preprocessor"> try { \</span>
+<a name="l02302"></a>02302 <span class="preprocessor"> return op(BOOST_XINT_INTEGER_TYPE(n1), n2); \</span>
+<a name="l02303"></a>02303 <span class="preprocessor"> } catch (std::exception&amp;) { \</span>
+<a name="l02304"></a>02304 <span class="preprocessor"> return rtype(0); \</span>
+<a name="l02305"></a>02305 <span class="preprocessor"> } \</span>
+<a name="l02306"></a>02306 <span class="preprocessor"> } else { \</span>
+<a name="l02307"></a>02307 <span class="preprocessor"> return op(BOOST_XINT_INTEGER_TYPE(n1), n2); \</span>
+<a name="l02308"></a>02308 <span class="preprocessor"> } \</span>
+<a name="l02309"></a>02309 <span class="preprocessor"> }</span>
+<a name="l02310"></a>02310 <span class="preprocessor"></span>
+<a name="l02311"></a>02311 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, <span class="keyword">operator</span>&lt;)
+<a name="l02312"></a>02312 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;)
+<a name="l02313"></a>02313 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&lt;=)
+<a name="l02314"></a>02314 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;=)
+<a name="l02315"></a>02315 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator==)
+<a name="l02316"></a>02316 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator!=)
+<a name="l02317"></a>02317 <a class="code" href="integer_8hpp.html#a0d448137aa53fae5fcb6f49444348cbd" title="Allows for comparisons between integer_t types and other integral values.">BOOST_XINT_ANY_COMPARE</a>(<span class="keywordtype">int</span>, <a class="code" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare</a>)
+<a name="l02318"></a>02318
+<a name="l02320"></a><a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090">02320</a> <span class="preprocessor">#define BOOST_XINT_ANY_MATH(op) \</span>
+<a name="l02321"></a>02321 <span class="preprocessor"> template &lt;class A0, class A1, class A2, class A3, class A4, typename N&gt; \</span>
+<a name="l02322"></a>02322 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE op(const BOOST_XINT_INTEGER_TYPE n1, const N n2) { \</span>
+<a name="l02323"></a>02323 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \</span>
+<a name="l02324"></a>02324 <span class="preprocessor"> try { \</span>
+<a name="l02325"></a>02325 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE r(op(n1, BOOST_XINT_INTEGER_TYPE(n2)));\</span>
+<a name="l02326"></a>02326 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \</span>
+<a name="l02327"></a>02327 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
+<a name="l02328"></a>02328 <span class="preprocessor"> } catch (std::exception&amp;) { \</span>
+<a name="l02329"></a>02329 <span class="preprocessor"> return BOOST_XINT_INTEGER_TYPE::nan(); \</span>
+<a name="l02330"></a>02330 <span class="preprocessor"> } \</span>
+<a name="l02331"></a>02331 <span class="preprocessor"> } else { \</span>
+<a name="l02332"></a>02332 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE r(op(n1, BOOST_XINT_INTEGER_TYPE(n2))); \</span>
+<a name="l02333"></a>02333 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \</span>
+<a name="l02334"></a>02334 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
+<a name="l02335"></a>02335 <span class="preprocessor"> } \</span>
+<a name="l02336"></a>02336 <span class="preprocessor"> } \</span>
+<a name="l02337"></a>02337 <span class="preprocessor"> \</span>
+<a name="l02338"></a>02338 <span class="preprocessor"> template &lt;typename N, class A0, class A1, class A2, class A3, class A4&gt; \</span>
+<a name="l02339"></a>02339 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE op(const N n1, const BOOST_XINT_INTEGER_TYPE n2) { \</span>
+<a name="l02340"></a>02340 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Nothrow) { \</span>
+<a name="l02341"></a>02341 <span class="preprocessor"> try { \</span>
+<a name="l02342"></a>02342 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE r(op(BOOST_XINT_INTEGER_TYPE(n1), n2));\</span>
+<a name="l02343"></a>02343 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \</span>
+<a name="l02344"></a>02344 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
+<a name="l02345"></a>02345 <span class="preprocessor"> } catch (std::exception&amp;) { \</span>
+<a name="l02346"></a>02346 <span class="preprocessor"> return BOOST_XINT_INTEGER_TYPE::nan(); \</span>
+<a name="l02347"></a>02347 <span class="preprocessor"> } \</span>
+<a name="l02348"></a>02348 <span class="preprocessor"> } else { \</span>
+<a name="l02349"></a>02349 <span class="preprocessor"> BOOST_XINT_INTEGER_TYPE r(op(BOOST_XINT_INTEGER_TYPE(n1), n2)); \</span>
+<a name="l02350"></a>02350 <span class="preprocessor"> if (BOOST_XINT_INTEGER_TYPE::Threadsafe == true) r._make_unique(); \</span>
+<a name="l02351"></a>02351 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
+<a name="l02352"></a>02352 <span class="preprocessor"> } \</span>
+<a name="l02353"></a>02353 <span class="preprocessor"> }</span>
+<a name="l02354"></a>02354 <span class="preprocessor"></span>
+<a name="l02355"></a>02355 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52" title="Calculate the value of ne">pow</a>)
+<a name="l02356"></a>02356 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564" title="Get the modular product of two integers.">mulmod</a>)
+<a name="l02357"></a>02357 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877" title="Get the modular product of squaring an integer.">sqrmod</a>)
+<a name="l02358"></a>02358 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>)
+<a name="l02359"></a>02359 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>)
+<a name="l02360"></a>02360 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator+)
+<a name="l02361"></a>02361 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator-)
+<a name="l02362"></a>02362 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator*)
+<a name="l02363"></a>02363 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator/)
+<a name="l02364"></a>02364 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator%)
+<a name="l02365"></a>02365 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator&amp;)
+<a name="l02366"></a>02366 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator|)
+<a name="l02367"></a>02367 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(operator^)
+<a name="l02368"></a>02368 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>)
+<a name="l02369"></a>02369 <a class="code" href="integer_8hpp.html#a156a9c77202e0b05ebf2cc2494d6f090" title="Allows for operations between integer_t types and other integral values.">BOOST_XINT_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4" title="Calculate the Least Common Multiple of two integers.">lcm</a>)
+<a name="l02370"></a>02370
+<a name="l02373"></a>02373 template &lt;typename charT, typename traits, class A0, class A1, class A2, class
+<a name="l02374"></a>02374 A3, class A4&gt; inline std::basic_ostream&lt;charT,traits&gt;&amp;
+<a name="l02375"></a><a class="code" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">02375</a> operator&lt;&lt;(std::basic_ostream&lt;charT, traits&gt;&amp; out, const
+<a name="l02376"></a>02376 <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a> n)
+<a name="l02377"></a>02377 {
+<a name="l02378"></a>02378 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow &amp;&amp; n.is_nan()) <span class="keywordflow">return</span> <span class="keyword">operator</span>&lt;&lt;(out,
+<a name="l02379"></a>02379 <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">nan_text</a>);
+<a name="l02380"></a>02380 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">operator&lt;&lt;</a>(out, n._data());
+<a name="l02381"></a>02381 }
+<a name="l02382"></a>02382
+<a name="l02383"></a>02383 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> charT, <span class="keyword">typename</span> traits, <span class="keyword">class </span>A0, <span class="keyword">class </span>A1, <span class="keyword">class </span>A2, <span class="keyword">class</span>
+<a name="l02384"></a>02384 A3, <span class="keyword">class </span>A4&gt; <span class="keyword">inline</span> std::basic_istream&lt;charT,traits&gt;&amp;
+<a name="l02385"></a><a class="code" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">02385</a> <a class="code" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">operator&gt;&gt;</a>(std::basic_istream&lt;charT, traits&gt;&amp; in, <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp;
+<a name="l02386"></a>02386 n)
+<a name="l02387"></a>02387 {
+<a name="l02388"></a>02388 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPE::Nothrow &amp;&amp; in.peek()==<span class="charliteral">&#39;#&#39;</span>) {
+<a name="l02389"></a>02389 <span class="comment">// Must be either #NaN# or an error</span>
+<a name="l02390"></a>02390 <span class="keywordtype">char</span> buffer[6];
+<a name="l02391"></a>02391
+<a name="l02392"></a>02392 <span class="comment">// These are efficient and safe, but MSVC complains about them anyway.</span>
+<a name="l02393"></a>02393 <span class="comment">//std::streamsize size = in.readsome(buffer, 5);</span>
+<a name="l02394"></a>02394 <span class="comment">//buffer[size]=0;</span>
+<a name="l02395"></a>02395
+<a name="l02396"></a>02396 <span class="comment">// Replacing them with these.</span>
+<a name="l02397"></a>02397 <span class="keywordtype">char</span> *p = buffer, *pe = p + 5;
+<a name="l02398"></a>02398 <span class="keywordflow">while</span> (p != pe) in &gt;&gt; *p++;
+<a name="l02399"></a>02399 *p = 0;
+<a name="l02400"></a>02400
+<a name="l02401"></a>02401 std::string str(buffer);
+<a name="l02402"></a>02402
+<a name="l02403"></a>02403 <span class="keywordflow">if</span> (str == <a class="code" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b" title="This is the string representation of the Not-a-Number value.">boost::xint::nan_text</a>) n = n.nan();
+<a name="l02404"></a>02404 <span class="keywordflow">else</span> in.setstate(std::ios::failbit);
+<a name="l02405"></a>02405 <span class="keywordflow">return</span> in;
+<a name="l02406"></a>02406 }
+<a name="l02407"></a>02407 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">operator&gt;&gt;</a>(in, n._data());
+<a name="l02408"></a>02408 }
+<a name="l02410"></a>02410
+<a name="l02411"></a>02411 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02412"></a><a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">02412</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(<a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; left, <a class="code" href="integer_8hpp.html#a4aaa66b9b8169b785506dfaf7de1fcd7">BOOST_XINT_INTEGER_TYPE</a>&amp; right)
+<a name="l02413"></a>02413 {
+<a name="l02414"></a>02414 left._swap(right);
+<a name="l02415"></a>02415 }
+<a name="l02416"></a>02416
+<a name="l02421"></a><a class="code" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">02421</a> <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t&lt;&gt;</a> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer</a>;
+<a name="l02422"></a>02422
+<a name="l02428"></a><a class="code" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4">02428</a> <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t&lt;options::nothrow&lt;true&gt;</a> &gt; <a class="code" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">nothrow_integer</a>;
+<a name="l02429"></a>02429
+<a name="l02430"></a>02430 } <span class="comment">// namespace xint</span>
+<a name="l02431"></a>02431 } <span class="comment">// namespace boost</span>
+<a name="l02432"></a>02432
+<a name="l02433"></a>02433 <span class="preprocessor">#ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l02434"></a>02434 <span class="preprocessor"></span><span class="keyword">namespace </span>std {
+<a name="l02435"></a>02435
+<a name="l02436"></a>02436 <span class="preprocessor">#define BOOST_XINT_INTEGER_TYPENAME boost::xint::integer_t&lt;A0, A1, A2, A3, A4&gt;</span>
+<a name="l02437"></a>02437 <span class="preprocessor"></span>
+<a name="l02438"></a>02438 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02439"></a>02439 <span class="keyword">class </span>numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt; {
+<a name="l02440"></a>02440 <span class="keyword">public</span>:
+<a name="l02441"></a>02441 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_specialized;
+<a name="l02442"></a>02442
+<a name="l02443"></a>02443 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME min BOOST_PREVENT_MACRO_SUBSTITUTION()
+<a name="l02444"></a>02444 <span class="keywordflow">throw</span>()
+<a name="l02445"></a>02445 {
+<a name="l02446"></a>02446 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPENAME::Bits)
+<a name="l02447"></a>02447 <span class="keywordflow">return</span> -~(BOOST_XINT_INTEGER_TYPENAME());
+<a name="l02448"></a>02448 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l02449"></a>02449 }
+<a name="l02450"></a>02450 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME max BOOST_PREVENT_MACRO_SUBSTITUTION()
+<a name="l02451"></a>02451 throw()
+<a name="l02452"></a>02452 {
+<a name="l02453"></a>02453 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPENAME::Bits)
+<a name="l02454"></a>02454 <span class="keywordflow">return</span> ~(BOOST_XINT_INTEGER_TYPENAME());
+<a name="l02455"></a>02455 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l02456"></a>02456 }
+<a name="l02457"></a>02457
+<a name="l02458"></a>02458 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits;
+<a name="l02459"></a>02459 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> digits10;
+<a name="l02460"></a>02460 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_signed;
+<a name="l02461"></a>02461 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_integer;
+<a name="l02462"></a>02462 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_exact;
+<a name="l02463"></a>02463 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> radix;
+<a name="l02464"></a>02464 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME epsilon() throw() { <span class="keywordflow">return</span> 0; }
+<a name="l02465"></a>02465 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME round_error() throw() { <span class="keywordflow">return</span> 0; }
+<a name="l02466"></a>02466
+<a name="l02467"></a>02467 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent; <span class="comment">// N/A</span>
+<a name="l02468"></a>02468 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> min_exponent10; <span class="comment">// N/A</span>
+<a name="l02469"></a>02469 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent; <span class="comment">// N/A</span>
+<a name="l02470"></a>02470 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_exponent10; <span class="comment">// N/A</span>
+<a name="l02471"></a>02471
+<a name="l02472"></a>02472 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_infinity; <span class="comment">// N/A</span>
+<a name="l02473"></a>02473 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_quiet_NaN;
+<a name="l02474"></a>02474 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_signaling_NaN; <span class="comment">// N/A</span>
+<a name="l02475"></a>02475 <span class="keyword">static</span> <span class="keyword">const</span> float_denorm_style has_denorm; <span class="comment">// N/A</span>
+<a name="l02476"></a>02476 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_denorm_loss; <span class="comment">// N/A</span>
+<a name="l02477"></a>02477
+<a name="l02478"></a>02478 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME infinity() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// N/A</span>
+<a name="l02479"></a>02479 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME quiet_NaN() throw() {
+<a name="l02480"></a>02480 <span class="keywordflow">if</span> (BOOST_XINT_INTEGER_TYPENAME::Nothrow)
+<a name="l02481"></a>02481 <span class="keywordflow">return</span> BOOST_XINT_INTEGER_TYPENAME::nan();
+<a name="l02482"></a>02482 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l02483"></a>02483 }
+<a name="l02484"></a>02484 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME signaling_NaN() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// N/A</span>
+<a name="l02485"></a>02485 <span class="keyword">static</span> BOOST_XINT_INTEGER_TYPENAME denorm_min() throw() { <span class="keywordflow">return</span> 0; } <span class="comment">// N/A</span>
+<a name="l02486"></a>02486
+<a name="l02487"></a>02487 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_iec559; <span class="comment">// N/A</span>
+<a name="l02488"></a>02488 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_bounded;
+<a name="l02489"></a>02489 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> is_modulo;
+<a name="l02490"></a>02490
+<a name="l02491"></a>02491 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> traps; <span class="comment">// I assume this means exceptions?</span>
+<a name="l02492"></a>02492 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> tinyness_before; <span class="comment">// N/A</span>
+<a name="l02493"></a>02493 <span class="keyword">static</span> <span class="keyword">const</span> float_round_style round_style; <span class="comment">// N/A</span>
+<a name="l02494"></a>02494 };
+<a name="l02495"></a>02495
+<a name="l02496"></a>02496 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02497"></a>02497 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::is_specialized = <span class="keyword">true</span>;
+<a name="l02498"></a>02498
+<a name="l02499"></a>02499 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02500"></a>02500 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::digits =
+<a name="l02501"></a>02501 <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(BOOST_XINT_INTEGER_TYPENAME::Bits);
+<a name="l02502"></a>02502
+<a name="l02503"></a>02503 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02504"></a>02504 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::digits10 =
+<a name="l02505"></a>02505 <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(boost::xint::detail::log10_bits(
+<a name="l02506"></a>02506 BOOST_XINT_INTEGER_TYPENAME::Bits));
+<a name="l02507"></a>02507
+<a name="l02508"></a>02508 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02509"></a>02509 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::is_signed = <span class="keyword">true</span>;
+<a name="l02510"></a>02510
+<a name="l02511"></a>02511 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02512"></a>02512 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::is_integer = <span class="keyword">true</span>;
+<a name="l02513"></a>02513
+<a name="l02514"></a>02514 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02515"></a>02515 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::is_exact = <span class="keyword">true</span>;
+<a name="l02516"></a>02516
+<a name="l02517"></a>02517 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02518"></a>02518 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::radix = 2;
+<a name="l02519"></a>02519
+<a name="l02520"></a>02520 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02521"></a>02521 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::min_exponent = 0;
+<a name="l02522"></a>02522
+<a name="l02523"></a>02523 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02524"></a>02524 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::min_exponent10 = 0;
+<a name="l02525"></a>02525
+<a name="l02526"></a>02526 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02527"></a>02527 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::max_exponent = 0;
+<a name="l02528"></a>02528
+<a name="l02529"></a>02529 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02530"></a>02530 <span class="keyword">const</span> <span class="keywordtype">int</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::max_exponent10 = 0;
+<a name="l02531"></a>02531
+<a name="l02532"></a>02532 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02533"></a>02533 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::has_infinity = <span class="keyword">false</span>;
+<a name="l02534"></a>02534
+<a name="l02535"></a>02535 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02536"></a>02536 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::has_quiet_NaN =
+<a name="l02537"></a>02537 (BOOST_XINT_INTEGER_TYPENAME::Nothrow ? <span class="keyword">true</span> : <span class="keyword">false</span>);
+<a name="l02538"></a>02538
+<a name="l02539"></a>02539 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02540"></a>02540 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::has_signaling_NaN =
+<a name="l02541"></a>02541 <span class="keyword">false</span>;
+<a name="l02542"></a>02542
+<a name="l02543"></a>02543 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02544"></a>02544 <span class="keyword">const</span> float_denorm_style numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::has_denorm
+<a name="l02545"></a>02545 = denorm_absent;
+<a name="l02546"></a>02546
+<a name="l02547"></a>02547 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02548"></a>02548 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::has_denorm_loss = <span class="keyword">false</span>;
+<a name="l02549"></a>02549
+<a name="l02550"></a>02550 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02551"></a>02551 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::is_iec559 = <span class="keyword">false</span>;
+<a name="l02552"></a>02552
+<a name="l02553"></a>02553 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02554"></a>02554 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::is_bounded =
+<a name="l02555"></a>02555 (BOOST_XINT_INTEGER_TYPENAME::Bits == 0 ? <span class="keyword">false</span> : <span class="keyword">true</span>);
+<a name="l02556"></a>02556
+<a name="l02557"></a>02557 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02558"></a>02558 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::is_modulo =
+<a name="l02559"></a>02559 (BOOST_XINT_INTEGER_TYPENAME::Bits == 0 ? <span class="keyword">false</span> : <span class="keyword">true</span>);
+<a name="l02560"></a>02560
+<a name="l02561"></a>02561 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02562"></a>02562 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::traps =
+<a name="l02563"></a>02563 (BOOST_XINT_INTEGER_TYPENAME::Nothrow ? <span class="keyword">false</span> : <span class="keyword">true</span>);
+<a name="l02564"></a>02564
+<a name="l02565"></a>02565 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02566"></a>02566 <span class="keyword">const</span> <span class="keywordtype">bool</span> numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::tinyness_before = <span class="keyword">false</span>;
+<a name="l02567"></a>02567
+<a name="l02568"></a>02568 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
+<a name="l02569"></a>02569 <span class="keyword">const</span> float_round_style numeric_limits&lt;BOOST_XINT_INTEGER_TYPENAME&gt;::round_style
+<a name="l02570"></a>02570 = round_indeterminate;
+<a name="l02571"></a>02571
+<a name="l02572"></a>02572 } <span class="comment">// namespace std</span>
+<a name="l02573"></a>02573 <span class="preprocessor">#endif // BOOST_XINT_DOXYGEN_IGNORE</span>
+<a name="l02574"></a>02574 <span class="preprocessor"></span><span class="preprocessor">#endif // BOOST_INCLUDED_XINT_INTEGER_HPP</span>
 </pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/internals_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/internals_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/internals_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -31,12 +31,6 @@
 
 <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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1any__integer.html">boost::xint::any_integer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A base class for all integer types. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">boost::xint::base_divide_t&lt; T &gt;</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Holds the results from a division-with-remainder call. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref&lt; T &gt;</a></td></tr>
 <tr><td colspan="2"><h2>Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -49,170 +43,14 @@
 <p><tr><td class="mdescLeft">&nbsp;</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>Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(type)&nbsp;&nbsp;&nbsp;const type&amp;</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(type)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">BOOST_XINT_FORWARD</a>(type, value)&nbsp;&nbsp;&nbsp;value</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a7621c4fd1f5760b878ca8f5e5e6bb4c2">BOOST_XINT_FROM_HEADER</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a>&nbsp;&nbsp;&nbsp;inline</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(value)&nbsp;&nbsp;&nbsp;value</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(type)&nbsp;&nbsp;&nbsp;<a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>&lt;type&gt;</td></tr>
-<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::vector&lt; unsigned <br class="typebreak"/>
-char &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">boost::xint::binary_t</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The format for the binary representations of integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">boost::xint::bitsize_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef boost::function&lt; bool()&gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint::callback_t</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function takes no parameters and returns a bool. <br/></td></tr>
-<tr><td colspan="2"><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint::autobase</a> = (std::numeric_limits&lt;size_t&gt;::max)()</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A value that can be used for the 'base' parameter of the string-to-integer constructor functions. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const callback_t&nbsp;</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="mdescLeft">&nbsp;</td><td class="mdescRight">An empty callback_t, used as a default parameter for some functions. <br/></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>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a8177a6a6c68ea042f7e644d8ef7128f9"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_COPY_ASSIGN_REF" ref="a8177a6a6c68ea042f7e644d8ef7128f9" args="(type)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_COPY_ASSIGN_REF</td>
- <td>(</td>
- <td class="paramtype">type&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td>&nbsp;&nbsp;&nbsp;const type&amp;</td>
- </tr>
- </table>
 </div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00051">51</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5f5634ec80010f0f87b93320fa3419f9"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_COPYABLE_AND_MOVABLE" ref="a5f5634ec80010f0f87b93320fa3419f9" args="(type)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_COPYABLE_AND_MOVABLE</td>
- <td>(</td>
- <td class="paramtype">type&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00052">52</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad30e9ec163d1981dfee69c97d09ffd28"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_FORWARD" ref="ad30e9ec163d1981dfee69c97d09ffd28" args="(type, value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FORWARD</td>
- <td>(</td>
- <td class="paramtype">type, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">value&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td>&nbsp;&nbsp;&nbsp;value</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00055">55</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7621c4fd1f5760b878ca8f5e5e6bb4c2"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_FROM_HEADER" ref="a7621c4fd1f5760b878ca8f5e5e6bb4c2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_FROM_HEADER</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00649">649</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad98e63b2824264e53b562c9a833ffeab"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_INLINE" ref="ad98e63b2824264e53b562c9a833ffeab" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_INLINE&nbsp;&nbsp;&nbsp;inline</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00647">647</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a73c3b02410381da656b7cb59c7ba9314"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_MOVE" ref="a73c3b02410381da656b7cb59c7ba9314" args="(value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_MOVE</td>
- <td>(</td>
- <td class="paramtype">value&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td>&nbsp;&nbsp;&nbsp;value</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00054">54</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0533c283bce9e4d9468ea9b3a5ab509b"></a><!-- doxytag: member="internals.hpp::BOOST_XINT_RV_REF" ref="a0533c283bce9e4d9468ea9b3a5ab509b" args="(type)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_RV_REF</td>
- <td>(</td>
- <td class="paramtype">type&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td>&nbsp;&nbsp;&nbsp;<a class="el" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>&lt;type&gt;</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<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>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/internals_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/internals_8hpp_source.html (original)
+++ sandbox/xint/libs/xint/doc/internals_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -42,596 +42,69 @@
 <a name="l00023"></a>00023 <span class="comment">// Leave this commented out to use it as a header-only library.</span>
 <a name="l00024"></a>00024 <span class="comment">//#define BOOST_XINT_COMPILED_LIB</span>
 <a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;vector&gt;</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;queue&gt;</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;limits&gt;</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// for size_t</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;cassert&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;boost/integer.hpp&gt;</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;boost/cstdint.hpp&gt;</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;boost/function.hpp&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;boost/type_traits.hpp&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="comment">// Uncomment this to use Boost.Move, which can improve the speed when using</span>
-<a name="l00039"></a>00039 <span class="comment">// extremely large numbers.</span>
-<a name="l00040"></a>00040 <span class="comment">//#define BOOST_XINT_USE_MOVE</span>
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor">#ifdef BOOST_XINT_USE_MOVE</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;boost/move/move.hpp&gt;</span>
-<a name="l00044"></a>00044 <span class="preprocessor"> #define BOOST_XINT_COPY_ASSIGN_REF(type) BOOST_COPY_ASSIGN_REF(type)</span>
-<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_COPYABLE_AND_MOVABLE(type) BOOST_COPYABLE_AND_MOVABLE(type)</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_RV_REF(type) BOOST_RV_REF(type)</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_MOVE(value) boost::move(value)</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FORWARD(type, value) boost::forward&lt;type&gt;(value)</span>
-<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00050"></a><a class="code" href="classdisable__boost__rv__ref.html">00050</a> <span class="preprocessor"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">class </span><a class="code" href="classdisable__boost__rv__ref.html">disable_boost_rv_ref</a>: <span class="keyword">public</span> T { };
-<a name="l00051"></a><a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">00051</a> <span class="preprocessor"> #define BOOST_XINT_COPY_ASSIGN_REF(type) const type&amp;</span>
-<a name="l00052"></a><a class="code" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">00052</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_COPYABLE_AND_MOVABLE(type)</span>
-<a name="l00053"></a><a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">00053</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_RV_REF(type) disable_boost_rv_ref&lt;type&gt;</span>
-<a name="l00054"></a><a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">00054</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_MOVE(value) value</span>
-<a name="l00055"></a><a class="code" href="internals_8hpp.html#ad30e9ec163d1981dfee69c97d09ffd28">00055</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_FORWARD(type, value) value</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00057"></a>00057 <span class="preprocessor"></span>
-<a name="l00058"></a><a class="code" href="namespaceboost.html">00058</a> <span class="keyword">namespace </span>boost {
-<a name="l00059"></a>00059
-<a name="l00061"></a><a class="code" href="namespaceboost_1_1xint.html">00061</a> <span class="keyword">namespace </span>xint {
-<a name="l00062"></a>00062
-<a name="l00064"></a><a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">00064</a> <span class="keyword">typedef</span> boost::function&lt;bool ()&gt; <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a>;
-<a name="l00065"></a>00065
-<a name="l00067"></a><a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">00067</a> <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>;
+<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;../exceptions.hpp&quot;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;../random.hpp&quot;</span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="preprocessor">#include &quot;<a class="code" href="basic__types__and__includes_8hpp.html" title="Contains the most basic types, constants, and includes.">basic_types_and_includes.hpp</a>&quot;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &quot;<a class="code" href="bitqueue_8hpp.html" title="Contains the bitqueue_t class, used internally.">bitqueue.hpp</a>&quot;</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include &quot;<a class="code" href="policies_8hpp.html" title="Contains the policy classes.">policies.hpp</a>&quot;</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include &quot;<a class="code" href="magnitude__manager_8hpp.html" title="Contains the magnitude_manager_t class.">magnitude_manager.hpp</a>&quot;</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include &quot;<a class="code" href="raw__integer_8hpp.html" title="Contains the raw_integer class declaration, and miscellaneous definitions for member...">raw_integer.hpp</a>&quot;</span>
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="preprocessor">#include &quot;<a class="code" href="log2_8hpp.html" title="Contains the log2 implementations.">log2.hpp</a>&quot;</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include &quot;<a class="code" href="shift_8hpp.html" title="Contains the bit-shifting function definitions.">shift.hpp</a>&quot;</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include &quot;<a class="code" href="bitfunctions_8hpp.html" title="Contains the definitions for the bit-manipulation functions.">bitfunctions.hpp</a>&quot;</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include &quot;<a class="code" href="andorxor_8hpp.html" title="Contains the functions for ANDing, ORing, and XORing.">andorxor.hpp</a>&quot;</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include &quot;<a class="code" href="randomgen_8hpp.html" title="Contains the function definitions for the random number classes.">randomgen.hpp</a>&quot;</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include &quot;<a class="code" href="random__by__size_8hpp.html" title="Contains the random_by_size function.">random_by_size.hpp</a>&quot;</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include &quot;<a class="code" href="compare_8hpp.html" title="Contains the definitions for the comparison functions.">compare.hpp</a>&quot;</span>
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="preprocessor">#include &quot;<a class="code" href="addsubtract_8hpp.html" title="Contains the definitions of the addition and subtraction functions.">addsubtract.hpp</a>&quot;</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include &quot;<a class="code" href="multiply_8hpp.html" title="Contains the multiplication and squaring functions.">multiply.hpp</a>&quot;</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include &quot;<a class="code" href="divide_8hpp.html" title="Contains the definitions of the divide function, and its supporting functions.">divide.hpp</a>&quot;</span>
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="preprocessor">#include &quot;<a class="code" href="convert_8hpp.html" title="Contains the conversion functions.">convert.hpp</a>&quot;</span>
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="preprocessor">#include &quot;<a class="code" href="roots_8hpp.html" title="Contains the square-root function definition, and any future root-related ones.">roots.hpp</a>&quot;</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include &quot;<a class="code" href="powers_8hpp.html" title="Contains functions related to powers of a number.">powers.hpp</a>&quot;</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include &quot;<a class="code" href="gcd_8hpp.html" title="Contains functions using the Greatest Common Denominator algorithm.">gcd.hpp</a>&quot;</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include &quot;<a class="code" href="monty_8hpp.html" title="Contains the Montgomery Reduction functions.">monty.hpp</a>&quot;</span>
+<a name="l00053"></a>00053 <span class="preprocessor">#include &quot;<a class="code" href="modular_8hpp.html" title="Contains the modular math functions.">modular.hpp</a>&quot;</span>
+<a name="l00054"></a>00054 <span class="preprocessor">#include &quot;<a class="code" href="prime_8hpp.html" title="Contains the function definitions for the prime number functions.">prime.hpp</a>&quot;</span>
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="preprocessor">#include &quot;<a class="code" href="options_8hpp.html" title="Declares the arbitrary-length integer type.">options.hpp</a>&quot;</span>
+<a name="l00057"></a>00057
+<a name="l00060"></a>00060
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">namespace </span>boost {
+<a name="l00065"></a>00065 <span class="keyword">namespace </span>xint {
+<a name="l00066"></a>00066 <span class="keyword">namespace </span>detail {
 <a name="l00068"></a>00068
-<a name="l00070"></a><a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">00070</a> <span class="keyword">typedef</span> std::vector&lt;unsigned char&gt; <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">binary_t</a>;
-<a name="l00071"></a>00071
-<a name="l00074"></a><a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">00074</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a> = (std::numeric_limits&lt;size_t&gt;::max)();
-<a name="l00075"></a>00075
-<a name="l00077"></a>00077 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;
-<a name="l00078"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html">00078</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a> {
-<a name="l00079"></a>00079 <span class="keyword">public</span>:
-<a name="l00080"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">00080</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">base_divide_t</a>() { }
-<a name="l00081"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a1b7962768058ad19d8d3e848b1fc019e">00081</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a1b7962768058ad19d8d3e848b1fc019e">base_divide_t</a>(<span class="keyword">const</span> T&amp; q, <span class="keyword">const</span> T&amp; r): <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>(q), <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>(r) { }
-<a name="l00082"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa9f43e464f328b0cc618f67e6e4d1d6f">00082</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a78e4dd66f424388d1db839ef53e25997">base_divide_t</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t&lt;T&gt;</a>&amp; copy):
-<a name="l00083"></a>00083 <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>(copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>), <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>(copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>) { }
-<a name="l00084"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aaa2df86aa70e8ac849cd6289a1f459b1">00084</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aaa2df86aa70e8ac849cd6289a1f459b1">base_divide_t</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>) move) {
-<a name="l00085"></a>00085 <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>._swap(move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>); <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>._swap(move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>); }
+<a name="l00069"></a>00069 <span class="keyword">inline</span> <span class="keywordtype">size_t</span> log10_bits(<span class="keywordtype">size_t</span> bits) {
+<a name="l00070"></a>00070 <span class="comment">// large_step and count_per_large_step are based on a minimum-32-bit integer</span>
+<a name="l00071"></a>00071 assert(std::numeric_limits&lt;boost::intmax_t&gt;::digits &gt;= 32);
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keyword">typedef</span> raw_integer_t&lt;0, false, std::allocator&lt;digit_t&gt; &gt; T;
+<a name="l00074"></a>00074 <span class="keyword">const</span> T large_step(1000000000), small_step(10);
+<a name="l00075"></a>00075 <span class="keyword">const</span> <span class="keywordtype">size_t</span> count_per_large_step = 9, count_per_small_step = 1;
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 T n;
+<a name="l00078"></a>00078 pow2(n, bits);
+<a name="l00079"></a>00079 --n;
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keywordtype">size_t</span> r = 0;
+<a name="l00082"></a>00082 <span class="keywordflow">while</span> (n &gt;= large_step) { n /= large_step; r += count_per_large_step; }
+<a name="l00083"></a>00083 <span class="keywordflow">while</span> (n &gt;= small_step) { n /= small_step; r += count_per_small_step; }
+<a name="l00084"></a>00084 <span class="keywordflow">return</span> r;
+<a name="l00085"></a>00085 }
 <a name="l00086"></a>00086
-<a name="l00087"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">00087</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>&amp; <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#ac74a636871dd2988a4f654fc745426c7">operator=</a>(<a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>) copy)
-<a name="l00088"></a>00088 { <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a> = copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>; <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a> = copy.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00089"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a5f66ee628dc58d181b8c2886354909fb">00089</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>&amp; <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a5f66ee628dc58d181b8c2886354909fb">operator=</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>) move) {
-<a name="l00090"></a>00090 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">std::swap</a>;
-<a name="l00091"></a>00091 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>, move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>);
-<a name="l00092"></a>00092 <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>, move.<a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>);
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">00095</a> T <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#a7b3f254223974ed79663f9a0e4d1649c">quotient</a>, <a class="code" href="classboost_1_1xint_1_1base__divide__t.html#aa79bd57f1bc85ceb86913fd0f81c9e2d">remainder</a>;
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keyword">private</span>:
-<a name="l00098"></a>00098 <a class="code" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(<a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t</a>)
-<a name="l00099"></a>00099 };
-<a name="l00100"></a>00100
-<a name="l00102"></a><a class="code" href="namespaceboost_1_1xint_1_1detail.html">00102</a> <span class="keyword">namespace </span>detail {
-<a name="l00104"></a>00104
-<a name="l00110"></a>00110 <span class="keyword">typedef</span> boost::uintmax_t doubledigit_t;
-<a name="l00111"></a>00111
-<a name="l00117"></a>00117 <span class="keyword">typedef</span> boost::uint_t&lt;std::numeric_limits&lt;doubledigit_t&gt;::digits / 2&gt;::fast
-<a name="l00118"></a>00118 digit_t;
-<a name="l00119"></a>00119
-<a name="l00122"></a>00122 <span class="keyword">const</span> <span class="keywordtype">size_t</span> minimum_digits = 1;
-<a name="l00123"></a>00123 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bits_per_digit = std::numeric_limits&lt;digit_t&gt;::digits;
-<a name="l00124"></a>00124 <span class="keyword">const</span> <span class="keywordtype">size_t</span> digits_in_uintmax =
-<a name="l00125"></a>00125 (std::numeric_limits&lt;boost::uintmax_t&gt;::digits + bits_per_digit - 1) /
-<a name="l00126"></a>00126 bits_per_digit;
-<a name="l00127"></a>00127 <span class="keyword">const</span> digit_t digit_hibit = (digit_t(1) &lt;&lt; (bits_per_digit-1));
-<a name="l00128"></a>00128 <span class="keyword">const</span> doubledigit_t doubledigit_hibit = (doubledigit_t(1) &lt;&lt; (bits_per_digit*2-1));
-<a name="l00129"></a>00129 <span class="keyword">const</span> doubledigit_t digit_overflowbit = (doubledigit_t(1) &lt;&lt; bits_per_digit);
-<a name="l00130"></a>00130 <span class="keyword">const</span> digit_t digit_mask = digit_t(digit_overflowbit-1);
-<a name="l00132"></a>00132
-<a name="l00134"></a>00134
-<a name="l00137"></a>00137 <span class="keyword">struct </span>raw_digits_t {
-<a name="l00138"></a>00138 <span class="keyword">private</span>:
-<a name="l00139"></a>00139 <span class="keywordtype">size_t</span> copy_count;
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="keyword">public</span>:
-<a name="l00142"></a>00142 <span class="keyword">const</span> <span class="keywordtype">size_t</span> max_length;
-<a name="l00143"></a>00143 <span class="keyword">const</span> <span class="keywordtype">bool</span> readonly;
-<a name="l00144"></a>00144 digit_t digits[minimum_digits]; <span class="comment">// Must be last data item, see &quot;struct hack&quot;</span>
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 raw_digits_t(<span class="keywordtype">size_t</span> max_len = 1, <span class="keywordtype">bool</span> ro = <span class="keyword">false</span>);
-<a name="l00147"></a>00147 raw_digits_t(<span class="keywordtype">size_t</span> max_len, <span class="keywordtype">bool</span> ro, digit_t init);
-<a name="l00148"></a>00148 <span class="keywordtype">size_t</span> copy(<span class="keyword">const</span> raw_digits_t&amp; c, <span class="keywordtype">size_t</span> length = 0);
-<a name="l00149"></a>00149 <span class="keywordtype">void</span> copy(<span class="keyword">const</span> digit_t *s, <span class="keywordtype">size_t</span> length);
-<a name="l00150"></a>00150 <span class="keywordtype">size_t</span> zero(<span class="keywordtype">size_t</span> length = 0);
-<a name="l00151"></a>00151 <span class="keywordtype">size_t</span> copies() <span class="keyword">const</span>;
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keyword">friend</span> <span class="keyword">class </span>base_digitmanager_t;
-<a name="l00154"></a>00154 };
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="keyword">const</span> <span class="keywordtype">size_t</span> datasize = (<span class="keyword">sizeof</span>(raw_digits_t) + <span class="keyword">sizeof</span>(digit_t) - 1) /
-<a name="l00157"></a>00157 <span class="keyword">sizeof</span>(digit_t);
-<a name="l00158"></a>00158
-<a name="l00160"></a>00160 <span class="keyword">class </span>base_digitmanager_t {
-<a name="l00161"></a>00161 <span class="keyword">public</span>:
-<a name="l00162"></a>00162 base_digitmanager_t(): raw_data(0) { }
-<a name="l00163"></a>00163 <span class="keyword">virtual</span> ~base_digitmanager_t() { };
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 raw_digits_t *<span class="keyword">get</span>() { <span class="keywordflow">return</span> raw_data; }
-<a name="l00166"></a>00166 <span class="keyword">const</span> raw_digits_t *<span class="keyword">get</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> raw_data; }
-<a name="l00167"></a>00167 <span class="keywordtype">void</span> reset(raw_digits_t *p) { <span class="keywordflow">if</span> (raw_data != p) { dec(); raw_data = p;
-<a name="l00168"></a>00168 inc(); } }
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 raw_digits_t* operator-&gt;() { <span class="keywordflow">return</span> raw_data; }
-<a name="l00171"></a>00171 <span class="keyword">const</span> raw_digits_t* operator-&gt;()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> raw_data; }
-<a name="l00172"></a>00172 <span class="keywordtype">void</span> copy(base_digitmanager_t *c, <span class="keywordtype">size_t</span> length) { raw_data-&gt;copy(
-<a name="l00173"></a>00173 *c-&gt;raw_data, length); }
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="keywordtype">void</span> resize_and_uniquify(<span class="keywordtype">size_t</span> new_requested_max_length = 0);
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="keyword">virtual</span> base_digitmanager_t *new_of_type(base_digitmanager_t *copy = 0)
-<a name="l00178"></a>00178 <span class="keyword">const</span> = 0;
-<a name="l00179"></a>00179 <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> fixed_length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
-<a name="l00180"></a>00180
-<a name="l00188"></a>00188 <span class="keyword">virtual</span> <span class="keywordtype">void</span> beforemod() { }
-<a name="l00189"></a>00189 <span class="keyword">virtual</span> <span class="keywordtype">void</span> aftermod() { }
-<a name="l00190"></a>00190 <span class="keyword">virtual</span> <span class="keywordtype">void</span> endmod_hook(digit_t*) { }
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="keyword">protected</span>:
-<a name="l00194"></a>00194 <span class="keywordtype">void</span> inc() { <span class="keywordflow">if</span> (raw_data) ++raw_data-&gt;copy_count; }
-<a name="l00195"></a>00195 <span class="keywordtype">void</span> dec() { <span class="keywordflow">if</span> (raw_data &amp;&amp; --raw_data-&gt;copy_count == 0)
-<a name="l00196"></a>00196 dealloc(raw_data); }
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 raw_digits_t *alloc(<span class="keywordtype">size_t</span> requested_length, <span class="keywordtype">bool</span> readonly = <span class="keyword">false</span>)
-<a name="l00199"></a>00199 <span class="keyword">const</span>;
-<a name="l00200"></a>00200 raw_digits_t *realloc(raw_digits_t *data, <span class="keywordtype">size_t</span> new_requested_length)
-<a name="l00201"></a>00201 <span class="keyword">const</span>;
-<a name="l00202"></a>00202 <span class="keywordtype">void</span> dealloc(raw_digits_t *data) <span class="keyword">const</span>;
-<a name="l00203"></a>00203
-<a name="l00210"></a>00210 <span class="keyword">virtual</span> digit_t* raw_allocate(<span class="keywordtype">size_t</span> requested_length) <span class="keyword">const</span> = 0;
-<a name="l00211"></a>00211 <span class="keyword">virtual</span> digit_t* raw_reallocate(digit_t *data, <span class="keywordtype">size_t</span> new_requested_length)<span class="keyword"></span>
-<a name="l00212"></a>00212 <span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
-<a name="l00213"></a>00213 <span class="keyword">virtual</span> <span class="keywordtype">void</span> raw_deallocate(digit_t *data, <span class="keywordtype">size_t</span> length) <span class="keyword">const</span> = 0;
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="keyword">virtual</span> raw_digits_t *zerodata() <span class="keyword">const</span> = 0;
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 raw_digits_t *raw_data;
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(base_digitmanager_t&amp; p1, base_digitmanager_t&amp; p2);
-<a name="l00221"></a>00221 };
-<a name="l00222"></a>00222
-<a name="l00225"></a>00225 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Alloc = std::allocator&lt;digit_t&gt;, <span class="keywordtype">bool</span> Threadsafe = true, <span class="keywordtype">bool</span>
-<a name="l00226"></a>00226 Secure = false&gt;
-<a name="l00227"></a>00227 <span class="keyword">class </span>digitmanager_t: <span class="keyword">public</span> base_digitmanager_t {
-<a name="l00228"></a>00228 BOOST_STATIC_ASSERT(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> Alloc::value_type) == <span class="keyword">sizeof</span>(digit_t));
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keyword">public</span>:
-<a name="l00231"></a>00231 digitmanager_t() { reset(zerodata()); }
-<a name="l00232"></a>00232 digitmanager_t(<span class="keywordtype">size_t</span> requested_length, <span class="keywordtype">bool</span> readonly = <span class="keyword">false</span>)
-<a name="l00233"></a>00233 { <span class="keywordflow">if</span> (requested_length &gt; 0) reset(alloc(requested_length, readonly)); }
-<a name="l00234"></a>00234 digitmanager_t(<span class="keyword">const</span> base_digitmanager_t&amp; copy) {
-<a name="l00235"></a>00235 base_digitmanager_t&amp; c(const_cast&lt;base_digitmanager_t&amp;&gt;(copy));
-<a name="l00236"></a>00236 reset(c.get()); }
-<a name="l00237"></a>00237 <span class="keyword">virtual</span> ~digitmanager_t() { dec(); }
-<a name="l00238"></a>00238
-<a name="l00239"></a>00239 <span class="keyword">virtual</span> base_digitmanager_t *new_of_type(base_digitmanager_t *copy = 0)<span class="keyword"></span>
-<a name="l00240"></a>00240 <span class="keyword"> const </span>{ <span class="keywordflow">if</span> (copy != 0) <span class="keywordflow">return</span> <span class="keyword">new</span> digitmanager_t&lt;Alloc, Threadsafe,
-<a name="l00241"></a>00241 Secure&gt;(*copy); <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">new</span> digitmanager_t&lt;Alloc, Threadsafe,
-<a name="l00242"></a>00242 Secure&gt;; }
-<a name="l00243"></a>00243 <span class="keyword">virtual</span> <span class="keywordtype">void</span> aftermod() { <span class="keywordflow">if</span> (Threadsafe &amp;&amp; raw_data &amp;&amp; raw_data-&gt;copies() &gt;
-<a name="l00244"></a>00244 1) resize_and_uniquify(); }
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keyword">protected</span>:
-<a name="l00247"></a>00247 <span class="keyword">virtual</span> digit_t* raw_allocate(<span class="keywordtype">size_t</span> requested_length)<span class="keyword"> const </span>{
-<a name="l00248"></a>00248 <span class="keywordflow">return</span> allocator.allocate(requested_length); }
-<a name="l00249"></a>00249 <span class="keyword">virtual</span> <span class="keywordtype">void</span> raw_deallocate(digit_t *data, <span class="keywordtype">size_t</span> length)<span class="keyword"> const </span>{
-<a name="l00250"></a>00250 <span class="keywordflow">if</span> (Secure) memset(data, 0, length * <span class="keyword">sizeof</span>(digit_t));
-<a name="l00251"></a>00251 allocator.deallocate(data, length); }
-<a name="l00252"></a>00252 <span class="keyword">virtual</span> raw_digits_t *zerodata()<span class="keyword"> const </span>{ <span class="keyword">static</span> digitmanager_t z(1, <span class="keyword">true</span>);
-<a name="l00253"></a>00253 <span class="keywordflow">return</span> z.raw_data; }
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 <span class="keyword">static</span> Alloc allocator;
-<a name="l00256"></a>00256 };
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt;
-<a name="l00259"></a>00259 Alloc digitmanager_t&lt;Alloc, Threadsafe, Secure&gt;::allocator;
-<a name="l00260"></a>00260
-<a name="l00262"></a>00262
-<a name="l00264"></a>00264 <span class="keyword">struct </span>data_t {
-<a name="l00265"></a>00265 <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t&lt;data_t&gt;</a> divide_t;
-<a name="l00266"></a>00266
-<a name="l00267"></a>00267 <span class="keywordtype">size_t</span> length;
-<a name="l00268"></a>00268 <span class="keywordtype">bool</span> negative;
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270 <span class="keyword">explicit</span> data_t(base_digitmanager_t &amp;holder, <span class="keywordtype">size_t</span> len = 1, <span class="keywordtype">bool</span> neg =
-<a name="l00271"></a>00271 <span class="keyword">false</span>);
-<a name="l00272"></a>00272 <span class="keyword">explicit</span> data_t(base_digitmanager_t *holder);
-<a name="l00273"></a>00273 data_t(<span class="keyword">const</span> data_t&amp; copy);
-<a name="l00274"></a>00274 data_t(<span class="keyword">const</span> data_t&amp; copy, <span class="keywordtype">bool</span> negative);
-<a name="l00275"></a>00275 ~data_t();
-<a name="l00276"></a>00276
-<a name="l00277"></a>00277 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00278"></a>00278 data_t(base_digitmanager_t *holder_to_copy, T n, <span class="keywordtype">size_t</span> prealloc = 0,
-<a name="l00279"></a>00279 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;T&gt; &gt;::type* = 0);
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281 base_digitmanager_t *new_holder() <span class="keyword">const</span>;
-<a name="l00282"></a>00282 <span class="keyword">const</span> base_digitmanager_t *holder() <span class="keyword">const</span>;
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284 data_t duplicate() <span class="keyword">const</span>;
-<a name="l00285"></a>00285 <span class="keywordtype">void</span> duplicate_data(<span class="keyword">const</span> data_t copy);
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 <span class="keywordtype">void</span> reset(data_t p);
-<a name="l00288"></a>00288 data_t&amp; operator=(<span class="keyword">const</span> data_t&amp; p);
-<a name="l00289"></a>00289
-<a name="l00290"></a>00290 <span class="keywordtype">bool</span> same_storage(<span class="keyword">const</span> data_t n) <span class="keyword">const</span>;
-<a name="l00291"></a>00291 <span class="keywordtype">bool</span> is_unique() <span class="keyword">const</span>;
-<a name="l00292"></a>00292 <span class="keywordtype">void</span> make_unique();
-<a name="l00293"></a>00293
-<a name="l00294"></a>00294 <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keywordtype">int</span> n);
-<a name="l00295"></a>00295 <span class="keywordtype">void</span> set_signed(boost::intmax_t n);
-<a name="l00296"></a>00296 <span class="keywordtype">void</span> set_unsigned(boost::uintmax_t n, <span class="keywordtype">bool</span> neg = <span class="keyword">false</span>);
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 digit_t get_digit(<span class="keywordtype">size_t</span> i) <span class="keyword">const</span>;
-<a name="l00299"></a>00299 digit_t operator[](<span class="keywordtype">size_t</span> i);
-<a name="l00300"></a>00300 digit_t operator[](<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> get_digit(i); }
-<a name="l00301"></a>00301 digit_t *digits();
-<a name="l00302"></a>00302 <span class="keyword">const</span> digit_t *digits() <span class="keyword">const</span>;
-<a name="l00303"></a>00303 <span class="keywordtype">size_t</span> max_length() <span class="keyword">const</span>;
-<a name="l00304"></a>00304 <span class="keywordtype">bool</span> is_fixed_length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (dataholder-&gt;fixed_length() &gt; 0); }
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="keywordtype">bool</span> is_zero() <span class="keyword">const</span>;
-<a name="l00307"></a>00307 <span class="keyword">const</span> data_t <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>() <span class="keyword">const</span>;
-<a name="l00308"></a>00308 <span class="keyword">const</span> data_t negate() <span class="keyword">const</span>;
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310 <span class="keywordtype">void</span> extend(<span class="keywordtype">size_t</span> new_length = 0, <span class="keywordtype">bool</span> skip_mod = <span class="keyword">false</span>);
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312 <span class="keywordtype">void</span> from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> length, <span class="keywordtype">size_t</span> base);
-<a name="l00313"></a>00313 <span class="keywordtype">void</span> from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base);
-<a name="l00314"></a>00314 <span class="keywordtype">void</span> from_string(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00315"></a>00315 <span class="keywordtype">void</span> from_binary(<a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <span class="keywordtype">size_t</span> bits = 0);
-<a name="l00316"></a>00316
-<a name="l00323"></a>00323
-<a name="l00324"></a>00324 <span class="keywordtype">void</span> beginmod(<span class="keywordtype">size_t</span> requested_size = 0, <span class="keywordtype">bool</span> extend = <span class="keyword">false</span>);
-<a name="l00325"></a>00325 <span class="keywordtype">void</span> endmod(<span class="keywordtype">bool</span> allow_negative_zero = <span class="keyword">false</span>);
-<a name="l00326"></a>00326 <span class="keywordtype">void</span> beginendmod() { beginmod(); digits(); endmod(<span class="keyword">true</span>); }
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329 <span class="keywordtype">int</span> sign(<span class="keywordtype">bool</span> signed_zero = <span class="keyword">false</span>) <span class="keyword">const</span>;
-<a name="l00330"></a>00330 <span class="keywordtype">bool</span> is_odd() <span class="keyword">const</span>;
-<a name="l00331"></a>00331 <span class="keywordtype">bool</span> is_even() <span class="keyword">const</span>;
-<a name="l00332"></a>00332 <span class="keywordtype">bool</span> is_nan()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (dataholder-&gt;get() == 0); }
-<a name="l00333"></a>00333 <span class="keywordtype">size_t</span> hex_digits() <span class="keyword">const</span>;
-<a name="l00334"></a>00334
-<a name="l00335"></a>00335 data_t&amp; operator++(); <span class="comment">// Preincrement</span>
-<a name="l00336"></a>00336 data_t&amp; operator--(); <span class="comment">// Predecrement</span>
-<a name="l00337"></a>00337 data_t operator++(<span class="keywordtype">int</span>); <span class="comment">// Postincrement</span>
-<a name="l00338"></a>00338 data_t operator--(<span class="keywordtype">int</span>); <span class="comment">// Postdecrement</span>
-<a name="l00339"></a>00339
-<a name="l00340"></a>00340 <span class="keywordtype">bool</span> operator!()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_zero(); }
-<a name="l00341"></a>00341 data_t <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-</a>() <span class="keyword">const</span>;
-<a name="l00342"></a>00342 data_t&amp; <a class="code" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a>() { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00343"></a>00343 <span class="keyword">const</span> data_t&amp; <a class="code" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00344"></a>00344 <span class="comment">// Fixed-size types can also implement operator~</span>
-<a name="l00345"></a>00345
-<a name="l00346"></a>00346 data_t&amp; operator+=(<span class="keyword">const</span> data_t b);
-<a name="l00347"></a>00347 data_t&amp; operator-=(<span class="keyword">const</span> data_t b);
-<a name="l00348"></a>00348 data_t&amp; operator*=(<span class="keyword">const</span> data_t b);
-<a name="l00349"></a>00349 data_t&amp; operator/=(<span class="keyword">const</span> data_t b);
-<a name="l00350"></a>00350 data_t&amp; operator%=(<span class="keyword">const</span> data_t b);
-<a name="l00351"></a>00351
-<a name="l00352"></a>00352 data_t&amp; operator&amp;=(<span class="keyword">const</span> data_t n);
-<a name="l00353"></a>00353 data_t&amp; operator|=(<span class="keyword">const</span> data_t n);
-<a name="l00354"></a>00354 data_t&amp; operator^=(<span class="keyword">const</span> data_t n);
-<a name="l00355"></a>00355 data_t&amp; operator&lt;&lt;=(<span class="keywordtype">size_t</span> shift);
-<a name="l00356"></a>00356 data_t&amp; operator&gt;&gt;=(<span class="keywordtype">size_t</span> shift);
-<a name="l00357"></a>00357
-<a name="l00358"></a>00358 <span class="keyword">static</span> <span class="keywordtype">size_t</span> bits_to_digits(<span class="keywordtype">size_t</span> bits) { <span class="keywordflow">return</span> (bits + bits_per_digit -
-<a name="l00359"></a>00359 1) / bits_per_digit; }
-<a name="l00360"></a>00360
-<a name="l00362"></a>00362 <span class="keyword">private</span>:
-<a name="l00363"></a>00363 digit_t *digits(<span class="keywordtype">bool</span>) { <span class="keywordflow">return</span> (*dataholder)-&gt;digits; }
-<a name="l00364"></a>00364
-<a name="l00365"></a>00365 base_digitmanager_t * <span class="keyword">const</span> dataholder;
-<a name="l00366"></a>00366 <span class="keyword">const</span> <span class="keywordtype">bool</span> holder_managed_elsewhere;
-<a name="l00367"></a>00367 <span class="keywordtype">size_t</span> modcount;
-<a name="l00368"></a>00368 <span class="keywordtype">size_t</span> mod_requested_size;
-<a name="l00369"></a>00369 <span class="keywordtype">bool</span> mod_requested_extend;
-<a name="l00370"></a>00370 <span class="keywordtype">bool</span> call_endmod_hook;
-<a name="l00371"></a>00371
-<a name="l00372"></a>00372 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(data_t&amp; p1, data_t&amp; p2);
-<a name="l00373"></a>00373 };
-<a name="l00374"></a>00374
-<a name="l00375"></a>00375 <span class="comment">// Conversion functions</span>
-<a name="l00376"></a>00376 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; T <a class="code" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">to</a>(<span class="keyword">const</span> data_t n, <span class="keyword">typename</span>
-<a name="l00377"></a>00377 boost::enable_if&lt;boost::is_integral&lt;T&gt; &gt;::type* = 0);
-<a name="l00378"></a>00378 std::string <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> base = 10, <span class="keywordtype">bool</span> uppercase = <span class="keyword">false</span>);
-<a name="l00379"></a>00379 <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> bits = 0);
-<a name="l00380"></a>00380
-<a name="l00381"></a>00381 <span class="comment">// Bit-manipulation functions</span>
-<a name="l00382"></a>00382 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> bit_index);
-<a name="l00383"></a>00383 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(data_t&amp; n, <span class="keywordtype">size_t</span> bit_index);
-<a name="l00384"></a>00384 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(data_t&amp; n, <span class="keywordtype">size_t</span> bit_index);
-<a name="l00385"></a>00385 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> valueIfZero = 0);
-<a name="l00386"></a>00386 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> valueIfZero = 0);
-<a name="l00387"></a>00387
-<a name="l00388"></a>00388 <span class="comment">// Random and prime number functions</span>
-<a name="l00389"></a>00389 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(<span class="keyword">const</span> data_t n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>);
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391 <span class="comment">// Comparison Operators</span>
-<a name="l00392"></a>00392 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00393"></a>00393 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00394"></a>00394 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00395"></a>00395 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00396"></a>00396 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00397"></a>00397 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00398"></a>00398
-<a name="l00399"></a>00399 <span class="comment">// Mathematical operators</span>
-<a name="l00400"></a>00400 data_t <a class="code" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00401"></a>00401 data_t <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00402"></a>00402 data_t <a class="code" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">operator*</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00403"></a>00403 data_t <a class="code" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">operator/</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00404"></a>00404 data_t <a class="code" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">operator%</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00405"></a>00405
-<a name="l00406"></a>00406 <span class="comment">// Bitwise operators</span>
-<a name="l00407"></a>00407 data_t <a class="code" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">operator&amp;</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00408"></a>00408 data_t <a class="code" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">operator|</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00409"></a>00409 data_t <a class="code" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">operator^</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2);
-<a name="l00410"></a>00410
-<a name="l00411"></a>00411 <span class="comment">// Shift operators</span>
-<a name="l00412"></a>00412 data_t <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">operator&lt;&lt;</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> by);
-<a name="l00413"></a>00413 data_t <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(<span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> by);
-<a name="l00414"></a>00414
-<a name="l00415"></a>00415 <span class="comment">// Miscellaneous</span>
-<a name="l00416"></a>00416 data_t <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(<span class="keyword">const</span> data_t n);
-<a name="l00417"></a>00417 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(<span class="keyword">const</span> data_t n);
-<a name="l00418"></a>00418 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2, <span class="keywordtype">bool</span> ignoresign = <span class="keyword">false</span>);
-<a name="l00419"></a>00419
-<a name="l00420"></a>00420 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t exponent);
-<a name="l00421"></a>00421 <span class="keywordtype">void</span> pow2(data_t&amp; target, <span class="keywordtype">size_t</span> exponent);
-<a name="l00422"></a>00422 <span class="keywordtype">void</span> factorial(data_t&amp; target, <span class="keywordtype">size_t</span> n);
-<a name="l00423"></a>00423
-<a name="l00424"></a>00424 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(data_t&amp; target, <span class="keyword">const</span> data_t n);
-<a name="l00425"></a>00425
-<a name="l00426"></a>00426 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(data_t&amp; target, <span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2);
-<a name="l00427"></a>00427 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(data_t&amp; target, <span class="keyword">const</span> data_t num1, <span class="keyword">const</span> data_t num2);
-<a name="l00428"></a>00428 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t modulus);
-<a name="l00429"></a>00429
-<a name="l00430"></a>00430 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t by, <span class="keyword">const</span> data_t
-<a name="l00431"></a>00431 modulus);
-<a name="l00432"></a>00432 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t modulus);
-<a name="l00433"></a>00433 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t exponent, <span class="keyword">const</span> data_t
-<a name="l00434"></a>00434 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(data_t&amp; target, <span class="keyword">const</span> data_t n);
-<a name="l00437"></a>00437 data_t::divide_t <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(<span class="keyword">const</span> data_t d1, <span class="keyword">const</span> data_t d2);
-<a name="l00438"></a>00438 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(data_t&amp; qtarget, data_t&amp; rtarget, <span class="keyword">const</span> data_t d1, <span class="keyword">const</span> data_t d2);
-<a name="l00439"></a>00439
-<a name="l00440"></a>00440 <span class="keywordtype">size_t</span> log10_bits(<span class="keywordtype">size_t</span> bits);
-<a name="l00441"></a>00441
-<a name="l00443"></a>00443 } <span class="comment">// namespace detail</span>
-<a name="l00444"></a>00444 } <span class="comment">// namespace xint</span>
-<a name="l00445"></a>00445 } <span class="comment">// namespace boost</span>
-<a name="l00446"></a>00446
-<a name="l00448"></a>00448 <span class="comment">// Function templates</span>
-<a name="l00449"></a>00449
-<a name="l00450"></a>00450 <span class="preprocessor">#include &quot;../exceptions.hpp&quot;</span>
-<a name="l00451"></a>00451
-<a name="l00452"></a>00452 <span class="keyword">namespace </span>boost {
-<a name="l00453"></a>00453 <span class="keyword">namespace </span>xint {
-<a name="l00454"></a>00454 <span class="keyword">namespace </span>detail {
-<a name="l00456"></a>00456
-<a name="l00457"></a>00457 <span class="keywordtype">size_t</span> log2_base(boost::uintmax_t n, <span class="keywordtype">size_t</span> maxbits);
-<a name="l00458"></a>00458
-<a name="l00459"></a>00459 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00460"></a>00460 data_t::data_t(base_digitmanager_t *holder, T n, <span class="keywordtype">size_t</span> prealloc, <span class="keyword">typename</span>
-<a name="l00461"></a>00461 boost::enable_if&lt;boost::is_integral&lt;T&gt; &gt;::type*): dataholder(holder),
-<a name="l00462"></a>00462 holder_managed_elsewhere(false), modcount(0)
-<a name="l00463"></a>00463 {
-<a name="l00464"></a>00464 beginmod(prealloc);
-<a name="l00465"></a>00465 <span class="keywordflow">if</span> (std::numeric_limits&lt;T&gt;::is_signed) set_signed(n);
-<a name="l00466"></a>00466 <span class="keywordflow">else</span> set_unsigned(n);
-<a name="l00467"></a>00467 endmod();
-<a name="l00468"></a>00468 }
-<a name="l00469"></a>00469
-<a name="l00470"></a>00470 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00471"></a>00471 <span class="keywordtype">size_t</span> log2_helper(<span class="keyword">const</span> T n,
-<a name="l00472"></a>00472 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_unsigned&lt;T&gt; &gt;::type* = 0)
-<a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keywordflow">return</span> log2_base(n, std::numeric_limits&lt;T&gt;::digits);
-<a name="l00475"></a>00475 }
-<a name="l00476"></a>00476
-<a name="l00477"></a>00477 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00478"></a>00478 <span class="keywordtype">size_t</span> log2_helper(<span class="keyword">const</span> T n,
-<a name="l00479"></a>00479 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_signed&lt;T&gt; &gt;::type* = 0)
-<a name="l00480"></a>00480 {
-<a name="l00481"></a>00481 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::make_unsigned&lt;T&gt;::type uT;
-<a name="l00482"></a>00482 T nn = (n &lt; 0 ? -n : n);
-<a name="l00483"></a>00483 <span class="keywordflow">return</span> log2_base(static_cast&lt;uT&gt;(nn), std::numeric_limits&lt;T&gt;::digits);
-<a name="l00484"></a>00484 }
-<a name="l00485"></a>00485
-<a name="l00486"></a>00486 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00487"></a>00487 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(<span class="keyword">const</span> T n,
-<a name="l00488"></a>00488 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;T&gt; &gt;::type* = 0)
-<a name="l00489"></a>00489 {
-<a name="l00490"></a>00490 <span class="keywordflow">return</span> log2_helper(n);
-<a name="l00491"></a>00491 }
-<a name="l00492"></a>00492
-<a name="l00493"></a>00493 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00494"></a>00494 T <a class="code" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">to</a>(<span class="keyword">const</span> data_t n, <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;T&gt; &gt;::type*) {
-<a name="l00495"></a>00495 <span class="keyword">using</span> std::numeric_limits;
-<a name="l00496"></a>00496
-<a name="l00497"></a>00497 <span class="comment">// We&#39;ve got to use an unfixed manager, rather than n&#39;s manager, because</span>
-<a name="l00498"></a>00498 <span class="comment">// the first n might be a fixed_integer_t which would screw up later calls</span>
-<a name="l00499"></a>00499 <span class="comment">// for other types.</span>
-<a name="l00500"></a>00500 <span class="keyword">static</span> digitmanager_t&lt;&gt; unfixed_manager;
-<a name="l00501"></a>00501 <span class="keyword">static</span> <span class="keyword">const</span> data_t min(unfixed_manager.new_of_type(),
-<a name="l00502"></a>00502 (numeric_limits&lt;T&gt;::min)());
-<a name="l00503"></a>00503 <span class="keyword">static</span> <span class="keyword">const</span> data_t max(unfixed_manager.new_of_type(),
-<a name="l00504"></a>00504 (numeric_limits&lt;T&gt;::max)());
-<a name="l00505"></a>00505 <span class="keywordflow">if</span> (n &lt; min || n &gt; max) <span class="keywordflow">throw</span> exceptions::too_big(<span class="stringliteral">&quot;value out of range for &quot;</span>
-<a name="l00506"></a>00506 <span class="stringliteral">&quot;requested conversion&quot;</span>);
-<a name="l00507"></a>00507
-<a name="l00508"></a>00508 T rval = 0, shift = T(digit_overflowbit);
-<a name="l00509"></a>00509 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x = 0; x &lt; n.length; ++x) {
-<a name="l00510"></a>00510 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) &gt; <span class="keyword">sizeof</span>(digit_t)) rval *= shift;
-<a name="l00511"></a>00511 rval += <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(n[n.length - x - 1]);
-<a name="l00512"></a>00512 }
-<a name="l00513"></a>00513 <span class="keywordflow">if</span> (n.negative) rval *= -1;
-<a name="l00514"></a>00514 <span class="keywordflow">return</span> rval;
-<a name="l00515"></a>00515 }
-<a name="l00516"></a>00516
-<a name="l00517"></a>00517 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits&gt;
-<a name="l00518"></a>00518 <span class="keyword">inline</span> std::basic_ostream&lt;charT,traits&gt;&amp; <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">operator&lt;&lt;</a>(std::basic_ostream&lt;charT,
-<a name="l00519"></a>00519 traits&gt;&amp; out, <span class="keyword">const</span> data_t n)
-<a name="l00520"></a>00520 {
-<a name="l00521"></a>00521 <span class="keywordtype">int</span> base=((out.flags() &amp; std::ios::hex) ? 16
-<a name="l00522"></a>00522 : (out.flags() &amp; std::ios::oct) ? 8
-<a name="l00523"></a>00523 : 10);
-<a name="l00524"></a>00524 <span class="keywordtype">bool</span> upperCase=(out.flags() &amp; std::ios::uppercase ? <span class="keyword">true</span> : <span class="keyword">false</span>);
-<a name="l00525"></a>00525
-<a name="l00526"></a>00526 <span class="keywordtype">int</span> nsign = (n.is_zero() ? 0 : n.negative ? -1 : 1);
-<a name="l00527"></a>00527 <span class="keywordflow">if</span> ((out.flags() &amp; std::ios::showpos) &amp;&amp; nsign &gt;= 0) out &lt;&lt; <span class="stringliteral">&quot;+&quot;</span>;
-<a name="l00528"></a>00528
-<a name="l00529"></a>00529 <span class="keywordflow">if</span> (out.flags() &amp; std::ios::showbase) {
-<a name="l00530"></a>00530 <span class="keywordflow">if</span> (nsign &lt; 0) out &lt;&lt; <span class="stringliteral">&quot;-&quot;</span>;
-<a name="l00531"></a>00531
-<a name="l00532"></a>00532 <span class="keywordflow">if</span> (base==16 &amp;&amp; upperCase) out &lt;&lt; <span class="stringliteral">&quot;0X&quot;</span>;
-<a name="l00533"></a>00533 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==16) out &lt;&lt; <span class="stringliteral">&quot;0x&quot;</span>;
-<a name="l00534"></a>00534 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==8) out &lt;&lt; <span class="stringliteral">&quot;0&quot;</span>;
-<a name="l00535"></a>00535
-<a name="l00536"></a>00536 out &lt;&lt; <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(n.abs(), base, upperCase);
-<a name="l00537"></a>00537 } <span class="keywordflow">else</span> {
-<a name="l00538"></a>00538 out &lt;&lt; <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(n, base, upperCase);
-<a name="l00539"></a>00539 }
-<a name="l00540"></a>00540 <span class="keywordflow">return</span> out;
-<a name="l00541"></a>00541 }
-<a name="l00542"></a>00542
-<a name="l00543"></a>00543 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits&gt;
-<a name="l00544"></a>00544 <span class="keyword">inline</span> std::basic_istream&lt;charT,traits&gt;&amp; <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(std::basic_istream&lt;charT,
-<a name="l00545"></a>00545 traits&gt;&amp; in, data_t&amp; n)
-<a name="l00546"></a>00546 {
-<a name="l00547"></a>00547 <span class="keywordtype">int</span> hex=(in.flags() &amp; std::ios::hex) ? 1 : 0;
-<a name="l00548"></a>00548 <span class="keywordtype">int</span> dec=(in.flags() &amp; std::ios::dec) ? 1 : 0;
-<a name="l00549"></a>00549 <span class="keywordtype">int</span> oct=(in.flags() &amp; std::ios::oct) ? 1 : 0;
-<a name="l00550"></a>00550 <span class="keywordtype">int</span> count=hex+dec+oct;
-<a name="l00551"></a>00551
-<a name="l00552"></a>00552 <span class="keywordtype">size_t</span> base=<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>;
-<a name="l00553"></a>00553 <span class="keywordflow">if</span> (count==1) {
-<a name="l00554"></a>00554 <span class="keywordflow">if</span> (hex) base=16;
-<a name="l00555"></a>00555 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (oct) base=8;
-<a name="l00556"></a>00556 <span class="keywordflow">else</span> base=10;
-<a name="l00557"></a>00557 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count&gt;1) base=10;
-<a name="l00558"></a>00558 <span class="comment">// else auto-base</span>
-<a name="l00559"></a>00559
-<a name="l00560"></a>00560 std::string s;
-<a name="l00561"></a>00561 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">&#39;+&#39;</span>) {
-<a name="l00562"></a>00562 in.ignore();
-<a name="l00563"></a>00563 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">&#39;-&#39;</span>) {
-<a name="l00564"></a>00564 in.ignore();
-<a name="l00565"></a>00565 s.push_back(<span class="charliteral">&#39;-&#39;</span>);
-<a name="l00566"></a>00566 }
-<a name="l00567"></a>00567
-<a name="l00568"></a>00568 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>) {
-<a name="l00569"></a>00569 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">&#39;0&#39;</span>) {
-<a name="l00570"></a>00570 in.ignore();
-<a name="l00571"></a>00571 <span class="keywordtype">int</span> c=in.peek();
-<a name="l00572"></a>00572 <span class="keywordflow">if</span> (c==<span class="charliteral">&#39;x&#39;</span> || c==<span class="charliteral">&#39;X&#39;</span>) {
-<a name="l00573"></a>00573 in.ignore();
-<a name="l00574"></a>00574 base=16;
-<a name="l00575"></a>00575 } <span class="keywordflow">else</span> base=8;
-<a name="l00576"></a>00576 } <span class="keywordflow">else</span> base=10;
-<a name="l00577"></a>00577 }
-<a name="l00578"></a>00578
-<a name="l00579"></a>00579 <span class="keywordflow">while</span> (in) {
-<a name="l00580"></a>00580 <span class="keywordtype">int</span> c=in.peek();
-<a name="l00581"></a>00581 <span class="keywordflow">if</span> ((base==8 &amp;&amp; (c&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;7&#39;</span>)) ||
-<a name="l00582"></a>00582 (base==10 &amp;&amp; (c&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;9&#39;</span>)) ||
-<a name="l00583"></a>00583 (base==16 &amp;&amp; ((c&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;9&#39;</span>) || (c&gt;=<span class="charliteral">&#39;a&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;f&#39;</span>) ||
-<a name="l00584"></a>00584 (c&gt;=<span class="charliteral">&#39;A&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;F&#39;</span>))))
-<a name="l00585"></a>00585 {
-<a name="l00586"></a>00586 in.ignore();
-<a name="l00587"></a>00587 s.push_back(<span class="keywordtype">char</span>(c));
-<a name="l00588"></a>00588 } <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
-<a name="l00589"></a>00589 }
-<a name="l00590"></a>00590
-<a name="l00591"></a>00591 <span class="keywordflow">try</span> {
-<a name="l00592"></a>00592 n.from_string(s, base);
-<a name="l00593"></a>00593 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00594"></a>00594 <span class="comment">// Catch invalid strings</span>
-<a name="l00595"></a>00595 in.setstate(std::ios::failbit);
-<a name="l00596"></a>00596 }
-<a name="l00597"></a>00597
-<a name="l00598"></a>00598 <span class="keywordflow">return</span> in;
-<a name="l00599"></a>00599 }
-<a name="l00600"></a>00600
-<a name="l00602"></a>00602 } <span class="comment">// namespace detail</span>
-<a name="l00603"></a>00603 } <span class="comment">// namespace xint</span>
-<a name="l00604"></a>00604 } <span class="comment">// namespace boost</span>
-<a name="l00605"></a>00605
-<a name="l00606"></a>00606 <span class="keyword">namespace </span>boost {
-<a name="l00607"></a>00607 <span class="keyword">namespace </span>xint {
-<a name="l00609"></a><a class="code" href="classboost_1_1xint_1_1any__integer.html">00609</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a> {
-<a name="l00610"></a>00610 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l00611"></a>00611 <span class="preprocessor"></span> <span class="keyword">public</span>:
-<a name="l00612"></a>00612 detail::data_t&amp; _data() { <span class="keywordflow">return</span> data; }
-<a name="l00613"></a>00613 <span class="keyword">const</span> detail::data_t&amp; _data()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }
-<a name="l00614"></a>00614
-<a name="l00615"></a>00615 <span class="keywordtype">size_t</span> _get_length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.length; }
-<a name="l00616"></a>00616 detail::digit_t _get_digit(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data[index]; }
-<a name="l00617"></a>00617 <span class="keywordtype">bool</span> _is_fixed()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_fixed_length(); }
-<a name="l00618"></a>00618
-<a name="l00619"></a>00619 <span class="keyword">protected</span>:
-<a name="l00620"></a>00620 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(detail::base_digitmanager_t &amp;holder, <span class="keywordtype">size_t</span> len, <span class="keywordtype">bool</span> neg =
-<a name="l00621"></a>00621 <span class="keyword">false</span>): data(holder, len, neg) { }
-<a name="l00622"></a>00622 <span class="keywordtype">bool</span> _is_nan()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_nan(); }
-<a name="l00623"></a>00623
-<a name="l00624"></a>00624 detail::data_t data;
-<a name="l00625"></a>00625 <span class="preprocessor"> #endif</span>
-<a name="l00626"></a>00626 <span class="preprocessor"></span>};
-<a name="l00627"></a>00627
-<a name="l00628"></a><a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">00628</a> <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>;
-<a name="l00629"></a>00629
-<a name="l00630"></a>00630 } <span class="comment">// namespace xint</span>
-<a name="l00631"></a>00631 } <span class="comment">// namespace boost</span>
-<a name="l00632"></a>00632
-<a name="l00633"></a>00633 <span class="preprocessor">#ifndef BOOST_XINT_COMPILED_LIB</span>
-<a name="l00634"></a>00634 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;../exceptions.hpp&quot;</span>
-<a name="l00635"></a>00635 <span class="preprocessor"> #include &quot;../random.hpp&quot;</span>
-<a name="l00636"></a>00636 <span class="preprocessor"> #include &quot;<a class="code" href="bitqueue_8hpp.html" title="Contains the bitqueue_t class, used internally.">bitqueue.hpp</a>&quot;</span>
-<a name="l00637"></a>00637 <span class="preprocessor"> #ifdef _WIN32</span>
-<a name="l00638"></a>00638 <span class="preprocessor"></span><span class="preprocessor"> #define STRICT</span>
-<a name="l00639"></a>00639 <span class="preprocessor"></span><span class="preprocessor"> #define WIN32_LEAN_AND_MEAN</span>
-<a name="l00640"></a>00640 <span class="preprocessor"></span><span class="preprocessor"> #define NOMINMAX</span>
-<a name="l00641"></a>00641 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;windows.h&gt;</span>
-<a name="l00642"></a>00642 <span class="preprocessor"> #endif</span>
-<a name="l00643"></a>00643 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;sstream&gt;</span>
-<a name="l00644"></a>00644 <span class="preprocessor"> #include &lt;fstream&gt;</span>
-<a name="l00645"></a>00645 <span class="preprocessor"> #include &lt;ctime&gt;</span>
-<a name="l00646"></a>00646 <span class="preprocessor"> #include &lt;boost/scoped_array.hpp&gt;</span>
-<a name="l00647"></a><a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">00647</a> <span class="preprocessor"> #define BOOST_XINT_INLINE inline</span>
-<a name="l00648"></a>00648 <span class="preprocessor"></span>
-<a name="l00649"></a><a class="code" href="internals_8hpp.html#a7621c4fd1f5760b878ca8f5e5e6bb4c2">00649</a> <span class="preprocessor"> #define BOOST_XINT_FROM_HEADER</span>
-<a name="l00650"></a>00650 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="data__t_8cpp.html" title="Contains the function definitions for data_t and raw_digits_t.">data_t.cpp</a>&quot;</span>
-<a name="l00651"></a>00651 <span class="preprocessor"> #include &quot;<a class="code" href="compare_8cpp.html" title="Contains the definitions for the comparison functions.">compare.cpp</a>&quot;</span>
-<a name="l00652"></a>00652 <span class="preprocessor"> #include &quot;<a class="code" href="shift_8cpp.html" title="Contains the bit-shifting function definitions.">shift.cpp</a>&quot;</span>
-<a name="l00653"></a>00653 <span class="preprocessor"> #include &quot;<a class="code" href="bitfunctions_8cpp.html" title="Contains the definitions for the bit-manipulation functions.">bitfunctions.cpp</a>&quot;</span>
-<a name="l00654"></a>00654 <span class="preprocessor"> #include &quot;<a class="code" href="andorxor_8cpp.html" title="Contains the functions for ANDing, ORing, and XORing.">andorxor.cpp</a>&quot;</span>
-<a name="l00655"></a>00655 <span class="preprocessor"> #include &quot;<a class="code" href="addsubtract_8cpp.html" title="Contains the definitions of the addition and subtraction functions.">addsubtract.cpp</a>&quot;</span>
-<a name="l00656"></a>00656 <span class="preprocessor"> #include &quot;<a class="code" href="multiply_8cpp.html" title="Contains the multiplication and squaring functions.">multiply.cpp</a>&quot;</span>
-<a name="l00657"></a>00657 <span class="preprocessor"> #include &quot;<a class="code" href="divide_8cpp.html" title="Contains the definitions of the divide function, and its supporting functions.">divide.cpp</a>&quot;</span>
-<a name="l00658"></a>00658 <span class="preprocessor"> #include &quot;<a class="code" href="powers_8cpp.html" title="Contains functions related to powers of a number.">powers.cpp</a>&quot;</span>
-<a name="l00659"></a>00659 <span class="preprocessor"> #include &quot;<a class="code" href="roots_8cpp.html" title="Contains the square-root function definition, and any future root-related ones.">roots.cpp</a>&quot;</span>
-<a name="l00660"></a>00660 <span class="preprocessor"> #include &quot;<a class="code" href="monty_8cpp.html" title="Contains the Montgomery Reduction functions.">monty.cpp</a>&quot;</span>
-<a name="l00661"></a>00661 <span class="preprocessor"> #include &quot;<a class="code" href="modular_8cpp.html" title="Contains the modular math functions.">modular.cpp</a>&quot;</span>
-<a name="l00662"></a>00662 <span class="preprocessor"> #include &quot;<a class="code" href="gcd_8cpp.html" title="Contains functions using the Greatest Common Denominator algorithm.">gcd.cpp</a>&quot;</span>
-<a name="l00663"></a>00663 <span class="preprocessor"> #include &quot;<a class="code" href="convert_8cpp.html" title="Contains the conversion functions.">convert.cpp</a>&quot;</span>
-<a name="l00664"></a>00664 <span class="preprocessor"> #include &quot;<a class="code" href="prime_8cpp.html" title="Contains the function definitions for the prime number functions.">prime.cpp</a>&quot;</span>
-<a name="l00665"></a>00665 <span class="preprocessor"> #include &quot;<a class="code" href="random_8cpp.html" title="Contains the function definitions for the random number functions.">random.cpp</a>&quot;</span>
-<a name="l00666"></a>00666 <span class="preprocessor"> #undef BOOST_XINT_FROM_HEADER</span>
-<a name="l00667"></a>00667 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00668"></a>00668 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INLINE</span>
-<a name="l00669"></a>00669 <span class="preprocessor"></span><span class="preprocessor">#endif // BOOST_XINT_COMPILED_LIB</span>
-<a name="l00670"></a>00670 <span class="preprocessor"></span>
-<a name="l00671"></a>00671 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_INTERNALS_HPP</span>
+<a name="l00088"></a>00088 } <span class="comment">// namespace detail</span>
+<a name="l00089"></a>00089 } <span class="comment">// namespace xint</span>
+<a name="l00090"></a>00090 } <span class="comment">// namespace boost</span>
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_INTERNALS_HPP</span>
 </pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/log2_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/random_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/log2_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/log2.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,15 +25,12 @@
   </div>
 </div>
 <div class="contents">
-<h1>random.hpp File Reference</h1>
-<p>Declares items relating to random numbers.
+<h1>detail/log2.hpp File Reference</h1>
+<p>Contains the log2 implementations.
 <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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for general-purpose (insecure) random numbers. More...<br/></td></tr>
 <tr><td colspan="2"><h2>Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -46,17 +43,14 @@
 <p><tr><td class="mdescLeft">&nbsp;</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 <br class="typebreak"/>
-detail::strong_random_generator_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">boost::xint::strong_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. <br/></td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Declares items relating to random numbers. </p>
+<p>Contains the log2 implementations. </p>
+<p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition in file <a class="el" href="log2_8hpp_source.html">log2.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/log2_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/log2_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/log2.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>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>detail/log2.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_LOG2_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_LOG2_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">inline</span> <span class="keywordtype">size_t</span> log2_base(boost::uintmax_t n, <span class="keywordtype">size_t</span> maxbits) {
+<a name="l00029"></a>00029 boost::uintmax_t lo = 0, hi = maxbits;
+<a name="l00030"></a>00030 <span class="keywordflow">while</span> (lo &lt; hi) {
+<a name="l00031"></a>00031 boost::uintmax_t s = lo + ((hi - lo) &gt;&gt; 1);
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (n &gt;= (boost::uintmax_t(1) &lt;&lt; s)) lo = s + 1;
+<a name="l00033"></a>00033 <span class="keywordflow">else</span> hi = s;
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 <span class="keywordflow">return</span> size_t(lo);
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00039"></a>00039 <span class="keywordtype">size_t</span> log2_helper(<span class="keyword">const</span> T n,
+<a name="l00040"></a>00040 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_unsigned&lt;T&gt; &gt;::type* = 0)
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keywordflow">return</span> log2_base(n, std::numeric_limits&lt;T&gt;::digits);
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00046"></a>00046 <span class="keywordtype">size_t</span> log2_helper(<span class="keyword">const</span> T n,
+<a name="l00047"></a>00047 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_signed&lt;T&gt; &gt;::type* = 0)
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::make_unsigned&lt;T&gt;::type uT;
+<a name="l00050"></a>00050 T nn = (n &lt; 0 ? -n : n);
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> log2_base(static_cast&lt;uT&gt;(nn), std::numeric_limits&lt;T&gt;::digits);
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00055"></a>00055 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> T n,
+<a name="l00056"></a>00056 <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;T&gt; &gt;::type* = 0)
+<a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> log2_helper(n);
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 BOOST_XINT_RAWINT_TPL
+<a name="l00062"></a>00062 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00063"></a>00063 <span class="keywordtype">size_t</span> r = bits_per_digit * (n.length - 1);
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> r + <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(n[n.length - 1]);
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066
+<a name="l00068"></a>00068 } <span class="comment">// namespace detail</span>
+<a name="l00069"></a>00069 } <span class="comment">// namespace xint</span>
+<a name="l00070"></a>00070 } <span class="comment">// namespace boost</span>
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_LOG2_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/magnitude__manager_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/random_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/magnitude__manager_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/magnitude_manager.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,15 +25,12 @@
   </div>
 </div>
 <div class="contents">
-<h1>random.hpp File Reference</h1>
-<p>Declares items relating to random numbers.
+<h1>detail/magnitude_manager.hpp File Reference</h1>
+<p>Contains the magnitude_manager_t class.
 <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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for general-purpose (insecure) random numbers. More...<br/></td></tr>
 <tr><td colspan="2"><h2>Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -46,17 +43,14 @@
 <p><tr><td class="mdescLeft">&nbsp;</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 <br class="typebreak"/>
-detail::strong_random_generator_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">boost::xint::strong_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. <br/></td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Declares items relating to random numbers. </p>
+<p>Contains the magnitude_manager_t class. </p>
+<p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition in file <a class="el" href="magnitude__manager_8hpp_source.html">magnitude_manager.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/magnitude__manager_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/magnitude__manager_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,117 @@
+<!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: detail/magnitude_manager.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>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>detail/magnitude_manager.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_MAGNITUDE_MANAGER_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_MAGNITUDE_MANAGER_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Allocator&gt;
+<a name="l00029"></a>00029 <span class="keyword">class </span>magnitude_manager_t {
+<a name="l00030"></a>00030 <span class="keyword">public</span>:
+<a name="l00031"></a>00031 <span class="keyword">typedef</span> allocator_t&lt;Bits, Secure, Allocator&gt; Alloc;
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 magnitude_manager_t(): raw_data(zerodata()) { inc(); }
+<a name="l00034"></a>00034 <span class="keyword">explicit</span> magnitude_manager_t(<span class="keywordtype">size_t</span> length, <span class="keywordtype">bool</span> readonly = <span class="keyword">false</span>):
+<a name="l00035"></a>00035 raw_data(Alloc::alloc(length, readonly)) { inc(); }
+<a name="l00036"></a>00036 magnitude_manager_t(<span class="keyword">const</span> magnitude_manager_t&lt;Bits, Secure, Allocator&gt;&amp;
+<a name="l00037"></a>00037 copy): raw_data(copy.raw_data) { inc(); }
+<a name="l00038"></a>00038 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> B, <span class="keywordtype">bool</span> S, <span class="keyword">class</span> A&gt;
+<a name="l00039"></a>00039 magnitude_manager_t(<span class="keyword">const</span> magnitude_manager_t&lt;B, S, A&gt;&amp; copy):
+<a name="l00040"></a>00040 raw_data(copy.raw_data) { inc(); }
+<a name="l00041"></a>00041 ~magnitude_manager_t() { dec(); }
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 magnitude_manager_t&amp; operator=(<span class="keyword">const</span> magnitude_manager_t&lt;Bits, Secure,
+<a name="l00044"></a>00044 Allocator&gt;&amp; copy) { reset(copy.raw_data); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keywordtype">bool</span> is_nan()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (raw_data == 0); }
+<a name="l00047"></a>00047 <span class="keywordtype">void</span> make_nan() { dec(); raw_data = 0; }
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keywordtype">void</span> resize_and_uniquify(<span class="keywordtype">size_t</span> newsize = 0, realloc::strategy strategy =
+<a name="l00050"></a>00050 realloc::copy) { raw_data = Alloc::realloc_and_uniquify(raw_data,
+<a name="l00051"></a>00051 newsize, strategy); }
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="keywordtype">bool</span> same_storage(<span class="keyword">const</span> magnitude_manager_t&lt;Bits, Secure, Allocator&gt; n)<span class="keyword"></span>
+<a name="l00054"></a>00054 <span class="keyword"> const </span>{ <span class="keywordflow">return</span> raw_data == n.raw_data; }
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="comment">// Do not call these on a NaN</span>
+<a name="l00057"></a>00057 <span class="keywordtype">size_t</span> max_length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> raw_data-&gt;max_length; }
+<a name="l00058"></a>00058 <span class="keywordtype">bool</span> is_unique()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (raw_data-&gt;copies() == 1); }
+<a name="l00059"></a>00059 digit_t *digits() { <span class="keywordflow">return</span> raw_data-&gt;digits; }
+<a name="l00060"></a>00060 <span class="keyword">const</span> digit_t *digits()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> raw_data-&gt;digits; }
+<a name="l00061"></a>00061 <span class="keywordtype">void</span> trim() { fixedlength_t&lt;Bits&gt;::trim(raw_data); }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="keywordtype">void</span> _swap(magnitude_manager_t&lt;Bits, Secure, Allocator&gt;&amp; i2) {
+<a name="l00064"></a>00064 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">std::swap</a>;
+<a name="l00065"></a>00065 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(raw_data, i2.raw_data);
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <span class="keyword">private</span>:
+<a name="l00069"></a>00069 <span class="keywordtype">void</span> reset(magnitude_t *p) { <span class="keywordflow">if</span> (raw_data != p) { dec(); raw_data = p;
+<a name="l00070"></a>00070 inc(); } }
+<a name="l00071"></a>00071 <span class="keywordtype">void</span> inc() { <span class="keywordflow">if</span> (raw_data) Alloc::attach(raw_data); }
+<a name="l00072"></a>00072 <span class="keywordtype">void</span> dec() { <span class="keywordflow">if</span> (raw_data) Alloc::detach(raw_data); }
+<a name="l00073"></a>00073 <span class="keyword">static</span> magnitude_t *zerodata() { <span class="keyword">static</span> magnitude_manager_t z(1, <span class="keyword">true</span>);
+<a name="l00074"></a>00074 <span class="keywordflow">return</span> z.raw_data; }
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 magnitude_t *raw_data;
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> B, <span class="keywordtype">bool</span> S, <span class="keyword">class</span> A&gt;
+<a name="l00079"></a>00079 <span class="keyword">friend</span> <span class="keyword">class </span>magnitude_manager_t;
+<a name="l00080"></a>00080 };
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Allocator&gt;
+<a name="l00083"></a>00083 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(magnitude_manager_t&lt;Bits, Secure, Allocator&gt;&amp; p1,
+<a name="l00084"></a>00084 magnitude_manager_t&lt;Bits, Secure, Allocator&gt;&amp; p2)
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 p1._swap(p2);
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088
+<a name="l00090"></a>00090 } <span class="comment">// namespace detail</span>
+<a name="l00091"></a>00091 } <span class="comment">// namespace xint</span>
+<a name="l00092"></a>00092 } <span class="comment">// namespace boost</span>
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MAGNITUDE_MANAGER_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/modular_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/modular_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/modular.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>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>detail/modular.cpp File Reference</h1>
-<p>Contains the modular math functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the modular math functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/modular_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/modular_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,118 +0,0 @@
-<!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: detail/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>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>detail/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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"> #include &quot;<a class="code" href="monty_8hpp.html" title="Montgomery Reduction functions.">monty.hpp</a>&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00026"></a>00026 <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="l00032"></a>00032 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t by,
-<a name="l00033"></a>00033 <span class="keyword">const</span> data_t modulus)
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 target.duplicate_data(n);
-<a name="l00036"></a>00036 target *= by;
-<a name="l00037"></a>00037 target %= modulus;
-<a name="l00038"></a>00038 }
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t
-<a name="l00041"></a>00041 modulus)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(target, n);
-<a name="l00044"></a>00044 target %= modulus;
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t e,
-<a name="l00048"></a>00048 <span class="keyword">const</span> data_t m, <span class="keywordtype">bool</span> noMontgomery)
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (m.is_zero() || m.negative) <span class="keywordflow">throw</span> exceptions::invalid_modulus();
-<a name="l00051"></a>00051 <span class="keywordflow">if</span> (e.is_zero()) { target.set(1); <span class="keywordflow">return</span>; }
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordtype">bool</span> neg = (n.negative &amp;&amp; e.is_odd());
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="comment">// Montgomery&#39;s method is often noticeably faster, but only works if the</span>
-<a name="l00056"></a>00056 <span class="comment">// m is odd.</span>
-<a name="l00057"></a>00057 <span class="keywordflow">if</span> (m.is_odd() &amp;&amp; !noMontgomery) {
-<a name="l00058"></a>00058 montgomeryPowerMod(target, <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(n) % m, <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(e), m);
-<a name="l00059"></a>00059 } <span class="keywordflow">else</span> {
-<a name="l00060"></a>00060 data_t answer(target.new_holder(), 1), p(<a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(n));
-<a name="l00061"></a>00061 answer.beginmod();
-<a name="l00062"></a>00062 p.beginmod();
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="keywordtype">size_t</span> lastBitCount = 0;
-<a name="l00065"></a>00065 detail::digit_t ee(e[e.length - 1]);
-<a name="l00066"></a>00066 <span class="keywordflow">while</span> (ee != 0) { ee &gt;&gt;= 1; ++lastBitCount; }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex = 0; eIndex &lt; e.length; ++eIndex) {
-<a name="l00069"></a>00069 detail::digit_t ee(e[eIndex]);
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == e.length - 1 ? lastBitCount :
-<a name="l00072"></a>00072 detail::bits_per_digit));
-<a name="l00073"></a>00073 <span class="keywordflow">while</span> (bitCount-- &gt; 0) {
-<a name="l00074"></a>00074 <span class="keywordflow">if</span> (ee &amp; 0x01) {
-<a name="l00075"></a>00075 answer *= p;
-<a name="l00076"></a>00076 answer %= m;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(p, p, m);
-<a name="l00079"></a>00079 ee &gt;&gt;= 1;
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082 answer.negative = neg;
-<a name="l00083"></a>00083 p.endmod();
-<a name="l00084"></a>00084 answer.endmod();
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 target.duplicate_data(answer);
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 } <span class="comment">// namespace detail</span>
-<a name="l00091"></a>00091 } <span class="comment">// namespace xint</span>
-<a name="l00092"></a>00092 } <span class="comment">// namespace boost</span>
-<a name="l00094"></a>00094 <span class="comment"></span>
-<a name="l00095"></a>00095 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/modular_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/modular_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/modular_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/modular_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/modular.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/modular.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/modular.cpp File Reference</h1>
+<h1>detail/modular.hpp File Reference</h1>
 <p>Contains the modular math 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the modular math functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="modular_8cpp_source.html">modular.cpp</a>.</p>
+<p>Definition in file <a class="el" href="modular_8hpp_source.html">modular.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/modular_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/modular_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,108 @@
+<!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: detail/modular.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>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>detail/modular.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_MODULAR_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_MODULAR_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span> BOOST_XINT_RAWINT by,
+<a name="l00030"></a>00030 <span class="keyword">const</span> BOOST_XINT_RAWINT modulus)
+<a name="l00031"></a>00031 {
+<a name="l00032"></a>00032 <span class="keywordflow">return</span> n * by % modulus;
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 BOOST_XINT_RAWINT_TPL
+<a name="l00036"></a>00036 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00037"></a>00037 modulus)
+<a name="l00038"></a>00038 {
+<a name="l00039"></a>00039 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">square</a>(n) % modulus;
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 BOOST_XINT_RAWINT_TPL
+<a name="l00043"></a>00043 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span> BOOST_XINT_RAWINT e,
+<a name="l00044"></a>00044 <span class="keyword">const</span> BOOST_XINT_RAWINT m, <span class="keywordtype">bool</span> no_montgomery = <span class="keyword">false</span>)
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (m.is_zero() || m.negative) <span class="keywordflow">throw</span> exceptions::invalid_modulus();
+<a name="l00047"></a>00047 <span class="keywordflow">if</span> (e.is_zero()) <span class="keywordflow">return</span> 1;
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keywordtype">bool</span> neg = (n.negative &amp;&amp; e.is_odd());
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="comment">// Montgomery&#39;s method is often noticeably faster, but only works if the</span>
+<a name="l00052"></a>00052 <span class="comment">// m is odd.</span>
+<a name="l00053"></a>00053 <span class="keywordflow">if</span> (m.is_odd() &amp;&amp; !no_montgomery) {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> montgomeryPowerMod(n.abs() % m, e.abs(), m);
+<a name="l00055"></a>00055 } <span class="keywordflow">else</span> {
+<a name="l00056"></a>00056 BOOST_XINT_RAWINT answer(1), p(n.abs());
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="keywordtype">size_t</span> lastBitCount = 0;
+<a name="l00059"></a>00059 detail::digit_t ee(e[e.length - 1]);
+<a name="l00060"></a>00060 <span class="keywordflow">while</span> (ee != 0) { ee &gt;&gt;= 1; ++lastBitCount; }
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex = 0; eIndex &lt; e.length; ++eIndex) {
+<a name="l00063"></a>00063 detail::digit_t ee(e[eIndex]);
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == e.length - 1 ? lastBitCount :
+<a name="l00066"></a>00066 detail::bits_per_digit));
+<a name="l00067"></a>00067 <span class="keywordflow">while</span> (bitCount-- &gt; 0) {
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (ee &amp; 0x01) answer = <a class="code" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564" title="Get the modular product of two integers.">mulmod</a>(answer, p, m);
+<a name="l00069"></a>00069 p = <a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877" title="Get the modular product of squaring an integer.">sqrmod</a>(p, m);
+<a name="l00070"></a>00070 ee &gt;&gt;= 1;
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073 answer.negative = neg;
+<a name="l00074"></a>00074 answer.trim();
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> answer;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 } <span class="comment">// namespace detail</span>
+<a name="l00081"></a>00081 } <span class="comment">// namespace xint</span>
+<a name="l00082"></a>00082 } <span class="comment">// namespace boost</span>
+<a name="l00084"></a>00084 <span class="comment"></span>
+<a name="l00085"></a>00085 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MODULAR_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/monty_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/monty_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/monty.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>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>detail/monty.cpp File Reference</h1>
-<p>Contains the Montgomery Reduction functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the Montgomery Reduction functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/monty_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/monty_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,283 +0,0 @@
-<!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: detail/monty.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>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>detail/monty.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"> #include &quot;<a class="code" href="bitqueue_8hpp.html" title="Contains the bitqueue_t class, used internally.">bitqueue.hpp</a>&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor"> #include &lt;boost/scoped_array.hpp&gt;</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00027"></a>00027 <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="l00034"></a>00034 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> digit_t inverse0(<span class="keyword">const</span> data_t n) {
-<a name="l00035"></a>00035 <span class="comment">// Using the Dussé and Kalisk simplification</span>
-<a name="l00036"></a>00036 doubledigit_t x = 2, y = 1;
-<a name="l00037"></a>00037 digit_t n0 = n[0];
-<a name="l00038"></a>00038 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 2; i &lt;= bits_per_digit; ++i, x &lt;&lt;= 1)
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (x &lt; ((n0 * y) &amp; ((x &lt;&lt; 1) - 1)))
-<a name="l00040"></a>00040 y += x;
-<a name="l00041"></a>00041 <span class="keywordflow">return</span> digit_t(x - y);
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00047"></a>00047 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t montgomeryR(<span class="keyword">const</span> data_t n) {
-<a name="l00048"></a>00048 data_t r(n.new_holder());
-<a name="l00049"></a>00049 pow2(r, bits_per_digit * n.length);
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> r;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00054"></a>00054 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> toMontgomeryForm(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span>
-<a name="l00055"></a>00055 data_t m)
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 target.duplicate_data(n * montgomeryR(m) % m);
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00061"></a>00061 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> fromMontgomeryForm(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span>
-<a name="l00062"></a>00062 data_t m)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 data_t mont(montgomeryR(m));
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 data_t inv(target.new_holder());
-<a name="l00067"></a>00067 <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(inv, mont, m);
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 target.duplicate_data(n * inv % m);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00075"></a>00075 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t montgomeryMultiplyMod(<span class="keyword">const</span> data_t a, <span class="keyword">const</span> data_t b,
-<a name="l00076"></a>00076 <span class="keyword">const</span> data_t n, digit_t nPrime0)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="comment">// Using the Dussé and Kalisk simplification</span>
-<a name="l00079"></a>00079 <span class="comment">// Unstated parameter B is a power of two representing the number of values</span>
-<a name="l00080"></a>00080 <span class="comment">// that a single digit can hold, i.e. digit_overflowbit</span>
-<a name="l00081"></a>00081 <span class="comment">// Unstated parameter L is the number of digits in the modulus, i.e.</span>
-<a name="l00082"></a>00082 <span class="comment">// n.length</span>
-<a name="l00083"></a>00083 <span class="comment">// Unstated parameter r is B^L</span>
-<a name="l00084"></a>00084 <span class="comment">// nPrime0 is nPrime mod B, or digit zero of nPrime</span>
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">const</span> <span class="keywordtype">size_t</span> L(n.length);
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="keywordtype">size_t</span> i = 0;
-<a name="l00089"></a>00089 data_t t(a * b), mi(a.new_holder(), 0, n.length + 1);
-<a name="l00090"></a>00090 t.beginmod();
-<a name="l00091"></a>00091 mi.beginmod();
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keywordflow">do</span> {
-<a name="l00094"></a>00094 mi.set_unsigned(digit_t(t[i] * nPrime0));
-<a name="l00095"></a>00095 mi *= n;
-<a name="l00096"></a>00096 mi &lt;&lt;= (bits_per_digit * i);
-<a name="l00097"></a>00097 t += mi;
-<a name="l00098"></a>00098 } <span class="keywordflow">while</span> (++i &lt; L);
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 t &gt;&gt;= (bits_per_digit * L); <span class="comment">// Fast divide by r</span>
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (t &gt;= n) t -= n;
-<a name="l00103"></a>00103 mi.endmod();
-<a name="l00104"></a>00104 t.endmod();
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(t);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="comment">// cMaxK sets the balance between memory/precalculations required and the number</span>
-<a name="l00110"></a>00110 <span class="comment">// of calculations required for an exponentiation. Increasing it can only reduce</span>
-<a name="l00111"></a>00111 <span class="comment">// the calculations by a small amount, whereas it increases the memory</span>
-<a name="l00112"></a>00112 <span class="comment">// requirements and number of precalculations by an exponential amount. 8</span>
-<a name="l00113"></a>00113 <span class="comment">// provides a good balance.</span>
-<a name="l00114"></a>00114 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cMaxK = 8;
-<a name="l00115"></a>00115 <span class="keyword">typedef</span> boost::uint_t&lt;cMaxK&gt;::fast kbitdigit_t; <span class="comment">// k bits have to fit into it</span>
-<a name="l00116"></a>00116 <span class="keyword">typedef</span> std::vector&lt;kbitdigit_t&gt; vkbitdigit_t;
-<a name="l00117"></a>00117 <span class="keyword">typedef</span> std::vector&lt;data_t&gt; vxint_t;
-<a name="l00118"></a>00118 <span class="preprocessor">#define ddPowerOfTwo(p) (doubledigit_t(1) &lt;&lt; p)</span>
-<a name="l00119"></a>00119 <span class="preprocessor"></span>
-<a name="l00120"></a>00120 <span class="comment">// The splitIntoKBitDigits function assumes that cMaxK &lt;= bits_per_digit+1,</span>
-<a name="l00121"></a>00121 <span class="comment">// it won&#39;t work properly if it isn&#39;t.</span>
-<a name="l00122"></a>00122 BOOST_STATIC_ASSERT(cMaxK &lt;= bits_per_digit + 1);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Make it a template so that the static variable won&#39;t cause problems in</span>
-<a name="l00125"></a>00125 <span class="comment">// header-only mode.</span>
-<a name="l00126"></a>00126 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;
-<a name="l00127"></a>00127 <span class="keyword">class </span>TUTable {
-<a name="l00128"></a>00128 <span class="keyword">public</span>:
-<a name="l00129"></a>00129 <span class="keyword">typedef</span> std::pair&lt;int, int&gt; value_t;
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="keyword">const</span> value_t&amp; operator[](<span class="keywordtype">size_t</span> x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mTable[x]; }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keyword">static</span> <span class="keyword">const</span> TUTable&amp; <span class="keyword">get</span>() {
-<a name="l00134"></a>00134 <span class="comment">// Construct a singleton instance on demand</span>
-<a name="l00135"></a>00135 <span class="keywordflow">if</span> (mPtr.get()==0) mPtr.reset(<span class="keyword">new</span> TUTable);
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> *mPtr;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="keyword">private</span>:
-<a name="l00140"></a>00140 TUTable(): mTable(new value_t[ddPowerOfTwo(cMaxK)]) {
-<a name="l00141"></a>00141 value_t *p=&amp;mTable[0], *pe=p+ddPowerOfTwo(cMaxK);
-<a name="l00142"></a>00142 *p++=std::make_pair(0, 0);
-<a name="l00143"></a>00143 <span class="keywordtype">int</span> i=1;
-<a name="l00144"></a>00144 <span class="keywordflow">while</span> (p!=pe) *p++=calculateValues(i++);
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 std::pair&lt;int, int&gt; calculateValues(<span class="keywordtype">int</span> x) {
-<a name="l00148"></a>00148 <span class="keywordtype">int</span> r=0;
-<a name="l00149"></a>00149 <span class="keywordflow">while</span> (1) {
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (x &amp; 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
-<a name="l00151"></a>00151 ++r;
-<a name="l00152"></a>00152 x &gt;&gt;= 1;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="keyword">static</span> std::auto_ptr&lt;TUTable&lt;T&gt; &gt; mPtr;
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 boost::scoped_array&lt;value_t&gt; mTable;
-<a name="l00159"></a>00159 };
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00162"></a>00162 std::auto_ptr&lt;TUTable&lt;T&gt; &gt; TUTable&lt;T&gt;::mPtr;
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> data_t e) {
-<a name="l00165"></a>00165 doubledigit_t k = cMaxK, kTarget = <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(e) - 1;
-<a name="l00166"></a>00166 <span class="keywordflow">while</span> (k &gt; 1 &amp;&amp; ((k - 1) * (k &lt;&lt; ((k - 1) &lt;&lt; 1))
-<a name="l00167"></a>00167 / (ddPowerOfTwo(k) - k - 1)) &gt;= kTarget)
-<a name="l00168"></a>00168 --k;
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> int(k);
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> vxint_t precalculateOddPowersOfAa(<span class="keyword">const</span> data_t a, <span class="keyword">const</span> data_t
-<a name="l00173"></a>00173 r, <span class="keyword">const</span> data_t n, <span class="keywordtype">size_t</span> k)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 data_t zero(a.new_holder()), one(a.new_holder(), 1);
-<a name="l00176"></a>00176 data_t aa = a * r % n, aSquared = a * a % n;
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 vxint_t rval;
-<a name="l00179"></a>00179 rval.reserve(<span class="keywordtype">size_t</span>(ddPowerOfTwo(k)));
-<a name="l00180"></a>00180 rval.push_back(one); <span class="comment">// Anything to the zeroth power is one</span>
-<a name="l00181"></a>00181 rval.push_back(aa); <span class="comment">// Anything to the first power is itself</span>
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="keywordflow">for</span> (doubledigit_t i = 3, ie = ddPowerOfTwo(k); i &lt; ie; i += 2) {
-<a name="l00184"></a>00184 aa *= aSquared;
-<a name="l00185"></a>00185 aa %= n;
-<a name="l00186"></a>00186 rval.push_back(zero); <span class="comment">// Even powers not needed or calculated</span>
-<a name="l00187"></a>00187 rval.push_back(aa); <span class="comment">// Odd power</span>
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> rval;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> montgomeryPowerMod(data_t&amp; target, <span class="keyword">const</span> data_t a, <span class="keyword">const</span>
-<a name="l00194"></a>00194 data_t e, <span class="keyword">const</span> data_t n)
-<a name="l00195"></a>00195 {
-<a name="l00196"></a>00196 <span class="comment">// 0 &lt;= a &lt; n, n is odd</span>
-<a name="l00197"></a>00197 <span class="comment">// Returns a^e mod n</span>
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="keyword">const</span> TUTable&lt;&gt; &amp;tuTable(TUTable&lt;&gt;::get());
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="keywordflow">if</span> (e.is_zero()) { target.set(1); <span class="keywordflow">return</span>; }
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> (n.is_even()) <span class="keywordflow">throw</span> exceptions::invalid_modulus(<span class="stringliteral">&quot;montgomeryPowerMod &quot;</span>
-<a name="l00203"></a>00203 <span class="stringliteral">&quot;requires an odd modulus&quot;</span>);
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="comment">// Precalculate some values</span>
-<a name="l00206"></a>00206 <span class="keyword">const</span> <span class="keywordtype">size_t</span> k(mostEfficientK(e));
-<a name="l00207"></a>00207 <span class="keyword">const</span> data_t r(montgomeryR(n));
-<a name="l00208"></a>00208 <span class="keyword">const</span> digit_t nPrime0(inverse0(n));
-<a name="l00209"></a>00209 <span class="keyword">const</span> vxint_t oddPowersOfAa(precalculateOddPowersOfAa(a, r, n, k));
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <span class="comment">// Slice the exponent (e) up into k-bit digits</span>
-<a name="l00212"></a>00212 vkbitdigit_t eDigits;
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 bitqueue_t q;
-<a name="l00215"></a>00215 <span class="keywordflow">for</span> (<span class="keyword">const</span> digit_t *dig = e.digits(), *i = dig, *ie = i + e.length;
-<a name="l00216"></a>00216 i &lt;ie; ++i) q.push(*i, bits_per_digit);
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 <span class="comment">// The bitqueue_t returns them low-bits-first, we need to start with the</span>
-<a name="l00219"></a>00219 <span class="comment">// high bits.</span>
-<a name="l00220"></a>00220 <span class="keywordflow">while</span> (!q.empty()) eDigits.push_back(kbitdigit_t(q.pop(k)));
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 data_t pp(target.new_holder());
-<a name="l00224"></a>00224 pp.beginmod();
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 <span class="keywordflow">while</span> (eDigits.back() == 0) eDigits.pop_back();
-<a name="l00227"></a>00227 kbitdigit_t i = eDigits.back();
-<a name="l00228"></a>00228 eDigits.pop_back();
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keywordflow">if</span> (i == 0) {
-<a name="l00231"></a>00231 pp = r % n;
-<a name="l00232"></a>00232 } <span class="keywordflow">else</span> {
-<a name="l00233"></a>00233 std::pair&lt;int, int&gt; tu = tuTable[i];
-<a name="l00234"></a>00234 pp = oddPowersOfAa[tu.second];
-<a name="l00235"></a>00235 <span class="keywordflow">while</span> (tu.first-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
-<a name="l00236"></a>00236 }
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <span class="keywordflow">while</span> (!eDigits.empty()) {
-<a name="l00239"></a>00239 i = eDigits.back();
-<a name="l00240"></a>00240 eDigits.pop_back();
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="keywordflow">if</span> (i == 0) {
-<a name="l00243"></a>00243 <span class="keywordtype">int</span> t = int(k);
-<a name="l00244"></a>00244 <span class="keywordflow">while</span> (t-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
-<a name="l00245"></a>00245 } <span class="keywordflow">else</span> {
-<a name="l00246"></a>00246 std::pair&lt;int, int&gt; tu = tuTable[i];
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="keywordtype">size_t</span> s = k - tu.first;
-<a name="l00249"></a>00249 <span class="keywordflow">while</span> (s-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 pp = montgomeryMultiplyMod(pp, oddPowersOfAa[tu.second], n,
-<a name="l00252"></a>00252 nPrime0);
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="keywordflow">while</span> (tu.first-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n,
-<a name="l00255"></a>00255 nPrime0);
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 pp.endmod();
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 target.duplicate_data(montgomeryMultiplyMod(pp, data_t(target.new_holder(),
-<a name="l00261"></a>00261 1), n, nPrime0));
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 } <span class="comment">// namespace detail</span>
-<a name="l00265"></a>00265 } <span class="comment">// namespace xint</span>
-<a name="l00266"></a>00266 } <span class="comment">// namespace boost</span>
-<a name="l00268"></a>00268 <span class="comment"></span>
-<a name="l00269"></a>00269 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/monty_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/monty_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/monty_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -26,19 +26,19 @@
 </div>
 <div class="contents">
 <h1>detail/monty.hpp File Reference</h1>
-<p>Montgomery Reduction functions.
+<p>Contains the Montgomery Reduction functions.
 <a href="#_details">More...</a></p>
 
 <p>Go to the source code of this file.</p>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Montgomery Reduction 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>Contains the Montgomery Reduction functions. </p>
+<p>This file will be included by the library itself when needed. </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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/monty_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/monty_8hpp_source.html (original)
+++ sandbox/xint/libs/xint/doc/monty_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -36,29 +36,235 @@
 <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_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="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>detail {
-<a name="l00028"></a>00028
-<a name="l00031"></a>00031 digit_t inverse0(<span class="keyword">const</span> data_t n);
-<a name="l00032"></a>00032 data_t montgomeryR(<span class="keyword">const</span> data_t n);
-<a name="l00033"></a>00033 <span class="keywordtype">void</span> toMontgomeryForm(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t m);
-<a name="l00034"></a>00034 <span class="keywordtype">void</span> fromMontgomeryForm(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t m);
-<a name="l00035"></a>00035 data_t montgomeryMultiplyMod(<span class="keyword">const</span> data_t x, <span class="keyword">const</span> data_t y, <span class="keyword">const</span> data_t m,
-<a name="l00036"></a>00036 digit_t nPrime0);
-<a name="l00037"></a>00037 <span class="keywordtype">void</span> montgomeryPowerMod(data_t&amp; target, <span class="keyword">const</span> data_t x, <span class="keyword">const</span> data_t e, <span class="keyword">const</span>
-<a name="l00038"></a>00038 data_t m);
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 } <span class="comment">// namespace detail</span>
-<a name="l00042"></a>00042 } <span class="comment">// namespace xint</span>
-<a name="l00043"></a>00043 } <span class="comment">// namespace boost</span>
-<a name="l00045"></a>00045 <span class="comment"></span>
-<a name="l00046"></a>00046 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MONTY_HPP</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_MONTY_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_MONTY_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00029"></a>00029 BOOST_XINT_RAWINT_TPL
+<a name="l00030"></a>00030 digit_t inverse0(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00031"></a>00031 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00032"></a>00032 doubledigit_t x = 2, y = 1;
+<a name="l00033"></a>00033 digit_t n0 = n[0];
+<a name="l00034"></a>00034 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 2; i &lt;= bits_per_digit; ++i, x &lt;&lt;= 1)
+<a name="l00035"></a>00035 <span class="keywordflow">if</span> (x &lt; ((n0 * y) &amp; ((x &lt;&lt; 1) - 1))) y += x;
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> digit_t(x - y);
+<a name="l00037"></a>00037 }
+<a name="l00038"></a>00038
+<a name="l00042"></a>00042 BOOST_XINT_RAWINT_TPL
+<a name="l00043"></a>00043 BOOST_XINT_RAWINT montgomeryR(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00044"></a>00044 BOOST_XINT_RAWINT r;
+<a name="l00045"></a>00045 pow2(r, bits_per_digit * n.length);
+<a name="l00046"></a>00046 <span class="keywordflow">return</span> r;
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048
+<a name="l00050"></a>00050 BOOST_XINT_RAWINT_TPL
+<a name="l00051"></a>00051 <span class="keywordtype">void</span> toMontgomeryForm(BOOST_XINT_RAWINT&amp; target, <span class="keyword">const</span> BOOST_XINT_RAWINT n,
+<a name="l00052"></a>00052 <span class="keyword">const</span> BOOST_XINT_RAWINT m)
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 target = n * montgomeryR(m) % m;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00058"></a>00058 BOOST_XINT_RAWINT_TPL
+<a name="l00059"></a>00059 <span class="keywordtype">void</span> fromMontgomeryForm(BOOST_XINT_RAWINT&amp; target, <span class="keyword">const</span> BOOST_XINT_RAWINT n,
+<a name="l00060"></a>00060 <span class="keyword">const</span> BOOST_XINT_RAWINT m)
+<a name="l00061"></a>00061 {
+<a name="l00062"></a>00062 BOOST_XINT_RAWINT mont(montgomeryR(m)), inv = <a class="code" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(mont, m);
+<a name="l00063"></a>00063 target = n * inv % m;
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065
+<a name="l00069"></a>00069 BOOST_XINT_RAWINT_TPL
+<a name="l00070"></a>00070 BOOST_XINT_RAWINT montgomeryMultiplyMod(<span class="keyword">const</span> BOOST_XINT_RAWINT a, <span class="keyword">const</span>
+<a name="l00071"></a>00071 BOOST_XINT_RAWINT b, <span class="keyword">const</span> BOOST_XINT_RAWINT n, digit_t nPrime0)
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00074"></a>00074 <span class="comment">// Unstated parameter B is a power of two representing the number of values</span>
+<a name="l00075"></a>00075 <span class="comment">// that a single digit can hold, i.e. digit_overflowbit</span>
+<a name="l00076"></a>00076 <span class="comment">// Unstated parameter L is the number of digits in the modulus, i.e.</span>
+<a name="l00077"></a>00077 <span class="comment">// n.length</span>
+<a name="l00078"></a>00078 <span class="comment">// Unstated parameter r is B^L</span>
+<a name="l00079"></a>00079 <span class="comment">// nPrime0 is nPrime mod B, or digit zero of nPrime</span>
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keyword">const</span> <span class="keywordtype">size_t</span> L(n.length);
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keywordtype">size_t</span> i = 0;
+<a name="l00084"></a>00084 BOOST_XINT_RAWINT t(a * b);
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keywordflow">do</span> {
+<a name="l00087"></a>00087 BOOST_XINT_RAWINT mi(digit_t(t[i] * nPrime0));
+<a name="l00088"></a>00088 mi *= n;
+<a name="l00089"></a>00089 mi &lt;&lt;= (bits_per_digit * i);
+<a name="l00090"></a>00090 t += mi;
+<a name="l00091"></a>00091 } <span class="keywordflow">while</span> (++i &lt; L);
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 t &gt;&gt;= (bits_per_digit * L); <span class="comment">// Fast divide by r</span>
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keywordflow">if</span> (t &gt;= n) t -= n;
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> t;
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="comment">// cMaxK sets the balance between memory/precalculations required and the number</span>
+<a name="l00100"></a>00100 <span class="comment">// of calculations required for an exponentiation. Increasing it can only reduce</span>
+<a name="l00101"></a>00101 <span class="comment">// the calculations by a small amount, whereas it increases the memory</span>
+<a name="l00102"></a>00102 <span class="comment">// requirements and number of precalculations by an exponential amount. 8</span>
+<a name="l00103"></a>00103 <span class="comment">// provides a good balance.</span>
+<a name="l00104"></a>00104 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cMaxK = 8;
+<a name="l00105"></a>00105 <span class="keyword">typedef</span> boost::uint_t&lt;cMaxK&gt;::fast kbitdigit_t; <span class="comment">// k bits have to fit into it</span>
+<a name="l00106"></a>00106 <span class="keyword">typedef</span> std::vector&lt;kbitdigit_t&gt; vkbitdigit_t;
+<a name="l00107"></a>00107 <span class="preprocessor">#define ddPowerOfTwo(p) (doubledigit_t(1) &lt;&lt; p)</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span>
+<a name="l00109"></a>00109 <span class="comment">// The splitIntoKBitDigits function assumes that cMaxK &lt;= bits_per_digit+1,</span>
+<a name="l00110"></a>00110 <span class="comment">// it won&#39;t work properly if it isn&#39;t.</span>
+<a name="l00111"></a>00111 BOOST_STATIC_ASSERT(cMaxK &lt;= bits_per_digit + 1);
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="comment">// Make it a template so that the static variable won&#39;t cause problems in</span>
+<a name="l00114"></a>00114 <span class="comment">// header-only mode.</span>
+<a name="l00115"></a>00115 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;
+<a name="l00116"></a>00116 <span class="keyword">class </span>TUTable {
+<a name="l00117"></a>00117 <span class="keyword">public</span>:
+<a name="l00118"></a>00118 <span class="keyword">typedef</span> std::pair&lt;int, int&gt; value_t;
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keyword">const</span> value_t&amp; operator[](<span class="keywordtype">size_t</span> x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mTable[x]; }
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="keyword">static</span> <span class="keyword">const</span> TUTable&amp; <span class="keyword">get</span>() {
+<a name="l00123"></a>00123 <span class="comment">// Construct a singleton instance on demand</span>
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> (mPtr.get()==0) mPtr.reset(<span class="keyword">new</span> TUTable);
+<a name="l00125"></a>00125 <span class="keywordflow">return</span> *mPtr;
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="keyword">private</span>:
+<a name="l00129"></a>00129 TUTable(): mTable(new value_t[ddPowerOfTwo(cMaxK)]) {
+<a name="l00130"></a>00130 value_t *p=&amp;mTable[0], *pe=p+ddPowerOfTwo(cMaxK);
+<a name="l00131"></a>00131 *p++=std::make_pair(0, 0);
+<a name="l00132"></a>00132 <span class="keywordtype">int</span> i=1;
+<a name="l00133"></a>00133 <span class="keywordflow">while</span> (p!=pe) *p++=calculateValues(i++);
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 std::pair&lt;int, int&gt; calculateValues(<span class="keywordtype">int</span> x) {
+<a name="l00137"></a>00137 <span class="keywordtype">int</span> r=0;
+<a name="l00138"></a>00138 <span class="keywordflow">while</span> (1) {
+<a name="l00139"></a>00139 <span class="keywordflow">if</span> (x &amp; 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
+<a name="l00140"></a>00140 ++r;
+<a name="l00141"></a>00141 x &gt;&gt;= 1;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keyword">static</span> std::auto_ptr&lt;TUTable&lt;T&gt; &gt; mPtr;
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 boost::scoped_array&lt;value_t&gt; mTable;
+<a name="l00148"></a>00148 };
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00151"></a>00151 std::auto_ptr&lt;TUTable&lt;T&gt; &gt; TUTable&lt;T&gt;::mPtr;
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 BOOST_XINT_RAWINT_TPL
+<a name="l00154"></a>00154 <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> BOOST_XINT_RAWINT e) {
+<a name="l00155"></a>00155 doubledigit_t k = cMaxK, kTarget = <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(e) - 1;
+<a name="l00156"></a>00156 <span class="keywordflow">while</span> (k &gt; 1 &amp;&amp; ((k - 1) * (k &lt;&lt; ((k - 1) &lt;&lt; 1))
+<a name="l00157"></a>00157 / (ddPowerOfTwo(k) - k - 1)) &gt;= kTarget)
+<a name="l00158"></a>00158 --k;
+<a name="l00159"></a>00159 <span class="keywordflow">return</span> int(k);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 BOOST_XINT_RAWINT_TPL
+<a name="l00163"></a>00163 std::vector&lt;BOOST_XINT_RAWINT&gt; precalculateOddPowersOfAa(<span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00164"></a>00164 a, <span class="keyword">const</span> BOOST_XINT_RAWINT r, <span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> k)
+<a name="l00165"></a>00165 {
+<a name="l00166"></a>00166 BOOST_XINT_RAWINT zero, one(1);
+<a name="l00167"></a>00167 BOOST_XINT_RAWINT aa = a * r % n, aSquared = a * a % n;
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 std::vector&lt;BOOST_XINT_RAWINT&gt; rval;
+<a name="l00170"></a>00170 rval.reserve(<span class="keywordtype">size_t</span>(ddPowerOfTwo(k)));
+<a name="l00171"></a>00171 rval.push_back(one); <span class="comment">// Anything to the zeroth power is one</span>
+<a name="l00172"></a>00172 rval.push_back(aa); <span class="comment">// Anything to the first power is itself</span>
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keywordflow">for</span> (doubledigit_t i = 3, ie = ddPowerOfTwo(k); i &lt; ie; i += 2) {
+<a name="l00175"></a>00175 aa *= aSquared;
+<a name="l00176"></a>00176 aa %= n;
+<a name="l00177"></a>00177 rval.push_back(zero); <span class="comment">// Even powers not needed or calculated</span>
+<a name="l00178"></a>00178 rval.push_back(aa); <span class="comment">// Odd power</span>
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keywordflow">return</span> rval;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 BOOST_XINT_RAWINT_TPL
+<a name="l00185"></a>00185 BOOST_XINT_RAWINT montgomeryPowerMod(<span class="keyword">const</span> BOOST_XINT_RAWINT a, <span class="keyword">const</span>
+<a name="l00186"></a>00186 BOOST_XINT_RAWINT e, <span class="keyword">const</span> BOOST_XINT_RAWINT n)
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="comment">// 0 &lt;= a &lt; n, n is odd</span>
+<a name="l00189"></a>00189 <span class="comment">// Returns a^e mod n</span>
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="keyword">const</span> TUTable&lt;&gt; &amp;tuTable(TUTable&lt;&gt;::get());
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="keywordflow">if</span> (e.is_zero()) <span class="keywordflow">return</span> 1;
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (n.is_even()) <span class="keywordflow">throw</span> exceptions::invalid_modulus(<span class="stringliteral">&quot;montgomeryPowerMod &quot;</span>
+<a name="l00195"></a>00195 <span class="stringliteral">&quot;requires an odd modulus&quot;</span>);
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="comment">// Precalculate some values</span>
+<a name="l00198"></a>00198 <span class="keyword">const</span> <span class="keywordtype">size_t</span> k(mostEfficientK(e));
+<a name="l00199"></a>00199 <span class="keyword">const</span> BOOST_XINT_RAWINT r(montgomeryR(n));
+<a name="l00200"></a>00200 <span class="keyword">const</span> digit_t nPrime0(inverse0(n));
+<a name="l00201"></a>00201 <span class="keyword">const</span> std::vector&lt;BOOST_XINT_RAWINT&gt; oddPowersOfAa(
+<a name="l00202"></a>00202 precalculateOddPowersOfAa(a, r, n, k));
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 <span class="comment">// Slice the exponent (e) up into k-bit digits</span>
+<a name="l00205"></a>00205 vkbitdigit_t eDigits;
+<a name="l00206"></a>00206 {
+<a name="l00207"></a>00207 bitqueue_t q;
+<a name="l00208"></a>00208 <span class="keywordflow">for</span> (<span class="keyword">const</span> digit_t *dig = e.digits(), *i = dig, *ie = i + e.length;
+<a name="l00209"></a>00209 i &lt;ie; ++i) q.push(*i, bits_per_digit);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="comment">// The bitqueue_t returns them low-bits-first, we need to start with the</span>
+<a name="l00212"></a>00212 <span class="comment">// high bits.</span>
+<a name="l00213"></a>00213 <span class="keywordflow">while</span> (!q.empty()) eDigits.push_back(kbitdigit_t(q.pop(k)));
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="keywordflow">while</span> (eDigits.back() == 0) eDigits.pop_back();
+<a name="l00217"></a>00217 kbitdigit_t i = eDigits.back();
+<a name="l00218"></a>00218 eDigits.pop_back();
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 BOOST_XINT_RAWINT pp;
+<a name="l00221"></a>00221 <span class="keywordflow">if</span> (i == 0) {
+<a name="l00222"></a>00222 pp = r % n;
+<a name="l00223"></a>00223 } <span class="keywordflow">else</span> {
+<a name="l00224"></a>00224 std::pair&lt;int, int&gt; tu = tuTable[i];
+<a name="l00225"></a>00225 pp = oddPowersOfAa[tu.second];
+<a name="l00226"></a>00226 <span class="keywordflow">while</span> (tu.first-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="keywordflow">while</span> (!eDigits.empty()) {
+<a name="l00230"></a>00230 i = eDigits.back();
+<a name="l00231"></a>00231 eDigits.pop_back();
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (i == 0) {
+<a name="l00234"></a>00234 <span class="keywordtype">int</span> t = int(k);
+<a name="l00235"></a>00235 <span class="keywordflow">while</span> (t-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
+<a name="l00236"></a>00236 } <span class="keywordflow">else</span> {
+<a name="l00237"></a>00237 std::pair&lt;int, int&gt; tu = tuTable[i];
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="keywordtype">size_t</span> s = k - tu.first;
+<a name="l00240"></a>00240 <span class="keywordflow">while</span> (s-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n, nPrime0);
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 pp = montgomeryMultiplyMod(pp, oddPowersOfAa[tu.second], n,
+<a name="l00243"></a>00243 nPrime0);
+<a name="l00244"></a>00244
+<a name="l00245"></a>00245 <span class="keywordflow">while</span> (tu.first-- &gt; 0) pp = montgomeryMultiplyMod(pp, pp, n,
+<a name="l00246"></a>00246 nPrime0);
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> montgomeryMultiplyMod(pp, BOOST_XINT_RAWINT(1), n, nPrime0);
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 } <span class="comment">// namespace detail</span>
+<a name="l00253"></a>00253 } <span class="comment">// namespace xint</span>
+<a name="l00254"></a>00254 } <span class="comment">// namespace boost</span>
+<a name="l00256"></a>00256 <span class="comment"></span>
+<a name="l00257"></a>00257 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MONTY_HPP</span>
 </pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/multiply_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/multiply_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/multiply.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>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>detail/multiply.cpp File Reference</h1>
-<p>Contains the multiplication and squaring functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the multiplication and squaring functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="multiply_8cpp_source.html">multiply.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/multiply_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/multiply_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,189 +0,0 @@
-<!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: detail/multiply.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>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>detail/multiply.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<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 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(data_t&amp; target, <span class="keyword">const</span> data_t n) {
-<a name="l00032"></a>00032 target.set(0);
-<a name="l00033"></a>00033 target.beginmod(n.length * 2 + 1, <span class="keyword">true</span>);
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">const</span> digit_t *ndigits = n.digits();
-<a name="l00036"></a>00036 <span class="keywordtype">size_t</span> nlen = n.length;
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 digit_t *rdigits = target.digits(), *rmax = rdigits + target.length;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="comment">// Calculate the product of digits of unequal index</span>
-<a name="l00041"></a>00041 <span class="keywordtype">size_t</span> i = 0;
-<a name="l00042"></a>00042 doubledigit_t c;
-<a name="l00043"></a>00043 <span class="keywordflow">do</span> {
-<a name="l00044"></a>00044 <span class="keyword">const</span> doubledigit_t ii = ndigits[i];
-<a name="l00045"></a>00045 <span class="keyword">const</span> digit_t *jp = ndigits + i + 1;
-<a name="l00046"></a>00046 digit_t *rp = rdigits + i + (i + 1), *rpe = rdigits + i + nlen;
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (rpe &gt; rmax) rpe = rmax;
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 c = 0;
-<a name="l00050"></a>00050 <span class="keywordflow">while</span> (rp &lt; rpe) {
-<a name="l00051"></a>00051 doubledigit_t t = ii * *jp++ + *rp + c;
-<a name="l00052"></a>00052 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
-<a name="l00053"></a>00053 c = (t &gt;&gt; bits_per_digit);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (rp &lt; rmax) *rp = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(c);
-<a name="l00056"></a>00056 } <span class="keywordflow">while</span> (++i &lt; nlen - 1);
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="comment">// Multiplication of inner products by two</span>
-<a name="l00059"></a>00059 c = 0;
-<a name="l00060"></a>00060 digit_t *rp = rdigits + 1, *rpe = rdigits + (2 * nlen) - 1;
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (rpe &gt; rmax) rpe = rmax;
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (rp &lt; rmax) {
-<a name="l00064"></a>00064 <span class="keywordflow">do</span> {
-<a name="l00065"></a>00065 doubledigit_t t = (doubledigit_t(*rp) &lt;&lt; 1) + c;
-<a name="l00066"></a>00066 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
-<a name="l00067"></a>00067 c = (t &gt;&gt; bits_per_digit);
-<a name="l00068"></a>00068 } <span class="keywordflow">while</span> (rp &lt; rpe);
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (rp &lt; rmax) *rp = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(c);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="comment">// Addition of inner squares</span>
-<a name="l00073"></a>00073 <span class="keyword">const</span> digit_t *ip = ndigits, *ipe = ndigits + nlen;
-<a name="l00074"></a>00074 rp = rdigits;
-<a name="l00075"></a>00075 c = 0;
-<a name="l00076"></a>00076 <span class="keywordflow">do</span> {
-<a name="l00077"></a>00077 doubledigit_t t = doubledigit_t(*ip) * *ip + *rp + c;
-<a name="l00078"></a>00078 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (rp &gt;= rmax) <span class="keywordflow">break</span>;
-<a name="l00080"></a>00080 c = (t &gt;&gt; bits_per_digit);
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 t = c + *rp;
-<a name="l00083"></a>00083 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (rp &gt;= rmax) <span class="keywordflow">break</span>;
-<a name="l00085"></a>00085 c = (t &gt;&gt; bits_per_digit);
-<a name="l00086"></a>00086 } <span class="keywordflow">while</span> (++ip &lt; ipe);
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (rp &lt; rmax) *rp += <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(c);
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="comment">// No need to change length</span>
-<a name="l00090"></a>00090 target.negative = <span class="keyword">false</span>;
-<a name="l00091"></a>00091 target.endmod();
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> multiply(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t by)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (n.is_zero() || by.is_zero()) { target.set(0); <span class="keywordflow">return</span>; }
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (n.same_storage(by)) {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (n.negative != by.negative) {
-<a name="l00100"></a>00100 <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(target, n);
-<a name="l00101"></a>00101 target.negative = <span class="keyword">true</span>;
-<a name="l00102"></a>00102 <span class="keywordflow">return</span>;
-<a name="l00103"></a>00103 } <span class="keywordflow">else</span> {
-<a name="l00104"></a>00104 <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(target, n);
-<a name="l00105"></a>00105 <span class="keywordflow">return</span>;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 target.length = 0;
-<a name="l00110"></a>00110 target.beginmod(n.length + by.length, <span class="keyword">true</span>);
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 digit_t *adigits = target.digits(), *ae = adigits + target.max_length();
-<a name="l00113"></a>00113 <span class="keywordtype">size_t</span> maxdigit = target.max_length(), nlen = n.length, bylen = by.length;
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="comment">// Now multiply the digits, starting at the least-significant digit.</span>
-<a name="l00116"></a>00116 <span class="keyword">const</span> digit_t *d1 = n.digits(), *d1e = d1 + (std::min)(nlen, maxdigit);
-<a name="l00117"></a>00117 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit1 = 0; d1 &lt; d1e; ++digit1, ++d1) {
-<a name="l00118"></a>00118 <span class="keyword">const</span> digit_t *d2 = by.digits(), *d2e = d2 + (std::min)(bylen, maxdigit
-<a name="l00119"></a>00119 - digit1);
-<a name="l00120"></a>00120 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit2 = 0; d2 &lt; d2e; ++digit2, ++d2) {
-<a name="l00121"></a>00121 <span class="comment">// First multiply the two digits</span>
-<a name="l00122"></a>00122 doubledigit_t t = doubledigit_t(*d1) * *d2;
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Now add the result to the answer.</span>
-<a name="l00125"></a>00125 <span class="keywordtype">int</span> carry=0;
-<a name="l00126"></a>00126 digit_t *a = adigits + digit1 + digit2;
-<a name="l00127"></a>00127 doubledigit_t addt = doubledigit_t(*a) + (t &amp; digit_mask);
-<a name="l00128"></a>00128 <span class="keywordflow">if</span> (addt &gt;= digit_overflowbit) carry=1;
-<a name="l00129"></a>00129 *a++=<span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(addt);
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (a &lt; ae) {
-<a name="l00132"></a>00132 addt = *a + ((t &gt;&gt; bits_per_digit) &amp; digit_mask) + carry;
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (addt &gt;= digit_overflowbit) carry=1; <span class="keywordflow">else</span> carry=0;
-<a name="l00134"></a>00134 *a++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(addt);
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keywordflow">while</span> (carry &amp;&amp; a &lt; ae) {
-<a name="l00137"></a>00137 addt = *a + 1;
-<a name="l00138"></a>00138 *a++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(addt);
-<a name="l00139"></a>00139 <span class="keywordflow">if</span> (addt &lt; digit_overflowbit) <span class="keywordflow">break</span>;
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 <span class="comment">// No need to change length</span>
-<a name="l00146"></a>00146 target.negative = (n.negative != by.negative);
-<a name="l00147"></a>00147 target.endmod();
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator*=(<span class="keyword">const</span> data_t by) {
-<a name="l00151"></a>00151 multiply(*<span class="keyword">this</span>, duplicate(), by);
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">operator*</a>(<span class="keyword">const</span> data_t n1, <span class="keyword">const</span> data_t n2) {
-<a name="l00156"></a>00156 data_t r(n1.new_holder());
-<a name="l00157"></a>00157 multiply(r, n1, n2);
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> r;
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 } <span class="comment">// namespace detail</span>
-<a name="l00162"></a>00162 } <span class="comment">// namespace xint</span>
-<a name="l00163"></a>00163 } <span class="comment">// namespace boost</span>
-<a name="l00165"></a>00165 <span class="comment"></span>
-<a name="l00166"></a>00166 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/multiply_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/multiply_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/multiply_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/multiply_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/multiply.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/multiply.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/multiply.cpp File Reference</h1>
+<h1>detail/multiply.hpp File Reference</h1>
 <p>Contains the multiplication and squaring 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the multiplication and squaring functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="multiply_8cpp_source.html">multiply.cpp</a>.</p>
+<p>Definition in file <a class="el" href="multiply_8hpp_source.html">multiply.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/multiply_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/multiply_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,188 @@
+<!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: detail/multiply.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>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>detail/multiply.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_MULTIPLY_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_MULTIPLY_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">square</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n) {
+<a name="l00030"></a>00030 <span class="keyword">const</span> digit_t *ndigits = n.digits();
+<a name="l00031"></a>00031 <span class="keywordtype">size_t</span> nlen = n.length;
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 BOOST_XINT_RAWINT target;
+<a name="l00034"></a>00034 digit_t *rdigits = target.digits(n.length * 2 + 1, realloc::zero), *rmax =
+<a name="l00035"></a>00035 rdigits + target.length;
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="comment">// Calculate the product of digits of unequal index</span>
+<a name="l00038"></a>00038 <span class="keywordtype">size_t</span> i = 0;
+<a name="l00039"></a>00039 doubledigit_t c;
+<a name="l00040"></a>00040 <span class="keywordflow">do</span> {
+<a name="l00041"></a>00041 <span class="keyword">const</span> doubledigit_t ii = ndigits[i];
+<a name="l00042"></a>00042 <span class="keyword">const</span> digit_t *jp = ndigits + i + 1;
+<a name="l00043"></a>00043 digit_t *rp = rdigits + i + (i + 1), *rpe = rdigits + i + nlen;
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (rpe &gt; rmax) rpe = rmax;
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 c = 0;
+<a name="l00047"></a>00047 <span class="keywordflow">while</span> (rp &lt; rpe) {
+<a name="l00048"></a>00048 doubledigit_t t = ii * *jp++ + *rp + c;
+<a name="l00049"></a>00049 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
+<a name="l00050"></a>00050 c = (t &gt;&gt; bits_per_digit);
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (rp &lt; rmax) *rp = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(c);
+<a name="l00053"></a>00053 } <span class="keywordflow">while</span> (++i &lt; nlen - 1);
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="comment">// Multiplication of inner products by two</span>
+<a name="l00056"></a>00056 c = 0;
+<a name="l00057"></a>00057 digit_t *rp = rdigits + 1, *rpe = rdigits + (2 * nlen) - 1;
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (rpe &gt; rmax) rpe = rmax;
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="keywordflow">if</span> (rp &lt; rmax) {
+<a name="l00061"></a>00061 <span class="keywordflow">do</span> {
+<a name="l00062"></a>00062 doubledigit_t t = (doubledigit_t(*rp) &lt;&lt; 1) + c;
+<a name="l00063"></a>00063 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
+<a name="l00064"></a>00064 c = (t &gt;&gt; bits_per_digit);
+<a name="l00065"></a>00065 } <span class="keywordflow">while</span> (rp &lt; rpe);
+<a name="l00066"></a>00066 <span class="keywordflow">if</span> (rp &lt; rmax) *rp = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(c);
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="comment">// Addition of inner squares</span>
+<a name="l00070"></a>00070 <span class="keyword">const</span> digit_t *ip = ndigits, *ipe = ndigits + nlen;
+<a name="l00071"></a>00071 rp = rdigits;
+<a name="l00072"></a>00072 c = 0;
+<a name="l00073"></a>00073 <span class="keywordflow">do</span> {
+<a name="l00074"></a>00074 doubledigit_t t = doubledigit_t(*ip) * *ip + *rp + c;
+<a name="l00075"></a>00075 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (rp &gt;= rmax) <span class="keywordflow">break</span>;
+<a name="l00077"></a>00077 c = (t &gt;&gt; bits_per_digit);
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 t = c + *rp;
+<a name="l00080"></a>00080 *rp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(t);
+<a name="l00081"></a>00081 <span class="keywordflow">if</span> (rp &gt;= rmax) <span class="keywordflow">break</span>;
+<a name="l00082"></a>00082 c = (t &gt;&gt; bits_per_digit);
+<a name="l00083"></a>00083 } <span class="keywordflow">while</span> (++ip &lt; ipe);
+<a name="l00084"></a>00084 <span class="keywordflow">if</span> (rp &lt; rmax) *rp += <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(c);
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="comment">// No need to change length</span>
+<a name="l00087"></a>00087 target.negative = <span class="keyword">false</span>;
+<a name="l00088"></a>00088 target.trim();
+<a name="l00089"></a>00089 <span class="keywordflow">return</span> target;
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 BOOST_XINT_RAWINT_TPL
+<a name="l00093"></a>00093 BOOST_XINT_RAWINT multiply(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00094"></a>00094 by)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (n.is_zero() || by.is_zero()) <span class="keywordflow">return</span> 0;
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> (n.same_storage(by)) {
+<a name="l00099"></a>00099 <span class="keywordflow">if</span> (n.negative != by.negative) {
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> BOOST_XINT_RAWINT(<a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">square</a>(n), <span class="keyword">true</span>);
+<a name="l00101"></a>00101 } <span class="keywordflow">else</span> {
+<a name="l00102"></a>00102 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">square</a>(n);
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 BOOST_XINT_RAWINT target;
+<a name="l00107"></a>00107 digit_t *adigits = target.digits(n.length + by.length, realloc::zero),
+<a name="l00108"></a>00108 *ae = adigits + target.max_length();
+<a name="l00109"></a>00109 <span class="keywordtype">size_t</span> maxdigit = target.max_length(), nlen = n.length, bylen = by.length;
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="comment">// Now multiply the digits, starting at the least-significant digit.</span>
+<a name="l00112"></a>00112 <span class="keyword">const</span> digit_t *d1 = n.digits(), *d1e = d1 + (std::min)(nlen, maxdigit);
+<a name="l00113"></a>00113 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit1 = 0; d1 &lt; d1e; ++digit1, ++d1) {
+<a name="l00114"></a>00114 <span class="keyword">const</span> digit_t *d2 = by.digits(), *d2e = d2 + (std::min)(bylen, maxdigit
+<a name="l00115"></a>00115 - digit1);
+<a name="l00116"></a>00116 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit2 = 0; d2 &lt; d2e; ++digit2, ++d2) {
+<a name="l00117"></a>00117 <span class="comment">// First multiply the two digits</span>
+<a name="l00118"></a>00118 doubledigit_t t = doubledigit_t(*d1) * *d2;
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="comment">// Now add the result to the answer.</span>
+<a name="l00121"></a>00121 <span class="keywordtype">int</span> carry = 0;
+<a name="l00122"></a>00122 digit_t *a = adigits + digit1 + digit2;
+<a name="l00123"></a>00123 doubledigit_t addt = doubledigit_t(*a) + (t &amp; digit_mask);
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> (addt &gt;= digit_overflowbit) carry = 1;
+<a name="l00125"></a>00125 *a++=<span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(addt);
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keywordflow">if</span> (a &lt; ae) {
+<a name="l00128"></a>00128 addt = *a + ((t &gt;&gt; bits_per_digit) &amp; digit_mask) + carry;
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> (addt &gt;= digit_overflowbit) carry = 1; <span class="keywordflow">else</span> carry = 0;
+<a name="l00130"></a>00130 *a++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(addt);
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="keywordflow">while</span> (carry &amp;&amp; a &lt; ae) {
+<a name="l00133"></a>00133 addt = *a + 1;
+<a name="l00134"></a>00134 *a++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(addt);
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (addt &lt; digit_overflowbit) <span class="keywordflow">break</span>;
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="comment">// No need to change length</span>
+<a name="l00142"></a>00142 target.negative = (n.negative != by.negative);
+<a name="l00143"></a>00143 target.trim();
+<a name="l00144"></a>00144 <span class="keywordflow">return</span> target;
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 BOOST_XINT_RAWINT_TPL
+<a name="l00148"></a>00148 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator*=(<span class="keyword">const</span> BOOST_XINT_RAWINT by) {
+<a name="l00149"></a>00149 *<span class="keyword">this</span> = multiply(*<span class="keyword">this</span>, by);
+<a name="l00150"></a>00150 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 BOOST_XINT_RAWINT_TPL
+<a name="l00154"></a>00154 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455" title="Calculate the product of two integers.">operator*</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n1, <span class="keyword">const</span> BOOST_XINT_RAWINT
+<a name="l00155"></a>00155 n2)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keywordflow">return</span> multiply(n1, n2);
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 } <span class="comment">// namespace detail</span>
+<a name="l00161"></a>00161 } <span class="comment">// namespace xint</span>
+<a name="l00162"></a>00162 } <span class="comment">// namespace boost</span>
+<a name="l00164"></a>00164 <span class="comment"></span>
+<a name="l00165"></a>00165 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MULTIPLY_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/namespaceboost.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespaceboost.html (original)
+++ sandbox/xint/libs/xint/doc/namespaceboost.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -34,7 +34,7 @@
 </p>
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespaceboost_1_1xint.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespaceboost_1_1xint.html (original)
+++ sandbox/xint/libs/xint/doc/namespaceboost_1_1xint.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -42,334 +42,187 @@
 <p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Every exception the library throws is from this namespace. </p>
 <br/></td></tr>
 </p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1options.html">options</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Options for the <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> template are stored in 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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1any__integer.html">any_integer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A base class for all integer types. More...<br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">base_divide_t</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Holds the results from a division-with-remainder call. More...<br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">default_random_generator</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for general-purpose (insecure) random numbers. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A fixed-size integer type. More...<br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> class template. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The nothrow_integer_t class template. More...<br/></td></tr>
 <tr><td colspan="2"><h2>Typedefs</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef std::vector&lt; unsigned <br class="typebreak"/>
 char &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">binary_t</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The format for the binary representations of integers. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This makes it easier to tell when an item is measured in bits. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef boost::function&lt; bool()&gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function takes no parameters and returns a bool. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">integer</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default arbitrary-length integer type. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf">nothrow_integer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default nothrow_integer type. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a><br class="typebreak"/>
+&lt; <a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">options::nothrow</a>&lt; true &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4">nothrow_integer</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default arbitrary-length nothrow_integer type. <br/></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
 detail::strong_random_generator_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">strong_random_generator</a></td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. <br/></td></tr>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5df93e9ae7f561d923bb90afd9cbd2d8">swap</a> (<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;left, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;right)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b">nan_text</a> (&quot;#NaN#&quot;)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is the string representation of the Not-a-Number value. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a> (<a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;left, <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;right)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a> (<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;left, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;right)</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>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> There are only a couple of functions here because almost all mathematical primitives are implemented as operators. </p>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aef79239cf595334619310a6a9698de77">abs</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523">abs</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">nothrow_integer_t::divide_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7595b5065bafe137a1e5a076d03ce298">divide</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> dividend, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> divisor)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">integer_t::divide_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4">divide</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> dividend, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> divisor)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1base__divide__t.html">fixed_integer::divide_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> dividend, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> divisor)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abed80988937fa36406095c53ac5b4925">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae9772c469f88348cd1558be1dcac0a46">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abce4290c5bd113c9caf713b7887494ab">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero=0)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2a45431596a3d8ce084bef4d181205d3">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero=0)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#acbde618676ee2d01ce334b0ad2ee415f">setbit</a> (<a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921">setbit</a> (<a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a> (<a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad198e5679c816eb58edbd8910a2a3e22">compare</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2, bool ignoresign=false)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0">compare</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2, bool ignoresign=false)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2, bool ignoresign=false)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3c2edec1d630692541fb8d779fe24d6c">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> num1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> num2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> num1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad5f8b7e50849e6bc237e881f8b531d28">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> num1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> num1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> num2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> num1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7e4c5b4383c8c4f23791999b999045aa">log2</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18">log2</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_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> </p>
+<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>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%(integer_t, integer_t)</a> </dd>
+<dd>
+<a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">integer_t::operator%=</a> </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aece47ab2a3e92ee9206912290619e8f7">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> modulus)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92435de368aa4f5c513c370917b2e6c2">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> by, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> by, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> modulus)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> by, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92c4fb70fbc30f6b0e5d3d284c4ae9a7">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> exponent, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> modulus, bool no_monty)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> exponent, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> modulus, bool no_monty=false)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> exponent, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> modulus, bool no_monty)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#acc04d22301e5451b1cd45b42b723dfa4">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> modulus)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> modulus)</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Random and prime number functions</div></td></tr>
 <tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa3caa0f3187a2dcc617c005b6b75011b"></a> </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1integer__t.html#a8826eb41c3e4ca9b6b4ec81ff61d9ba2" title="Generates a random integer with specific attributes.">integer_t::random_by_size</a> </dd>
+<dd>
+<a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02" title="Generate a randomly-generated prime number of a particular bit-size.">integer_t::random_prime</a> </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7b44943a74e4c544b7691c2e0a24a32c">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>)</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Comparison Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp54923b9793dae891d9489cc5947f263a"></a> </p>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp54923b9793dae891d9489cc5947f263a"></a> The nothrow&lt;true&gt; versions of these functions return <code>false</code> instead of throwing.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0" title="Compare two integer objects.">compare(integer_t, integer_t, bool)</a> </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a78fe60b6ff798332d9c972a7572a8ff3">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a14d04f3e5d238015f70a9fd3b862c77f">operator&lt;</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">operator&lt;</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abffa91bfcbe1e85a36b35c0dca12911e">operator&lt;=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">operator&lt;=</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7bb742fa7f73ce4a66c3562e63093ea4">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a067985512800bf111b6381a3a6523c67">operator&gt;</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">operator&gt;</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a049242861ecb219e864a179c4e2bd87a">operator&gt;=</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">operator&gt;=</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</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> </p>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp8eb1e0f0af70edd858d54ba68b80ce7e"></a> These act exactly the same as for the built-in integer types. </p>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad7e11b62950cda48aa1e8288f0f49bb1">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a91a76dbe5320a452f31966aae35da0bc">operator&amp;</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3">operator&amp;</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">operator&amp;</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8008de156c89f46eb421eb4a60fb90f">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3cb9c9351c4150e9b7f028cdf26e380b">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1d5c865ffc91a6b29fc95e3cbd87e753">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aef07a1b59c017d367cd8f129601d317f">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> dividend, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> divisor)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> dividend, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> divisor)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> dividend, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> divisor)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6b65ed6783e91563d65410aa4e526a99">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ace07b7c6d63117b14903f785b8d2276d">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n1, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n2)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n1, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n2)</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&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6bb5af0935eaf4be1876c8284f116525">operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a06ea2b89f8b6f52b2e89d0b9c51b60c0">operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&lt; Alloc, Threadsafe, Secure &gt; n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#add798bd386457947563587067ad497e8">operator&gt;&gt;</a> (std::basic_istream&lt; charT, traits &gt; &amp;in, <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> &amp;n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
+traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream&lt; charT, <br class="typebreak"/>
 traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">operator&gt;&gt;</a> (std::basic_istream&lt; charT, traits &gt; &amp;in, <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> &amp;n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a> (std::basic_istream&lt; charT, traits &gt; &amp;in, <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> &amp;n)</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>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1integer__t.html#a45af7d644cdfe8ae95a32c7373787389" title="Calculate the value of 2e">integer_t::pow2</a> </dd>
+<dd>
+<a class="el" href="classboost_1_1xint_1_1integer__t.html#a6f3a91f5162f991ce61e9f925817129d" title="Calculate the value of n! ">integer_t::factorial</a> </dd></dl>
 </div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a10ae77d8cd473ef75073ef5c23631659">pow</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> e)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52">pow</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> e)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> e)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0a4a7562e6fd3597b26a1cad4a76b834">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a730b703534656d2f4d96484d7bb8cfc6">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac6704f0c9e4050d1076791dff3067eb9">square</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424">square</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2">square_root</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</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>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> Note that these only convert an integer type to something else. See the integer constructors for conversions the other way. </p>
 </div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename Type , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">Type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad7639155422020e4f347e0f96b60069a">to</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename Type , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">Type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a36b0be620a1e56f439dde05db5d0033b">to</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">xint::integer</a> type to a built-in integer type. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename Type , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">Type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">to</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adbfaf0dd58a326a1d333b648588d60b7">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits=0)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename T , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afd9d2c7743d11e6959d6cda44c8abf69">to</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">xint::integer</a> type to a built-in integer type. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, <a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits=0)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a binary representation of an integer. <br/></td></tr>
 <tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, size_t bits=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad512da0b0312cfcf3ddea15dff14cf93">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> n, size_t base=10, bool uppercase=false)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
 <tr><td class="memTemplItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> n, size_t base=10, bool uppercase=false)</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> n, size_t base=10, bool uppercase=false)</td></tr>
 <tr><td colspan="2"><h2>Variables</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">const size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a> = (std::numeric_limits&lt;size_t&gt;::max)()</td></tr>
 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A value that can be used for the 'base' parameter of the string-to-integer constructor functions. <br/></td></tr>
@@ -392,7 +245,7 @@
 
 <p>The format for the binary representations of integers. </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>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00077">77</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -407,7 +260,9 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00628">628</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>This makes it easier to tell when an item is measured in bits. </p>
+
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00084">84</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -424,7 +279,7 @@
 
 <p>A callback function takes no parameters and returns a bool. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00064">64</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00071">71</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -442,25 +297,25 @@
 <p>The default arbitrary-length integer type. </p>
 <p>This uses the default parameters for the <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> template. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01459">1459</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02421">2421</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a4a293ec33bf1c68b3c92536fdd6b4abf"></a><!-- doxytag: member="boost::xint::nothrow_integer" ref="a4a293ec33bf1c68b3c92536fdd6b4abf" args="" -->
+<a class="anchor" id="af3a28f270195952c3bbe42bff5bf2cd4"></a><!-- doxytag: member="boost::xint::nothrow_integer" ref="af3a28f270195952c3bbe42bff5bf2cd4" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
- <td class="memname">typedef <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer</a></td>
+ <td class="memname">typedef <a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a>&lt;<a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">options::nothrow</a>&lt;true&gt; &gt; <a class="el" href="classboost_1_1xint_1_1integer__t.html">boost::xint::nothrow_integer</a></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>The default nothrow_integer type. </p>
-<p>This uses the default parameters for the <a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">nothrow_integer_t</a> template. </p>
+<p>The default arbitrary-length nothrow_integer type. </p>
+<p>This uses the default parameters for the <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> template, other than the <code>nothrow</code> one. </p>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01302">1302</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02428">2428</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -482,44 +337,11 @@
 <dd>
 <a class="el" href="classboost_1_1xint_1_1integer__t.html#adbbd33c6281a946db3608140bba62f02">integer_t::random_prime</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="random_8hpp_source.html#l00103">103</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8hpp_source.html#l00097">97</a> of file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
 
 </div>
 </div>
 <hr/><h2>Function Documentation</h2>
-<a class="anchor" id="aef79239cf595334619310a6a9698de77"></a><!-- doxytag: member="boost::xint::abs" ref="aef79239cf595334619310a6a9698de77" args="(const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::abs </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Returns the absolute value of an integer. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00657">657</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
 <a class="anchor" id="a5a98564162f30f3117a871a617af9523"></a><!-- doxytag: member="boost::xint::abs" ref="a5a98564162f30f3117a871a617af9523" args="(const integer_t n)" -->
 <div class="memitem">
 <div class="memproto">
@@ -550,33 +372,11 @@
 </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>Definition at line <a class="el" href="integer_8hpp_source.html#l00716">716</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a22c29f49cfee8ee7bf809db665e1d9d7"></a><!-- doxytag: member="boost::xint::abs" ref="a22c29f49cfee8ee7bf809db665e1d9d7" args="(const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::abs </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00576">576</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01218">1218</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="abed80988937fa36406095c53ac5b4925"></a><!-- doxytag: member="boost::xint::clearbit" ref="abed80988937fa36406095c53ac5b4925" args="(nothrow_integer_t &amp;n, bitsize_t bit)" -->
+<a class="anchor" id="a9f0fe7813dc7e6d6d92b64cd68677175"></a><!-- doxytag: member="boost::xint::clearbit" ref="a9f0fe7813dc7e6d6d92b64cd68677175" args="(integer_t &amp;n, bitsize_t bit)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -585,7 +385,7 @@
         <tr>
           <td class="memname">void boost::xint::clearbit </td>
           <td>(</td>
- <td class="paramtype">nothrow_integer_t &amp;&nbsp;</td>
+ <td class="paramtype">integer_t &amp;&nbsp;</td>
           <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
@@ -602,7 +402,9 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Sets a specific bit in an integer to zero. <ul>
+
+<p>Sets a specific bit in an integer to zero. </p>
+<ul>
 <li>Complexity: O(1)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
@@ -613,30 +415,34 @@
   </dd>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Does nothing instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00818">818</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01549">1549</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a9f0fe7813dc7e6d6d92b64cd68677175"></a><!-- doxytag: member="boost::xint::clearbit" ref="a9f0fe7813dc7e6d6d92b64cd68677175" args="(integer_t &amp;n, bitsize_t bit)" -->
+<a class="anchor" id="a740189c9646dcda553f1bd9de200cdd0"></a><!-- doxytag: member="boost::xint::compare" ref="a740189c9646dcda553f1bd9de200cdd0" args="(const integer_t n1, const integer_t n2, bool ignoresign=false)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">void boost::xint::clearbit </td>
+ <td class="memname">int boost::xint::compare </td>
           <td>(</td>
- <td class="paramtype">integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>ignoresign</em> = <code>false</code></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -647,40 +453,40 @@
 </div>
 <div class="memdoc">
 
-<p>Sets a specific bit in an integer to zero. </p>
+<p>Compare two integer objects. </p>
 <ul>
-<li>Complexity: O(1)</li>
+<li>Complexity: varies between O(n) if the numbers are equal (the worst case), down to O(1) if they have different signs or wildly different magnitudes.</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</td><td>The zero-based index of the bit to change.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to compare. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>ignoresign</em>&nbsp;</td><td>If <code>true</code>, the absolute values of n1 and n2 are compared, instead of their signed values. Used internally.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if <code>n1</code> &lt; <code>n2</code>; zero if <code>n1</code> == <code>n2</code>, or 1 if <code>n1</code> &gt; <code>n2</code>. The nothrow&lt;true&gt; version returns 2 instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00934">934</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02237">2237</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a05dfa039837daba29cfac939335b8364"></a><!-- doxytag: member="boost::xint::clearbit" ref="a05dfa039837daba29cfac939335b8364" args="(fixed_integer &amp;n, bitsize_t bit)" -->
+<a class="anchor" id="a7d5e37941c1085e1cc1e513d9f1857b4"></a><!-- doxytag: member="boost::xint::divide" ref="a7d5e37941c1085e1cc1e513d9f1857b4" args="(const integer_t dividend, const integer_t divisor)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">void boost::xint::clearbit </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> ::divide_t boost::xint::divide </td>
           <td>(</td>
- <td class="paramtype">fixed_integer &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>dividend</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -690,46 +496,53 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Sets a specific bit in an integer to zero. <ul>
-<li>Complexity: O(1)</li>
+
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. </p>
+<ul>
+<li>Complexity: O(n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</td><td>The zero-based index of the bit to change.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</td><td>The integers to operate on.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
- </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>divide_t</code> class containing the quotient and remainder of <code>dividend</code> divided by <code>divisor</code>. The nothrow&lt;true&gt; version returns a <code>divide_t</code> with both items set to Not-a-Number instead of throwing.</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>&nbsp;</td><td>if <code>d2</code> is zero.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21" title="Calculate how many dividends would fit into divisor.">operator/(integer_t, integer_t)</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%(integer_t, integer_t)</a> </dd>
+<dd>
+<a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">integer_t::operator/=</a> </dd>
+<dd>
+<a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">integer_t::operator%=</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00662">662</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01254">1254</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ad198e5679c816eb58edbd8910a2a3e22"></a><!-- doxytag: member="boost::xint::compare" ref="ad198e5679c816eb58edbd8910a2a3e22" args="(const nothrow_integer_t n1, const nothrow_integer_t n2, bool ignoresign=false)" -->
+<a class="anchor" id="a011ac7b423cee444f6728ca2b061f31e"></a><!-- doxytag: member="boost::xint::gcd" ref="a011ac7b423cee444f6728ca2b061f31e" args="(const integer_t num1, const integer_t num2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">int boost::xint::compare </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::gcd </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>num1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>ignoresign</em> = <code>false</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -739,47 +552,40 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Compare two integer objects. <ul>
-<li>Complexity: varies between O(n) if the numbers are equal (the worst case), down to O(1) if they have different signs or wildly different magnitudes.</li>
+
+<p>Calculate the Greatest Common Denominator of two integers. </p>
+<ul>
+<li>Complexity: O((log n)<sup>3</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to compare. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>ignoresign</em>&nbsp;</td><td>If <code>true</code>, the absolute values of n1 and n2 are compared, instead of their signed values. Used internally.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>num1,num2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A negative number if <code>n1</code> &lt; <code>n2</code>; zero if <code>n1</code> == <code>n2</code>, or a positive number if <code>n1</code> &gt; <code>n2</code>. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Returns 2 instead of throwing, so say that the items are not equal. </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>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01170">1170</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02169">2169</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a740189c9646dcda553f1bd9de200cdd0"></a><!-- doxytag: member="boost::xint::compare" ref="a740189c9646dcda553f1bd9de200cdd0" args="(const integer_t n1, const integer_t n2, bool ignoresign=false)" -->
+<a class="anchor" id="ae44f7918320a37538c5fa8e4622cbfba"></a><!-- doxytag: member="boost::xint::getbit" ref="ae44f7918320a37538c5fa8e4622cbfba" args="(const integer_t n, bitsize_t bit)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">int boost::xint::compare </td>
+ <td class="memname">bool boost::xint::getbit </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em>, </td>
+ <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>ignoresign</em> = <code>false</code></td><td>&nbsp;</td>
+ <td class="paramtype">bitsize_t&nbsp;</td>
+ <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -790,46 +596,40 @@
 </div>
 <div class="memdoc">
 
-<p>Compare two integer objects. </p>
+<p>Queries the value of a particular bit in an integer. </p>
 <ul>
-<li>Complexity: varies between O(n) if the numbers are equal (the worst case), down to O(1) if they have different signs or wildly different magnitudes.</li>
+<li>Complexity: O(1)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to compare. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>ignoresign</em>&nbsp;</td><td>If <code>true</code>, the absolute values of n1 and n2 are compared, instead of their signed values. Used internally.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</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>A negative number if <code>n1</code> &lt; <code>n2</code>; zero if <code>n1</code> == <code>n2</code>, or a positive number if <code>n1</code> &gt; <code>n2</code>. </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. The nothrow&lt;true&gt; version returns <code>false</code> instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01348">1348</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01502">1502</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a39a3143ef1f03a35f2b7409b365fc853"></a><!-- doxytag: member="boost::xint::compare" ref="a39a3143ef1f03a35f2b7409b365fc853" args="(const fixed_integer n1, const fixed_integer n2, bool ignoresign=false)" -->
+<a class="anchor" id="a47f175d3a516b6e9e851890e2ce4a9b0"></a><!-- doxytag: member="boost::xint::highestbit" ref="a47f175d3a516b6e9e851890e2ce4a9b0" args="(const integer_t n, bitsize_t return_if_zero=0)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">int boost::xint::compare </td>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::highestbit </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>ignoresign</em> = <code>false</code></td><td>&nbsp;</td>
+ <td class="paramtype">bitsize_t&nbsp;</td>
+ <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -839,40 +639,41 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Compare two integer objects. <ul>
-<li>Complexity: varies between O(n) if the numbers are equal (the worst case), down to O(1) if they have different signs or wildly different magnitudes.</li>
+
+<p>Obtains the index of the highest bit in an integer with a value of one. </p>
+<ul>
+<li>Complexity: O(1)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to compare. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>ignoresign</em>&nbsp;</td><td>If <code>true</code>, the absolute values of n1 and n2 are compared, instead of their signed values. Used internally.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</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>A negative number if <code>n1</code> &lt; <code>n2</code>; zero if <code>n1</code> == <code>n2</code>, or a positive number if <code>n1</code> &gt; <code>n2</code>. </dd></dl>
- </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the highest one-bit in the integer, or <code>return_if_zero</code> if the integer contains no set bits. The nothrow&lt;true&gt; version returns <code>return_if_zero</code> instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00854">854</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01606">1606</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a7595b5065bafe137a1e5a076d03ce298"></a><!-- doxytag: member="boost::xint::divide" ref="a7595b5065bafe137a1e5a076d03ce298" args="(const nothrow_integer_t dividend, const nothrow_integer_t divisor)" -->
+<a class="anchor" id="ada4e628fe2275e6d6459b9b87167cbad"></a><!-- doxytag: member="boost::xint::invmod" ref="ada4e628fe2275e6d6459b9b87167cbad" args="(const integer_t n, const integer_t modulus)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> ::divide_t boost::xint::divide </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::invmod </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>dividend</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -882,53 +683,47 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
+
+<p>Get the modular inverse of a number in a modulus, if there is one. </p>
+<ul>
+<li>Complexity: O((log n)<sup>3</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</td><td>The integers to operate on.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The number to calculate the inverse of. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus to use.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>divide_t</code> class containing the quotient and remainder of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The modular inverse of <code>n</code> in <code>modulus</code>. If <code>n</code> has no modular inverse in <code>modulus</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_1divide__by__zero.html">exceptions::divide_by_zero</a></em>&nbsp;</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_1exceptions_1_1invalid__modulus.html">exceptions::invalid_modulus</a></em>&nbsp;</td><td>if the modulus is less than one. </td></tr>
   </table>
   </dd>
 </dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21" title="Calculate how many dividends would fit into divisor.">operator/(integer_t, integer_t)</a> </dd>
-<dd>
-<a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%(integer_t, integer_t)</a> </dd>
-<dd>
-<a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">integer_t::operator/=</a> </dd>
-<dd>
-<a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">integer_t::operator%=</a> </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Returns two Not-a-Number values instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00672">672</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01763">1763</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a7d5e37941c1085e1cc1e513d9f1857b4"></a><!-- doxytag: member="boost::xint::divide" ref="a7d5e37941c1085e1cc1e513d9f1857b4" args="(const integer_t dividend, const integer_t divisor)" -->
+<a class="anchor" id="a089d98ffc4599122209d1a3c1c7c39d4"></a><!-- doxytag: member="boost::xint::is_prime" ref="a089d98ffc4599122209d1a3c1c7c39d4" args="(const integer_t n, callback_t callback=no_callback)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> ::divide_t boost::xint::divide </td>
+ <td class="memname">int boost::xint::is_prime </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>dividend</em>, </td>
+ <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
+ <td class="paramtype">callback_t&nbsp;</td>
+ <td class="paramname"> <em>callback</em> = <code>no_callback</code></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -939,52 +734,48 @@
 </div>
 <div class="memdoc">
 
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. </p>
+<p>Tests an integer for primality. </p>
 <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
+<li>Complexity: Varies</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</td><td>The integers to operate on.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The number to test. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>callback</em>&nbsp;</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 <code>divide_t</code> class containing the quotient and remainder of <code>dividend</code> divided by <code>divisor</code>.</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. The nothrow&lt;true&gt; version returns -2 instead of throwing.</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>&nbsp;</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_1exceptions_1_1invalid__argument.html">exceptions::invalid_argument</a></em>&nbsp;</td><td>if <code>n</code> is less than 2.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21" title="Calculate how many dividends would fit into divisor.">operator/(integer_t, integer_t)</a> </dd>
-<dd>
-<a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%(integer_t, integer_t)</a> </dd>
-<dd>
-<a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">integer_t::operator/=</a> </dd>
-<dd>
-<a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">integer_t::operator%=</a> </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 randomly-selected "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>Definition at line <a class="el" href="integer_8hpp_source.html#l00739">739</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01816">1816</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a729653da022f22652cd5aa2d29f0c8fd"></a><!-- doxytag: member="boost::xint::divide" ref="a729653da022f22652cd5aa2d29f0c8fd" args="(const fixed_integer dividend, const fixed_integer divisor)" -->
+<a class="anchor" id="affa4bae53c9bc3814816c70c8bb442b4"></a><!-- doxytag: member="boost::xint::lcm" ref="affa4bae53c9bc3814816c70c8bb442b4" args="(const integer_t num1, const integer_t num2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> ::divide_t boost::xint::divide </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::lcm </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>dividend</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>num1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -994,52 +785,76 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
+
+<p>Calculate the Least Common Multiple of two integers. </p>
+<ul>
+<li>Complexity: O((log n)<sup>3</sup> + n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</td><td>The integers to operate on.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>num1,num2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>divide_t</code> class containing the quotient and remainder of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
+<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>Definition at line <a class="el" href="integer_8hpp_source.html#l02202">2202</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab6cef2e4e1b3c3b841f6c1a085952f18"></a><!-- doxytag: member="boost::xint::log2" ref="ab6cef2e4e1b3c3b841f6c1a085952f18" args="(const integer_t n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;... &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::log2 </td>
+ <td>(</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the log<sub>2</sub> value of an integer. </p>
+<ul>
+<li>Complexity: O(1)</li>
+</ul>
+<dl><dt><b>Parameters:</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>&nbsp;</td><td>if <code>d2</code> is zero.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21" title="Calculate how many dividends would fit into divisor.">operator/(integer_t, integer_t)</a> </dd>
-<dd>
-<a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67" title="Get the remainder after dividing a number by another.">operator%(integer_t, integer_t)</a> </dd>
-<dd>
-<a class="el" href="classboost_1_1xint_1_1integer__t.html#ae55c6a634e3bd3c37f7cace2f9b9e496">integer_t::operator/=</a> </dd>
-<dd>
-<a class="el" href="classboost_1_1xint_1_1integer__t.html#ac61ca4bfdf11efc044602e8d4205f7ce">integer_t::operator%=</a> </dd></dl>
- </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer log<sub>2</sub> value of the integer. The nothrow&lt;true&gt; version returns zero instead of throwing.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>pow2(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#a47f175d3a516b6e9e851890e2ce4a9b0" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a> function. </dd></dl>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00583">583</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02269">2269</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a3c2edec1d630692541fb8d779fe24d6c"></a><!-- doxytag: member="boost::xint::gcd" ref="a3c2edec1d630692541fb8d779fe24d6c" args="(const nothrow_integer_t num1, const nothrow_integer_t num2)" -->
+<a class="anchor" id="a8f1c7103d951ba19510458166d4fd2f4"></a><!-- doxytag: member="boost::xint::lowestbit" ref="a8f1c7103d951ba19510458166d4fd2f4" args="(const integer_t n, bitsize_t return_if_zero=0)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::gcd </td>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::lowestbit </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>num1</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
+ <td class="paramtype">bitsize_t&nbsp;</td>
+ <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1049,39 +864,47 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Calculate the Greatest Common Denominator of two integers. <ul>
-<li>Complexity: O((log n)<sup>3</sup>)</li>
+
+<p>Obtains the index of the lowest bit in an integer with a value of one. </p>
+<ul>
+<li>Complexity: O(1)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>num1,num2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</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 greatest common denominator of the two integers, which will always be a positive number. </dd></dl>
- </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the lowest one-bit in the integer, or <code>return_if_zero</code> if the integer contains no set bits. The nothrow&lt;true&gt; version returns <code>return_if_zero</code> instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01137">1137</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01577">1577</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a011ac7b423cee444f6728ca2b061f31e"></a><!-- doxytag: member="boost::xint::gcd" ref="a011ac7b423cee444f6728ca2b061f31e" args="(const integer_t num1, const integer_t num2)" -->
+<a class="anchor" id="a2503b80a8b59b45190ea024884405564"></a><!-- doxytag: member="boost::xint::mulmod" ref="a2503b80a8b59b45190ea024884405564" args="(const integer_t n, const integer_t by, const integer_t modulus)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::gcd </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::mulmod </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>num1</em>, </td>
+ <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
+ <td class="paramname"> <em>by</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1092,39 +915,61 @@
 </div>
 <div class="memdoc">
 
-<p>Calculate the Greatest Common Denominator of two integers. </p>
+<p>Get the modular product of two integers. </p>
 <ul>
-<li>Complexity: O((log n)<sup>3</sup>)</li>
+<li>Complexity: O(2n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>num1,num2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n,by</em>&nbsp;</td><td>The integers to multiply. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus.</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>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> * <code>by</code> % <code>modulus</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>Definition at line <a class="el" href="integer_8hpp_source.html#l01647">1647</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac80b017fceb4774cc3ff5a01a6d70d1b"></a><!-- doxytag: member="boost::xint::nan_text" ref="ac80b017fceb4774cc3ff5a01a6d70d1b" args="(&quot;#NaN#&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::string boost::xint::nan_text </td>
+ <td>(</td>
+ <td class="paramtype">&quot;#NaN#&quot;&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01308">1308</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>This is the string representation of the Not-a-Number value. </p>
 
 </div>
 </div>
-<a class="anchor" id="a808dafe43afa6f06a5a44b0e956b885a"></a><!-- doxytag: member="boost::xint::gcd" ref="a808dafe43afa6f06a5a44b0e956b885a" args="(const fixed_integer num1, const fixed_integer num2)" -->
+<a class="anchor" id="ac6bf18fab19873cc55142b26ce11fda4"></a><!-- doxytag: member="boost::xint::operator!=" ref="ac6bf18fab19873cc55142b26ce11fda4" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::gcd </td>
+ <td class="memname">bool boost::xint::operator!= </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>num1</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1135,27 +980,27 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00834">834</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01914">1914</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ae9772c469f88348cd1558be1dcac0a46"></a><!-- doxytag: member="boost::xint::getbit" ref="ae9772c469f88348cd1558be1dcac0a46" args="(const nothrow_integer_t n, bitsize_t bit)" -->
+<a class="anchor" id="aac56e280afa13284381f144a208eaf67"></a><!-- doxytag: member="boost::xint::operator%" ref="aac56e280afa13284381f144a208eaf67" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">bool boost::xint::getbit </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator% </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1165,41 +1010,41 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Queries the value of a particular bit in an integer. <ul>
-<li>Complexity: O(1)</li>
+
+<p>Get the remainder after dividing a number by another. </p>
+<ul>
+<li>Complexity: O(n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</td><td>The zero-based index of the bit you're asking about.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1</em>&nbsp;</td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n2</em>&nbsp;</td><td>The divisor.</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>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The remainder after dividing <code>n1</code> by <code>n2</code>. </dd></dl>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00791">791</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02057">2057</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ae44f7918320a37538c5fa8e4622cbfba"></a><!-- doxytag: member="boost::xint::getbit" ref="ae44f7918320a37538c5fa8e4622cbfba" args="(const integer_t n, bitsize_t bit)" -->
+<a class="anchor" id="a356d6efa380af7ee2c2f6f0a83e7c9a3"></a><!-- doxytag: member="boost::xint::operator&amp;" ref="a356d6efa380af7ee2c2f6f0a83e7c9a3" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">bool boost::xint::getbit </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator&amp; </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1210,40 +1055,39 @@
 </div>
 <div class="memdoc">
 
-<p>Queries the value of a particular bit in an integer. </p>
+<p>Combine two integers using a bitwise <code>AND</code> operation. </p>
 <ul>
-<li>Complexity: O(1)</li>
+<li>Complexity: O(n)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</td><td>The zero-based index of the bit you're asking about.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</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>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in both parameters turned on. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00906">906</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02084">2084</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ab9f07ea184f62952ec0bc51ae7f63946"></a><!-- doxytag: member="boost::xint::getbit" ref="ab9f07ea184f62952ec0bc51ae7f63946" args="(const fixed_integer n, bitsize_t bit)" -->
+<a class="anchor" id="a69c9fa493989cc96676a007f58031455"></a><!-- doxytag: member="boost::xint::operator*" ref="a69c9fa493989cc96676a007f58031455" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">bool boost::xint::getbit </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator* </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1254,27 +1098,40 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00650">650</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Calculate the product of two integers. </p>
+<ul>
+<li>Complexity: O(n<sup>2</sup>)</li>
+</ul>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>Definition at line <a class="el" href="integer_8hpp_source.html#l02001">2001</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="abce4290c5bd113c9caf713b7887494ab"></a><!-- doxytag: member="boost::xint::highestbit" ref="abce4290c5bd113c9caf713b7887494ab" args="(const nothrow_integer_t n, bitsize_t return_if_zero=0)" -->
+<a class="anchor" id="a88b3b7bccb96dd8b0cd9d9f853025915"></a><!-- doxytag: member="boost::xint::operator+" ref="a88b3b7bccb96dd8b0cd9d9f853025915" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::highestbit </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator+ </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1284,41 +1141,40 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Obtains the index of the highest bit in an integer with a value of one. <ul>
-<li>Complexity: O(1)</li>
+
+<p>Calculate the sum of two integers. </p>
+<ul>
+<li>Complexity: O(n)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to add.</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>return_if_zero</code> if the integer contains no set bits. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Returns <code>return_if_zero</code> instead of throwing. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The sum of the parameters. </dd></dl>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00847">847</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01945">1945</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a47f175d3a516b6e9e851890e2ce4a9b0"></a><!-- doxytag: member="boost::xint::highestbit" ref="a47f175d3a516b6e9e851890e2ce4a9b0" args="(const integer_t n, bitsize_t return_if_zero=0)" -->
+<a class="anchor" id="acda2a7a7d63582732505cc7128096f27"></a><!-- doxytag: member="boost::xint::operator&#45;" ref="acda2a7a7d63582732505cc7128096f27" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::highestbit </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator- </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1329,40 +1185,39 @@
 </div>
 <div class="memdoc">
 
-<p>Obtains the index of the highest bit in an integer with a value of one. </p>
+<p>Calculate the difference between two integers. </p>
 <ul>
-<li>Complexity: O(1)</li>
+<li>Complexity: O(n)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</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>return_if_zero</code> if the integer contains no set bits. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The difference between the parameters. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00970">970</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01971">1971</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a4eb6d95cc77c2f1fe1e7c7c1bf81260b"></a><!-- doxytag: member="boost::xint::highestbit" ref="a4eb6d95cc77c2f1fe1e7c7c1bf81260b" args="(const fixed_integer n, bitsize_t return_if_zero=0)" -->
+<a class="anchor" id="a800dca196da627207b63fccd3c132c21"></a><!-- doxytag: member="boost::xint::operator/" ref="a800dca196da627207b63fccd3c132c21" args="(const integer_t dividend, const integer_t divisor)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::highestbit </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator/ </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>dividend</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1372,40 +1227,46 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Obtains the index of the highest bit in an integer with a value of one. <ul>
-<li>Complexity: O(1)</li>
+
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. </p>
+<ul>
+<li>Complexity: O(n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</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>&nbsp;</td><td>if <code>divisor</code> is zero. </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>return_if_zero</code> if the integer contains no set bits. </dd></dl>
- </p>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00676">676</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02029">2029</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="aece47ab2a3e92ee9206912290619e8f7"></a><!-- doxytag: member="boost::xint::invmod" ref="aece47ab2a3e92ee9206912290619e8f7" args="(const nothrow_integer_t n, const nothrow_integer_t modulus)" -->
+<a class="anchor" id="a0a987fd73c7c0844f9ed4fdabf0f27e4"></a><!-- doxytag: member="boost::xint::operator&lt;" ref="a0a987fd73c7c0844f9ed4fdabf0f27e4" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::invmod </td>
+ <td class="memname">bool boost::xint::operator&lt; </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1415,46 +1276,28 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Get the modular inverse of a number in a modulus, if there is one. <ul>
-<li>Complexity: O((log n)<sup>3</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The number to calculate the inverse of. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</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>modulus</code>. If <code>n</code> has no modular inverse in <code>modulus</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>&nbsp;</td><td>if the modulus is less than one. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00911">911</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01839">1839</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ada4e628fe2275e6d6459b9b87167cbad"></a><!-- doxytag: member="boost::xint::invmod" ref="ada4e628fe2275e6d6459b9b87167cbad" args="(const integer_t n, const integer_t modulus)" -->
+<a class="anchor" id="a678851ea0cb31cb4ef66bc8389d369d3"></a><!-- doxytag: member="boost::xint::operator&lt;&lt;" ref="a678851ea0cb31cb4ef66bc8389d369d3" args="(std::basic_ostream&lt; charT, traits &gt; &amp;out, const integer_t n)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;... &gt; </div>
+template&lt;typename charT , typename traits , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::invmod </td>
+ <td class="memname">std::basic_ostream&lt;charT,traits&gt;&amp; boost::xint::operator&lt;&lt; </td>
           <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">std::basic_ostream&lt; charT, traits &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>out</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
+ <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1465,46 +1308,27 @@
 </div>
 <div class="memdoc">
 
-<p>Get the modular inverse of a number in a modulus, if there is one. </p>
-<ul>
-<li>Complexity: O((log n)<sup>3</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The number to calculate the inverse of. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</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>modulus</code>. If <code>n</code> has no modular inverse in <code>modulus</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>&nbsp;</td><td>if the modulus is less than one. </td></tr>
- </table>
- </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01079">1079</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02375">2375</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ac628e1a39065df013c263455992c00eb"></a><!-- doxytag: member="boost::xint::invmod" ref="ac628e1a39065df013c263455992c00eb" args="(const fixed_integer n, const fixed_integer modulus)" -->
+<a class="anchor" id="a9b01e116d91ad2d7d9f13138a1182d1d"></a><!-- doxytag: member="boost::xint::operator&lt;=" ref="a9b01e116d91ad2d7d9f13138a1182d1d" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::invmod </td>
+ <td class="memname">bool boost::xint::operator&lt;= </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1514,46 +1338,28 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Get the modular inverse of a number in a modulus, if there is one. <ul>
-<li>Complexity: O((log n)<sup>3</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The number to calculate the inverse of. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</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>modulus</code>. If <code>n</code> has no modular inverse in <code>modulus</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>&nbsp;</td><td>if the modulus is less than one. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00718">718</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01869">1869</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a7b44943a74e4c544b7691c2e0a24a32c"></a><!-- doxytag: member="boost::xint::is_prime" ref="a7b44943a74e4c544b7691c2e0a24a32c" args="(const nothrow_integer_t n, callback_t callback=no_callback)" -->
+<a class="anchor" id="aa753a8fb37b38da8293fec1c9bb09711"></a><!-- doxytag: member="boost::xint::operator==" ref="aa753a8fb37b38da8293fec1c9bb09711" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">int boost::xint::is_prime </td>
+ <td class="memname">bool boost::xint::operator== </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">callback_t&nbsp;</td>
- <td class="paramname"> <em>callback</em> = <code>no_callback</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1563,49 +1369,28 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Tests an integer for primality. <ul>
-<li>Complexity: Varies</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The number to test. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>callback</em>&nbsp;</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>&nbsp;</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 randomly-selected "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 -2 instead of throwing. </dd></dl>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00933">933</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01899">1899</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a089d98ffc4599122209d1a3c1c7c39d4"></a><!-- doxytag: member="boost::xint::is_prime" ref="a089d98ffc4599122209d1a3c1c7c39d4" args="(const integer_t n, callback_t callback=no_callback)" -->
+<a class="anchor" id="af5c2bc8d95f42e9442c113d22614ac2d"></a><!-- doxytag: member="boost::xint::operator&gt;" ref="af5c2bc8d95f42e9442c113d22614ac2d" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">int boost::xint::is_prime </td>
+ <td class="memname">bool boost::xint::operator&gt; </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">callback_t&nbsp;</td>
- <td class="paramname"> <em>callback</em> = <code>no_callback</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1616,48 +1401,27 @@
 </div>
 <div class="memdoc">
 
-<p>Tests an integer for primality. </p>
-<ul>
-<li>Complexity: Varies</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The number to test. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>callback</em>&nbsp;</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>&nbsp;</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 randomly-selected "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>Definition at line <a class="el" href="integer_8hpp_source.html#l01119">1119</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01854">1854</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a0f70e8b365600e14df023c83435a56ff"></a><!-- doxytag: member="boost::xint::is_prime" ref="a0f70e8b365600e14df023c83435a56ff" args="(const fixed_integer n, callback_t callback=no_callback)" -->
+<a class="anchor" id="ad4fd77e8ed2e76028c3ae554bfc564f7"></a><!-- doxytag: member="boost::xint::operator&gt;=" ref="ad4fd77e8ed2e76028c3ae554bfc564f7" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">int boost::xint::is_prime </td>
+ <td class="memname">bool boost::xint::operator&gt;= </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">callback_t&nbsp;</td>
- <td class="paramname"> <em>callback</em> = <code>no_callback</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1668,27 +1432,27 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00731">731</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01884">1884</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ad5f8b7e50849e6bc237e881f8b531d28"></a><!-- doxytag: member="boost::xint::lcm" ref="ad5f8b7e50849e6bc237e881f8b531d28" args="(const nothrow_integer_t num1, const nothrow_integer_t num2)" -->
+<a class="anchor" id="ad5bc89da790a0843ba90a88cbc7856a6"></a><!-- doxytag: member="boost::xint::operator&gt;&gt;" ref="ad5bc89da790a0843ba90a88cbc7856a6" args="(std::basic_istream&lt; charT, traits &gt; &amp;in, integer_t &amp;n)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;... &gt; </div>
+template&lt;typename charT , typename traits , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::lcm </td>
+ <td class="memname">std::basic_istream&lt;charT,traits&gt;&amp; boost::xint::operator&gt;&gt; </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>num1</em>, </td>
+ <td class="paramtype">std::basic_istream&lt; charT, traits &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>in</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
+ <td class="paramtype">integer_t &amp;&nbsp;</td>
+ <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1698,39 +1462,28 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Calculate the Least Common Multiple of two integers. <ul>
-<li>Complexity: O((log n)<sup>3</sup> + n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>num1,num2</em>&nbsp;</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>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01152">1152</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02385">2385</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="affa4bae53c9bc3814816c70c8bb442b4"></a><!-- doxytag: member="boost::xint::lcm" ref="affa4bae53c9bc3814816c70c8bb442b4" args="(const integer_t num1, const integer_t num2)" -->
+<a class="anchor" id="a73c999d0550a46b24272e07f1720b025"></a><!-- doxytag: member="boost::xint::operator^" ref="a73c999d0550a46b24272e07f1720b025" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::lcm </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator^ </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>num1</em>, </td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1741,39 +1494,39 @@
 </div>
 <div class="memdoc">
 
-<p>Calculate the Least Common Multiple of two integers. </p>
+<p>Combine two integers using a bitwise <code>XOR</code> operation. </p>
 <ul>
-<li>Complexity: O((log n)<sup>3</sup> + n<sup>2</sup>)</li>
+<li>Complexity: O(n)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>num1,num2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01327">1327</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02138">2138</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a0ef1c4af129617e9d5f01f96edf2b867"></a><!-- doxytag: member="boost::xint::lcm" ref="a0ef1c4af129617e9d5f01f96edf2b867" args="(const fixed_integer num1, const fixed_integer num2)" -->
+<a class="anchor" id="aa8537f29fb1ade411f79084ffe170075"></a><!-- doxytag: member="boost::xint::operator|" ref="aa8537f29fb1ade411f79084ffe170075" args="(const integer_t n1, const integer_t n2)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::lcm </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator| </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>num1</em>, </td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n1</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>num2</em></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -1783,318 +1536,31 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Calculate the Least Common Multiple of two integers. <ul>
-<li>Complexity: O((log n)<sup>3</sup> + n<sup>2</sup>)</li>
+
+<p>Combine two integers using a bitwise <code>OR</code> operation. </p>
+<ul>
+<li>Complexity: O(n)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>num1,num2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter turned on. </dd></dl>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00844">844</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02111">2111</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a7e4c5b4383c8c4f23791999b999045aa"></a><!-- doxytag: member="boost::xint::log2" ref="a7e4c5b4383c8c4f23791999b999045aa" args="(const nothrow_integer_t n)" -->
+<a class="anchor" id="a499b28ba7acd8b1534bb968826e23c52"></a><!-- doxytag: member="boost::xint::pow" ref="a499b28ba7acd8b1534bb968826e23c52" args="(const integer_t n, const integer_t e)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">size_t boost::xint::log2 </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the log<sub>2</sub> value of an integer. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>pow2(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#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a> function. </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_8hpp_source.html#l01186">1186</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab6cef2e4e1b3c3b841f6c1a085952f18"></a><!-- doxytag: member="boost::xint::log2" ref="ab6cef2e4e1b3c3b841f6c1a085952f18" args="(const integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">size_t boost::xint::log2 </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Get the log<sub>2</sub> value of an integer. </p>
-<ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>pow2(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#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a> function. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01370">1370</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9d9b4f302607bcf96bd2ab2c3145f453"></a><!-- doxytag: member="boost::xint::log2" ref="a9d9b4f302607bcf96bd2ab2c3145f453" args="(const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">size_t boost::xint::log2 </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the log<sub>2</sub> value of an integer. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>pow2(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#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a> function. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00862">862</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2a45431596a3d8ce084bef4d181205d3"></a><!-- doxytag: member="boost::xint::lowestbit" ref="a2a45431596a3d8ce084bef4d181205d3" args="(const nothrow_integer_t n, bitsize_t return_if_zero=0)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::lowestbit </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Obtains the index of the lowest bit in an integer with a value of one. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</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>return_if_zero</code> if the integer contains no set bits. </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Returns <code>return_if_zero</code> instead of throwing. </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00831">831</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8f1c7103d951ba19510458166d4fd2f4"></a><!-- doxytag: member="boost::xint::lowestbit" ref="a8f1c7103d951ba19510458166d4fd2f4" args="(const integer_t n, bitsize_t return_if_zero=0)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::lowestbit </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Obtains the index of the lowest bit in an integer with a value of one. </p>
-<ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</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>return_if_zero</code> if the integer contains no set bits. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00951">951</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a88132067ca7e259160bcb7ed0b51e34f"></a><!-- doxytag: member="boost::xint::lowestbit" ref="a88132067ca7e259160bcb7ed0b51e34f" args="(const fixed_integer n, bitsize_t return_if_zero=0)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> boost::xint::lowestbit </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>return_if_zero</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Obtains the index of the lowest bit in an integer with a value of one. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to query. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>return_if_zero</em>&nbsp;</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>return_if_zero</code> if the integer contains no set bits. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00668">668</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a92435de368aa4f5c513c370917b2e6c2"></a><!-- doxytag: member="boost::xint::mulmod" ref="a92435de368aa4f5c513c370917b2e6c2" args="(const nothrow_integer_t n, const nothrow_integer_t by, const nothrow_integer_t modulus)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::mulmod </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>by</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the modular product of two integers. <ul>
-<li>Complexity: O(2n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n,by</em>&nbsp;</td><td>The integers to multiply. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</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>modulus</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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00864">864</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2503b80a8b59b45190ea024884405564"></a><!-- doxytag: member="boost::xint::mulmod" ref="a2503b80a8b59b45190ea024884405564" args="(const integer_t n, const integer_t by, const integer_t modulus)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::mulmod </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::pow </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
           <td class="paramname"> <em>n</em>, </td>
@@ -2103,13 +1569,7 @@
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>by</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
+ <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -2118,2850 +1578,107 @@
         </tr>
       </table>
 </div>
-<div class="memdoc">
-
-<p>Get the modular product of two integers. </p>
-<ul>
-<li>Complexity: O(2n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n,by</em>&nbsp;</td><td>The integers to multiply. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</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>modulus</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>Definition at line <a class="el" href="integer_8hpp_source.html#l01002">1002</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a08936f9fc3d9b799f98604bedefb1ee8"></a><!-- doxytag: member="boost::xint::mulmod" ref="a08936f9fc3d9b799f98604bedefb1ee8" args="(const fixed_integer n, const fixed_integer by, const fixed_integer modulus)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::mulmod </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>by</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00687">687</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a78fe60b6ff798332d9c972a7572a8ff3"></a><!-- doxytag: member="boost::xint::operator!=" ref="a78fe60b6ff798332d9c972a7572a8ff3" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator!= </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l01003">1003</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac6bf18fab19873cc55142b26ce11fda4"></a><!-- doxytag: member="boost::xint::operator!=" ref="ac6bf18fab19873cc55142b26ce11fda4" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator!= </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l01145">1145</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3ae00595a180a21d326ad50a072add0f"></a><!-- doxytag: member="boost::xint::operator!=" ref="a3ae00595a180a21d326ad50a072add0f" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator!= </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00750">750</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad7e11b62950cda48aa1e8288f0f49bb1"></a><!-- doxytag: member="boost::xint::operator%" ref="ad7e11b62950cda48aa1e8288f0f49bb1" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator% </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the remainder after dividing a number by another. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1</em>&nbsp;</td><td>The dividend. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n2</em>&nbsp;</td><td>The divisor.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The remainder after dividing <code>n1</code> by <code>n2</code>. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01077">1077</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aac56e280afa13284381f144a208eaf67"></a><!-- doxytag: member="boost::xint::operator%" ref="aac56e280afa13284381f144a208eaf67" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator% </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Get the remainder after dividing a number by another. </p>
-<ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1</em>&nbsp;</td><td>The dividend. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n2</em>&nbsp;</td><td>The divisor.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The remainder after dividing <code>n1</code> by <code>n2</code>. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01236">1236</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3b804d111a60509665d6a7227039aee9"></a><!-- doxytag: member="boost::xint::operator%" ref="a3b804d111a60509665d6a7227039aee9" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator% </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the remainder after dividing a number by another. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1</em>&nbsp;</td><td>The dividend. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n2</em>&nbsp;</td><td>The divisor.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The remainder after dividing <code>n1</code> by <code>n2</code>. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00795">795</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a91a76dbe5320a452f31966aae35da0bc"></a><!-- doxytag: member="boost::xint::operator&amp;" ref="a91a76dbe5320a452f31966aae35da0bc" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator&amp; </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>AND</code> operation. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in both parameters turned on. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01091">1091</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a356d6efa380af7ee2c2f6f0a83e7c9a3"></a><!-- doxytag: member="boost::xint::operator&amp;" ref="a356d6efa380af7ee2c2f6f0a83e7c9a3" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator&amp; </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Combine two integers using a bitwise <code>AND</code> operation. </p>
-<ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in both parameters turned on. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01253">1253</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad86517e5d3b5826470694001075de255"></a><!-- doxytag: member="boost::xint::operator&amp;" ref="ad86517e5d3b5826470694001075de255" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator&amp; </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>AND</code> operation. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in both parameters turned on. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00804">804</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac8008de156c89f46eb421eb4a60fb90f"></a><!-- doxytag: member="boost::xint::operator*" ref="ac8008de156c89f46eb421eb4a60fb90f" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator* </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the product of two integers. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01048">1048</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a69c9fa493989cc96676a007f58031455"></a><!-- doxytag: member="boost::xint::operator*" ref="a69c9fa493989cc96676a007f58031455" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator* </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Calculate the product of two integers. </p>
-<ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>Definition at line <a class="el" href="integer_8hpp_source.html#l01201">1201</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af877fa3d7e129eb0ea0d873396868723"></a><!-- doxytag: member="boost::xint::operator*" ref="af877fa3d7e129eb0ea0d873396868723" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator* </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the product of two integers. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00776">776</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3cb9c9351c4150e9b7f028cdf26e380b"></a><!-- doxytag: member="boost::xint::operator+" ref="a3cb9c9351c4150e9b7f028cdf26e380b" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator+ </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the sum of two integers. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01020">1020</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a88b3b7bccb96dd8b0cd9d9f853025915"></a><!-- doxytag: member="boost::xint::operator+" ref="a88b3b7bccb96dd8b0cd9d9f853025915" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator+ </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Calculate the sum of two integers. </p>
-<ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>Definition at line <a class="el" href="integer_8hpp_source.html#l01165">1165</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1e894e947435664ba17c27a93c7325e1"></a><!-- doxytag: member="boost::xint::operator+" ref="a1e894e947435664ba17c27a93c7325e1" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator+ </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00758">758</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1d5c865ffc91a6b29fc95e3cbd87e753"></a><!-- doxytag: member="boost::xint::operator&#45;" ref="a1d5c865ffc91a6b29fc95e3cbd87e753" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator- </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the difference between two integers. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01034">1034</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="acda2a7a7d63582732505cc7128096f27"></a><!-- doxytag: member="boost::xint::operator&#45;" ref="acda2a7a7d63582732505cc7128096f27" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator- </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Calculate the difference between two integers. </p>
-<ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>Definition at line <a class="el" href="integer_8hpp_source.html#l01181">1181</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af29f603561c73ae4dfefa314f854a9b9"></a><!-- doxytag: member="boost::xint::operator&#45;" ref="af29f603561c73ae4dfefa314f854a9b9" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator- </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the difference between two integers. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00767">767</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aef07a1b59c017d367cd8f129601d317f"></a><!-- doxytag: member="boost::xint::operator/" ref="aef07a1b59c017d367cd8f129601d317f" args="(const nothrow_integer_t dividend, const nothrow_integer_t divisor)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator/ </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>dividend</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</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>&nbsp;</td><td>if <code>divisor</code> is zero. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01062">1062</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a800dca196da627207b63fccd3c132c21"></a><!-- doxytag: member="boost::xint::operator/" ref="a800dca196da627207b63fccd3c132c21" args="(const integer_t dividend, const integer_t divisor)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator/ </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>dividend</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. </p>
-<ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</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>&nbsp;</td><td>if <code>divisor</code> is zero. </td></tr>
- </table>
- </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01219">1219</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2606613cee80fbd4fd17100d6d0e09b9"></a><!-- doxytag: member="boost::xint::operator/" ref="a2606613cee80fbd4fd17100d6d0e09b9" args="(const fixed_integer dividend, const fixed_integer divisor)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator/ </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>dividend</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>divisor</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>dividend,divisor</em>&nbsp;</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>&nbsp;</td><td>if <code>divisor</code> is zero. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00785">785</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a14d04f3e5d238015f70a9fd3b862c77f"></a><!-- doxytag: member="boost::xint::operator&lt;" ref="a14d04f3e5d238015f70a9fd3b862c77f" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&lt; </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l00948">948</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0a987fd73c7c0844f9ed4fdabf0f27e4"></a><!-- doxytag: member="boost::xint::operator&lt;" ref="a0a987fd73c7c0844f9ed4fdabf0f27e4" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&lt; </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l01130">1130</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a921174a41a68a6eef2584526590c18cf"></a><!-- doxytag: member="boost::xint::operator&lt;" ref="a921174a41a68a6eef2584526590c18cf" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&lt; </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00740">740</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6bb5af0935eaf4be1876c8284f116525"></a><!-- doxytag: member="boost::xint::operator&lt;&lt;" ref="a6bb5af0935eaf4be1876c8284f116525" args="(std::basic_ostream&lt; charT, traits &gt; &amp;out, const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_ostream&lt;charT,traits&gt;&amp; boost::xint::operator&lt;&lt; </td>
- <td>(</td>
- <td class="paramtype">std::basic_ostream&lt; charT, traits &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td><td>&nbsp;</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#l01255">1255</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a06ea2b89f8b6f52b2e89d0b9c51b60c0"></a><!-- doxytag: member="boost::xint::operator&lt;&lt;" ref="a06ea2b89f8b6f52b2e89d0b9c51b60c0" args="(std::basic_ostream&lt; charT, traits &gt; &amp;out, const integer_t&lt; Alloc, Threadsafe, Secure &gt; n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_ostream&lt;charT,traits&gt;&amp; boost::xint::operator&lt;&lt; </td>
- <td>(</td>
- <td class="paramtype">std::basic_ostream&lt; charT, traits &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&lt; Alloc, Threadsafe, Secure &gt;&nbsp;</td>
- <td class="paramname"> <em>n</em></td><td>&nbsp;</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#l01434">1434</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a21f7b0cbf5d79162f157c107873db431"></a><!-- doxytag: member="boost::xint::operator&lt;&lt;" ref="a21f7b0cbf5d79162f157c107873db431" args="(std::basic_ostream&lt; charT, traits &gt; &amp;out, const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename charT , typename traits , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_ostream&lt;charT,traits&gt;&amp; boost::xint::operator&lt;&lt; </td>
- <td>(</td>
- <td class="paramtype">std::basic_ostream&lt; charT, traits &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00928">928</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abffa91bfcbe1e85a36b35c0dca12911e"></a><!-- doxytag: member="boost::xint::operator&lt;=" ref="abffa91bfcbe1e85a36b35c0dca12911e" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&lt;= </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l00970">970</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9b01e116d91ad2d7d9f13138a1182d1d"></a><!-- doxytag: member="boost::xint::operator&lt;=" ref="a9b01e116d91ad2d7d9f13138a1182d1d" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&lt;= </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l01136">1136</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a980f9747bff82e9cf8744151fc91a108"></a><!-- doxytag: member="boost::xint::operator&lt;=" ref="a980f9747bff82e9cf8744151fc91a108" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&lt;= </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00744">744</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7bb742fa7f73ce4a66c3562e63093ea4"></a><!-- doxytag: member="boost::xint::operator==" ref="a7bb742fa7f73ce4a66c3562e63093ea4" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator== </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l00992">992</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa753a8fb37b38da8293fec1c9bb09711"></a><!-- doxytag: member="boost::xint::operator==" ref="aa753a8fb37b38da8293fec1c9bb09711" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator== </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l01142">1142</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac9268bd409f006775f248d03213282d5"></a><!-- doxytag: member="boost::xint::operator==" ref="ac9268bd409f006775f248d03213282d5" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator== </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00748">748</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a067985512800bf111b6381a3a6523c67"></a><!-- doxytag: member="boost::xint::operator&gt;" ref="a067985512800bf111b6381a3a6523c67" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&gt; </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l00959">959</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af5c2bc8d95f42e9442c113d22614ac2d"></a><!-- doxytag: member="boost::xint::operator&gt;" ref="af5c2bc8d95f42e9442c113d22614ac2d" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&gt; </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l01133">1133</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a492d33d92db8bf3b6b6221b8e1933228"></a><!-- doxytag: member="boost::xint::operator&gt;" ref="a492d33d92db8bf3b6b6221b8e1933228" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&gt; </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00742">742</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a049242861ecb219e864a179c4e2bd87a"></a><!-- doxytag: member="boost::xint::operator&gt;=" ref="a049242861ecb219e864a179c4e2bd87a" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&gt;= </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l00981">981</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad4fd77e8ed2e76028c3ae554bfc564f7"></a><!-- doxytag: member="boost::xint::operator&gt;=" ref="ad4fd77e8ed2e76028c3ae554bfc564f7" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&gt;= </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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#l01139">1139</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab47039ec5d5e120f869cf2d5f8d63843"></a><!-- doxytag: member="boost::xint::operator&gt;=" ref="ab47039ec5d5e120f869cf2d5f8d63843" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">bool boost::xint::operator&gt;= </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00746">746</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="add798bd386457947563587067ad497e8"></a><!-- doxytag: member="boost::xint::operator&gt;&gt;" ref="add798bd386457947563587067ad497e8" args="(std::basic_istream&lt; charT, traits &gt; &amp;in, nothrow_integer_t &amp;n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_istream&lt;charT,traits&gt;&amp; boost::xint::operator&gt;&gt; </td>
- <td>(</td>
- <td class="paramtype">std::basic_istream&lt; charT, traits &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">nothrow_integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em></td><td>&nbsp;</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#l01264">1264</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad5bc89da790a0843ba90a88cbc7856a6"></a><!-- doxytag: member="boost::xint::operator&gt;&gt;" ref="ad5bc89da790a0843ba90a88cbc7856a6" args="(std::basic_istream&lt; charT, traits &gt; &amp;in, integer_t &amp;n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_istream&lt;charT,traits&gt;&amp; boost::xint::operator&gt;&gt; </td>
- <td>(</td>
- <td class="paramtype">std::basic_istream&lt; charT, traits &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em></td><td>&nbsp;</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#l01442">1442</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a177570efda84175d3ea979894f63e5b8"></a><!-- doxytag: member="boost::xint::operator&gt;&gt;" ref="a177570efda84175d3ea979894f63e5b8" args="(std::basic_istream&lt; charT, traits &gt; &amp;in, fixed_integer &amp;n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename charT , typename traits , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">std::basic_istream&lt;charT,traits&gt;&amp; boost::xint::operator&gt;&gt; </td>
- <td>(</td>
- <td class="paramtype">std::basic_istream&lt; charT, traits &gt; &amp;&nbsp;</td>
- <td class="paramname"> <em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">fixed_integer &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00936">936</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6b65ed6783e91563d65410aa4e526a99"></a><!-- doxytag: member="boost::xint::operator^" ref="a6b65ed6783e91563d65410aa4e526a99" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator^ </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>XOR</code> operation. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01119">1119</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a73c999d0550a46b24272e07f1720b025"></a><!-- doxytag: member="boost::xint::operator^" ref="a73c999d0550a46b24272e07f1720b025" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator^ </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Combine two integers using a bitwise <code>XOR</code> operation. </p>
-<ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01287">1287</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a964396cc2b187769a3f45a7b348ce60c"></a><!-- doxytag: member="boost::xint::operator^" ref="a964396cc2b187769a3f45a7b348ce60c" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator^ </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>XOR</code> operation. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00822">822</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ace07b7c6d63117b14903f785b8d2276d"></a><!-- doxytag: member="boost::xint::operator|" ref="ace07b7c6d63117b14903f785b8d2276d" args="(const nothrow_integer_t n1, const nothrow_integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::operator| </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>OR</code> operation. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter turned on. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01105">1105</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa8537f29fb1ade411f79084ffe170075"></a><!-- doxytag: member="boost::xint::operator|" ref="aa8537f29fb1ade411f79084ffe170075" args="(const integer_t n1, const integer_t n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::operator| </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Combine two integers using a bitwise <code>OR</code> operation. </p>
-<ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter turned on. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01270">1270</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2e0a49149f74db4161870090d948e817"></a><!-- doxytag: member="boost::xint::operator|" ref="a2e0a49149f74db4161870090d948e817" args="(const fixed_integer n1, const fixed_integer n2)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::operator| </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n2</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Combine two integers using a bitwise <code>OR</code> operation. <ul>
-<li>Complexity: O(n)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n1,n2</em>&nbsp;</td><td>The integers to operate on.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>A positive integer with all bits that are set in either parameter turned on. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00813">813</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a10ae77d8cd473ef75073ef5c23631659"></a><!-- doxytag: member="boost::xint::pow" ref="a10ae77d8cd473ef75073ef5c23631659" args="(const nothrow_integer_t n, const nothrow_integer_t e)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::pow </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of n<sup>e</sup> <ul>
-<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n,e</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00706">706</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a499b28ba7acd8b1534bb968826e23c52"></a><!-- doxytag: member="boost::xint::pow" ref="a499b28ba7acd8b1534bb968826e23c52" args="(const integer_t n, const integer_t e)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::pow </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Calculate the value of n<sup>e</sup> </p>
-<ul>
-<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n,e</em>&nbsp;</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>Definition at line <a class="el" href="integer_8hpp_source.html#l00782">782</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a29a7d787472df22c7c554af6588e9102"></a><!-- doxytag: member="boost::xint::pow" ref="a29a7d787472df22c7c554af6588e9102" args="(const fixed_integer n, const fixed_integer e)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::pow </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of n<sup>e</sup> <ul>
-<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n,e</em>&nbsp;</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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00605">605</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a92c4fb70fbc30f6b0e5d3d284c4ae9a7"></a><!-- doxytag: member="boost::xint::powmod" ref="a92c4fb70fbc30f6b0e5d3d284c4ae9a7" args="(const nothrow_integer_t n, const nothrow_integer_t exponent, const nothrow_integer_t modulus, bool no_monty)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::powmod </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>exponent</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>no_monty</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></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. <ul>
-<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to exponentiate. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>exponent</em>&nbsp;</td><td>The exponent. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>no_monty</em>&nbsp;</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>&nbsp;</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 a naive implementation.</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>no_monty</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00894">894</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1108e56d7d500a384bd0bb0a6849bfa0"></a><!-- doxytag: member="boost::xint::powmod" ref="a1108e56d7d500a384bd0bb0a6849bfa0" args="(const integer_t n, const integer_t exponent, const integer_t modulus, bool no_monty=false)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::powmod </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>exponent</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>no_monty</em> = <code>false</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></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>
-<ul>
-<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to exponentiate. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>exponent</em>&nbsp;</td><td>The exponent. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>no_monty</em>&nbsp;</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>&nbsp;</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 a naive implementation.</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>no_monty</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01057">1057</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3df211c7086c4652a7e12492d7d103f7"></a><!-- doxytag: member="boost::xint::powmod" ref="a3df211c7086c4652a7e12492d7d103f7" args="(const fixed_integer n, const fixed_integer exponent, const fixed_integer modulus, bool no_monty)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::powmod </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>exponent</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>modulus</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>no_monty</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></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. <ul>
-<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to exponentiate. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>exponent</em>&nbsp;</td><td>The exponent. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>no_monty</em>&nbsp;</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>&nbsp;</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 a naive implementation.</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>no_monty</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00707">707</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="acbde618676ee2d01ce334b0ad2ee415f"></a><!-- doxytag: member="boost::xint::setbit" ref="acbde618676ee2d01ce334b0ad2ee415f" args="(nothrow_integer_t &amp;n, bitsize_t bit)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::setbit </td>
- <td>(</td>
- <td class="paramtype">nothrow_integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Sets a specific bit in an integer to one. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</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>
-<dl class="note"><dt><b>Note:</b></dt><dd>Does nothing instead of throwing. </dd></dl>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00805">805</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac16087b6d58edabc3b67c94e63e22921"></a><!-- doxytag: member="boost::xint::setbit" ref="ac16087b6d58edabc3b67c94e63e22921" args="(integer_t &amp;n, bitsize_t bit)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::setbit </td>
- <td>(</td>
- <td class="paramtype">integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets a specific bit in an integer to one. </p>
-<ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</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>Definition at line <a class="el" href="integer_8hpp_source.html#l00920">920</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a677abb914051570846048717ff0a7172"></a><!-- doxytag: member="boost::xint::setbit" ref="a677abb914051570846048717ff0a7172" args="(fixed_integer &amp;n, bitsize_t bit)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::setbit </td>
- <td>(</td>
- <td class="paramtype">fixed_integer &amp;&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Sets a specific bit in an integer to one. <ul>
-<li>Complexity: O(1)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</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="fixed__integer_8hpp_source.html#l00656">656</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="acc04d22301e5451b1cd45b42b723dfa4"></a><!-- doxytag: member="boost::xint::sqrmod" ref="acc04d22301e5451b1cd45b42b723dfa4" args="(const nothrow_integer_t n, const nothrow_integer_t modulus)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::sqrmod </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the modular product of squaring an integer. <ul>
-<li>Complexity: O(2n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to square. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>square(n)</code> % <code>modulus</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>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00879">879</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a979ddb09a4d1a5dbfcb0707c19695877"></a><!-- doxytag: member="boost::xint::sqrmod" ref="a979ddb09a4d1a5dbfcb0707c19695877" args="(const integer_t n, const integer_t modulus)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::sqrmod </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Get the modular product of squaring an integer. </p>
-<ul>
-<li>Complexity: O(2n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to square. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>square(n)</code> % <code>modulus</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>Definition at line <a class="el" href="integer_8hpp_source.html#l01025">1025</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a250379d4753bbd26002eac066114b756"></a><!-- doxytag: member="boost::xint::sqrmod" ref="a250379d4753bbd26002eac066114b756" args="(const fixed_integer n, const fixed_integer modulus)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::sqrmod </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Get the modular product of squaring an integer. <ul>
-<li>Complexity: O(2n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to square. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>square(n)</code> % <code>modulus</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>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00697">697</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0a4a7562e6fd3597b26a1cad4a76b834"></a><!-- doxytag: member="boost::xint::sqrt" ref="a0a4a7562e6fd3597b26a1cad4a76b834" args="(const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::sqrt </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the square root of <code>an</code> integer. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>&nbsp;</td><td>if <code>n</code> is negative. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00721">721</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a730b703534656d2f4d96484d7bb8cfc6"></a><!-- doxytag: member="boost::xint::sqrt" ref="a730b703534656d2f4d96484d7bb8cfc6" args="(const integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::sqrt </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Calculate the square root of <code>an</code> integer. </p>
-<ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>&nbsp;</td><td>if <code>n</code> is negative. </td></tr>
- </table>
- </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00803">803</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3f266530ae26fd9553a7b965fa1db2ea"></a><!-- doxytag: member="boost::xint::sqrt" ref="a3f266530ae26fd9553a7b965fa1db2ea" args="(const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::sqrt </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the square root of <code>an</code> integer. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>&nbsp;</td><td>if <code>n</code> is negative. </td></tr>
- </table>
- </dd>
-</dl>
- </p>
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00615">615</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac6704f0c9e4050d1076791dff3067eb9"></a><!-- doxytag: member="boost::xint::square" ref="ac6704f0c9e4050d1076791dff3067eb9" args="(const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">nothrow_integer_t</a> boost::xint::square </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Calculate the value of n<sup>2</sup> <ul>
-<li>Complexity: O(n(n+1)/2)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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 more-efficient algorithm than standard multiplication. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00693">693</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abe5e63185f27f2c795dc287e030ec424"></a><!-- doxytag: member="boost::xint::square" ref="abe5e63185f27f2c795dc287e030ec424" args="(const integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::square </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Calculate the value of n<sup>2</sup> </p>
-<ul>
-<li>Complexity: O(n(n+1)/2)</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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 more-efficient algorithm than standard multiplication. </p>
-
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00767">767</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac3f13e684b487865506362e4b382bc11"></a><!-- doxytag: member="boost::xint::square" ref="ac3f13e684b487865506362e4b382bc11" args="(const fixed_integer n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classboost_1_1xint_1_1fixed__integer.html">fixed_integer</a> boost::xint::square </td>
- <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00597">597</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5df93e9ae7f561d923bb90afd9cbd2d8"></a><!-- doxytag: member="boost::xint::swap" ref="a5df93e9ae7f561d923bb90afd9cbd2d8" args="(nothrow_integer_t &amp;left, nothrow_integer_t &amp;right)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::swap </td>
- <td>(</td>
- <td class="paramtype">nothrow_integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">nothrow_integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>right</em></td><td>&nbsp;</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#l01292">1292</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1a857d5cc4b15822d3dcaf70ec15b4e5"></a><!-- doxytag: member="boost::xint::swap" ref="a1a857d5cc4b15822d3dcaf70ec15b4e5" args="(integer_t &amp;left, integer_t &amp;right)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::swap </td>
- <td>(</td>
- <td class="paramtype">integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">integer_t &amp;&nbsp;</td>
- <td class="paramname"> <em>right</em></td><td>&nbsp;</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#l01450">1450</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a00ebb69a2c4e772f6ae9de36b4430d62"></a><!-- doxytag: member="boost::xint::swap" ref="a00ebb69a2c4e772f6ae9de36b4430d62" args="(fixed_integer &amp;left, fixed_integer &amp;right)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;... &gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">void boost::xint::swap </td>
- <td>(</td>
- <td class="paramtype">fixed_integer &amp;&nbsp;</td>
- <td class="paramname"> <em>left</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">fixed_integer &amp;&nbsp;</td>
- <td class="paramname"> <em>right</em></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00944">944</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad7639155422020e4f347e0f96b60069a"></a><!-- doxytag: member="boost::xint::to" ref="ad7639155422020e4f347e0f96b60069a" args="(const nothrow_integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename Type , class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Type boost::xint::to </td>
- <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p>Converts an <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">xint::integer</a> type 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>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>if <code>n</code> would not fit into the specified type.</td></tr>
- </table>
- </dd>
-</dl>
-<p>This function provides the most efficient means of converting to a built-in integral type. </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#l00741">741</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a36b0be620a1e56f439dde05db5d0033b"></a><!-- doxytag: member="boost::xint::to" ref="a36b0be620a1e56f439dde05db5d0033b" args="(const integer_t n)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template&lt;typename Type , class Alloc , bool Threadsafe, bool Secure&gt; </div>
- <table class="memname">
- <tr>
- <td class="memname">Type boost::xint::to </td>
- <td>(</td>
- <td class="paramtype">const integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Converts an <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">xint::integer</a> type 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>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</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>&nbsp;</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>
+<div class="memdoc">
+
+<p>Calculate the value of n<sup>e</sup> </p>
+<ul>
+<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
+</ul>
+<dl><dt><b>Parameters:</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>&nbsp;</td><td>if <code>n</code> would not fit into the specified type.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n,e</em>&nbsp;</td><td>The integers to operate on.</td></tr>
   </table>
   </dd>
 </dl>
-<p>This function provides the most efficient means of converting to a built-in integral type. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> to the power of <code>e</code>. </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00830">830</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01325">1325</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="addfb10ab763fc55ecd4123c9a93769a0"></a><!-- doxytag: member="boost::xint::to" ref="addfb10ab763fc55ecd4123c9a93769a0" args="(const fixed_integer n)" -->
+<a class="anchor" id="a1108e56d7d500a384bd0bb0a6849bfa0"></a><!-- doxytag: member="boost::xint::powmod" ref="a1108e56d7d500a384bd0bb0a6849bfa0" args="(const integer_t n, const integer_t exponent, const integer_t modulus, bool no_monty=false)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template&lt;typename Type , bitsize_t Bits, class Alloc , bool Threadsafe, bool Secure&gt; </div>
+template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">Type boost::xint::to </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::powmod </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em></td>
- <td>&nbsp;)&nbsp;</td>
- <td><code> [inline]</code></td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>exponent</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>modulus</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>no_monty</em> = <code>false</code></td><td>&nbsp;</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="fixed__integer_8hpp_source.html#l00627">627</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. </p>
+<ul>
+<li>Complexity: O(n<sub>n</sub><sup>2</sup>n<sub>e</sub>)</li>
+</ul>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to exponentiate. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>exponent</em>&nbsp;</td><td>The exponent. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>no_monty</em>&nbsp;</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>&nbsp;</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 a naive implementation.</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>no_monty</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01727">1727</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="adbfaf0dd58a326a1d333b648588d60b7"></a><!-- doxytag: member="boost::xint::to_binary" ref="adbfaf0dd58a326a1d333b648588d60b7" args="(const nothrow_integer_t n, bitsize_t bits=0)" -->
+<a class="anchor" id="ac16087b6d58edabc3b67c94e63e22921"></a><!-- doxytag: member="boost::xint::setbit" ref="ac16087b6d58edabc3b67c94e63e22921" args="(integer_t &amp;n, bitsize_t bit)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a> boost::xint::to_binary </td>
+ <td class="memname">void boost::xint::setbit </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
+ <td class="paramtype">integer_t &amp;&nbsp;</td>
           <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bits</em> = <code>0</code></td><td>&nbsp;</td>
+ <td class="paramname"> <em>bit</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -4971,41 +1688,32 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Creates a binary representation of an integer. <ul>
-<li>Complexity: O(n)</li>
+
+<p>Sets a specific bit in an integer to one. </p>
+<ul>
+<li>Complexity: O(1)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to convert. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bits</em>&nbsp;</td><td>The number of bits to pack into each character (for portability with systems that might not have characters with the same number of bits), or zero (the default) to assume the number of bits in the current system's unsigned character type.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An <code><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a></code> containing the binary representation, lowest byte first.</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>&nbsp;</td><td>if <code>bits</code> is greater than the number of bits in an unsigned character.</td></tr>
+ <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bit</em>&nbsp;</td><td>The zero-based index of the bit to change.</td></tr>
   </table>
   </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 desirable 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="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e" title="Converts a portable binary representation of a number into an integer.">integer_t::integer_t(xint::binary_t, bitsize_t bits)</a> </dd></dl>
-</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>Returns an empty <code>binary_t</code> object instead of throwing. Note that a zero value will also return an empty <code>binary_t</code> object. </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00772">772</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01525">1525</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a66514eef6594409cda1dfad652e2dc40"></a><!-- doxytag: member="boost::xint::to_binary" ref="a66514eef6594409cda1dfad652e2dc40" args="(const integer_t n, bitsize_t bits=0)" -->
+<a class="anchor" id="a979ddb09a4d1a5dbfcb0707c19695877"></a><!-- doxytag: member="boost::xint::sqrmod" ref="a979ddb09a4d1a5dbfcb0707c19695877" args="(const integer_t n, const integer_t modulus)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a> boost::xint::to_binary </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::sqrmod </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
           <td class="paramname"> <em>n</em>, </td>
@@ -5013,8 +1721,8 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bitsize_t&nbsp;</td>
- <td class="paramname"> <em>bits</em> = <code>0</code></td><td>&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>modulus</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -5025,107 +1733,116 @@
 </div>
 <div class="memdoc">
 
-<p>Creates a binary representation of an integer. </p>
+<p>Get the modular product of squaring an integer. </p>
 <ul>
-<li>Complexity: O(n)</li>
+<li>Complexity: O(2n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to convert. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bits</em>&nbsp;</td><td>The number of bits to pack into each character (for portability with systems that might not have characters with the same number of bits), or zero (the default) to assume the number of bits in the current system's unsigned character type.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to square. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>modulus</em>&nbsp;</td><td>The modulus.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An <code><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a></code> containing the binary representation, lowest byte first.</dd></dl>
-<dl><dt><b>Exceptions:</b></dt><dd>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>square(n)</code> % <code>modulus</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>Definition at line <a class="el" href="integer_8hpp_source.html#l01684">1684</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abe5e63185f27f2c795dc287e030ec424"></a><!-- doxytag: member="boost::xint::square" ref="abe5e63185f27f2c795dc287e030ec424" args="(const integer_t n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;... &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::square </td>
+ <td>(</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of n<sup>2</sup> </p>
+<ul>
+<li>Complexity: O(n(n+1)/2)</li>
+</ul>
+<dl><dt><b>Parameters:</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>&nbsp;</td><td>if <code>bits</code> is greater than the number of bits in an unsigned character.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to operate on.</td></tr>
   </table>
   </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 desirable 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="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e" title="Converts a portable binary representation of a number into an integer.">integer_t::integer_t(xint::binary_t, bitsize_t bits)</a> </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> times <code>n</code>.</dd></dl>
+<p>The repetitive nature of the input (multiplying a number by itself) allows this function to use a more-efficient algorithm than standard multiplication. </p>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00887">887</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01299">1299</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ac1c6eb0f3c5166761d81503fa68f4b78"></a><!-- doxytag: member="boost::xint::to_binary" ref="ac1c6eb0f3c5166761d81503fa68f4b78" args="(const fixed_integer n, size_t bits=0)" -->
+<a class="anchor" id="adb652fa006fd8ed34993ea86cf317cb2"></a><!-- doxytag: member="boost::xint::square_root" ref="adb652fa006fd8ed34993ea86cf317cb2" args="(const integer_t n)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a> boost::xint::to_binary </td>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer__t.html">integer_t</a> boost::xint::square_root </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>bits</em> = <code>0</code></td><td>&nbsp;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-<p>Creates a binary representation of an integer. <ul>
-<li>Complexity: O(n)</li>
+
+<p>Calculate the square root of <code>an</code> integer. </p>
+<ul>
+<li>Complexity: O(n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to convert. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bits</em>&nbsp;</td><td>The number of bits to pack into each character (for portability with systems that might not have characters with the same number of bits), or zero (the default) to assume the number of bits in the current system's unsigned character type.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The value to operate on.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An <code><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a></code> containing the binary representation, lowest byte first.</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_1invalid__argument.html">exceptions::invalid_argument</a></em>&nbsp;</td><td>if <code>bits</code> is greater than the number of bits in an unsigned character.</td></tr>
+ <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>&nbsp;</td><td>if <code>n</code> is negative. </td></tr>
   </table>
   </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 desirable 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="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e" title="Converts a portable binary representation of a number into an integer.">integer_t::integer_t(xint::binary_t, bitsize_t bits)</a> </dd></dl>
- </p>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00641">641</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01359">1359</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ad512da0b0312cfcf3ddea15dff14cf93"></a><!-- doxytag: member="boost::xint::to_string" ref="ad512da0b0312cfcf3ddea15dff14cf93" args="(const nothrow_integer_t n, size_t base=10, bool uppercase=false)" -->
+<a class="anchor" id="a1a857d5cc4b15822d3dcaf70ec15b4e5"></a><!-- doxytag: member="boost::xint::swap" ref="a1a857d5cc4b15822d3dcaf70ec15b4e5" args="(integer_t &amp;left, integer_t &amp;right)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">std::string boost::xint::to_string </td>
+ <td class="memname">void boost::xint::swap </td>
           <td>(</td>
- <td class="paramtype">const nothrow_integer_t&nbsp;</td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code>, </td>
+ <td class="paramtype">integer_t &amp;&nbsp;</td>
+ <td class="paramname"> <em>left</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>uppercase</em> = <code>false</code></td><td>&nbsp;</td>
+ <td class="paramtype">integer_t &amp;&nbsp;</td>
+ <td class="paramname"> <em>right</em></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -5135,40 +1852,63 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Creates a string representation of the specified integer. <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
-</ul>
+
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l02412">2412</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afd9d2c7743d11e6959d6cda44c8abf69"></a><!-- doxytag: member="boost::xint::to" ref="afd9d2c7743d11e6959d6cda44c8abf69" args="(const integer_t n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T , class A0 , class A1 , class A2 , class A3 , class A4 &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">T boost::xint::to </td>
+ <td>(</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Converts an <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c" title="The default arbitrary-length integer type.">xint::integer</a> type 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>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to convert. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>uppercase</em>&nbsp;</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>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em>&nbsp;</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_1invalid__base.html">exceptions::invalid_base</a></em>&nbsp;</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_1exceptions_1_1too__big.html">exceptions::too_big</a></em>&nbsp;</td><td>if <code>n</code> would not fit into the specified type.</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 string instead of throwing. </dd></dl>
+<p>This function provides the most efficient means of converting to a built-in integral type. The nothrow&lt;true&gt; version returns T(0) instead of throwing. </p>
 
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00755">755</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01397">1397</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a34f1da34b7c169828bf55154f3cbccf2"></a><!-- doxytag: member="boost::xint::to_string" ref="a34f1da34b7c169828bf55154f3cbccf2" args="(const integer_t n, size_t base=10, bool uppercase=false)" -->
+<a class="anchor" id="a66514eef6594409cda1dfad652e2dc40"></a><!-- doxytag: member="boost::xint::to_binary" ref="a66514eef6594409cda1dfad652e2dc40" args="(const integer_t n, bitsize_t bits=0)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
 template&lt;... &gt; </div>
       <table class="memname">
         <tr>
- <td class="memname">std::string boost::xint::to_string </td>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58">xint::binary_t</a> boost::xint::to_binary </td>
           <td>(</td>
           <td class="paramtype">const integer_t&nbsp;</td>
           <td class="paramname"> <em>n</em>, </td>
@@ -5176,14 +1916,8 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
- <td class="paramtype">size_t&nbsp;</td>
- <td class="paramname"> <em>base</em> = <code>10</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool&nbsp;</td>
- <td class="paramname"> <em>uppercase</em> = <code>false</code></td><td>&nbsp;</td>
+ <td class="paramtype">bitsize_t&nbsp;</td>
+ <td class="paramname"> <em>bits</em> = <code>0</code></td><td>&nbsp;</td>
         </tr>
         <tr>
           <td></td>
@@ -5194,32 +1928,33 @@
 </div>
 <div class="memdoc">
 
-<p>Creates a string representation of the specified integer. </p>
+<p>Creates a binary representation of an integer. </p>
 <ul>
-<li>Complexity: O(n<sup>2</sup>)</li>
+<li>Complexity: O(n)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>The integer to convert. </td></tr>
- <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>uppercase</em>&nbsp;</td><td>Whether to make alphabetic characters (for bases greater than ten) uppercase or not. Defaults to <code>false</code>.</td></tr>
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bits</em>&nbsp;</td><td>The number of bits to pack into each character (for portability with systems that might not have characters with the same number of bits), or zero (the default) to assume the number of bits in the current system's unsigned character type.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <code><a class="el" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a></code> containing the binary representation, lowest byte first. The nothrow&lt;true&gt; version returns an empty <code>binary_t</code> object instead of throwing.</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>&nbsp;</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_1exceptions_1_1invalid__argument.html">exceptions::invalid_argument</a></em>&nbsp;</td><td>if <code>bits</code> is greater than the number of bits in an unsigned character.</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>
+<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 desirable 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="classboost_1_1xint_1_1integer__t.html#a864a599e2de326e6e339ffc820fd849e" title="Converts a portable binary representation of a number into an integer.">integer_t::integer_t(xint::binary_t, bitsize_t bits)</a> </dd></dl>
 
-<p>Definition at line <a class="el" href="integer_8hpp_source.html#l00854">854</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01474">1474</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a6ae4ddf930587218746f08a2a5982746"></a><!-- doxytag: member="boost::xint::to_string" ref="a6ae4ddf930587218746f08a2a5982746" args="(const fixed_integer n, size_t base=10, bool uppercase=false)" -->
+<a class="anchor" id="a34f1da34b7c169828bf55154f3cbccf2"></a><!-- doxytag: member="boost::xint::to_string" ref="a34f1da34b7c169828bf55154f3cbccf2" args="(const integer_t n, size_t base=10, bool uppercase=false)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -5228,7 +1963,7 @@
         <tr>
           <td class="memname">std::string boost::xint::to_string </td>
           <td>(</td>
- <td class="paramtype">const fixed_integer&nbsp;</td>
+ <td class="paramtype">const integer_t&nbsp;</td>
           <td class="paramname"> <em>n</em>, </td>
         </tr>
         <tr>
@@ -5251,7 +1986,9 @@
       </table>
 </div>
 <div class="memdoc">
-<p>Creates a string representation of the specified integer. <ul>
+
+<p>Creates a string representation of the specified integer. </p>
+<ul>
 <li>Complexity: O(n<sup>2</sup>)</li>
 </ul>
 <dl><dt><b>Parameters:</b></dt><dd>
@@ -5262,7 +1999,7 @@
   </table>
   </dd>
 </dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>.</dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>. The nothrow&lt;true&gt; version returns the string "#NaN#" if <code>n</code> is a Not-a-Number, and an empty string instead of throwing.</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>&nbsp;</td><td>if base is less than two or greater than 36.</td></tr>
@@ -5270,9 +2007,8 @@
   </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>
 
-<p>Definition at line <a class="el" href="fixed__integer_8hpp_source.html#l00633">633</a> of file <a class="el" href="fixed__integer_8hpp_source.html">fixed_integer.hpp</a>.</p>
+<p>Definition at line <a class="el" href="integer_8hpp_source.html#l01431">1431</a> of file <a class="el" href="integer_8hpp_source.html">integer.hpp</a>.</p>
 
 </div>
 </div>
@@ -5290,7 +2026,7 @@
 
 <p>A value that can be used for the 'base' parameter of the string-to-integer constructor functions. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00074">74</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00081">81</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
@@ -5307,12 +2043,12 @@
 
 <p>An empty callback_t, used as a default parameter for some functions. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00067">67</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
+<p>Definition at line <a class="el" href="basic__types__and__includes_8hpp_source.html#l00074">74</a> of file <a class="el" href="basic__types__and__includes_8hpp_source.html">basic_types_and_includes.hpp</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespaceboost_1_1xint_1_1detail.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1detail.html (original)
+++ sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1detail.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -35,7 +35,7 @@
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>The items within this namespace are meant for internal use only. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespaceboost_1_1xint_1_1exceptions.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1exceptions.html (original)
+++ sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1exceptions.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -46,7 +46,7 @@
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespaceboost_1_1xint_1_1options.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/namespaceboost_1_1xint_1_1options.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,84 @@
+<!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::options 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 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_1options.html">options</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::options Namespace Reference</h1>
+<p>Options for the <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> template are stored in 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">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength.html">fixedlength</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">fixedlength_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">nothrow</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">nothrow_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1secure.html">secure</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">secure_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe.html">threadsafe</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">threadsafe_base</a></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef parameter::parameters<br class="typebreak"/>
+&lt; optional&lt; deduced<br class="typebreak"/>
+&lt; tag::fixedlength_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; <a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">fixedlength_base</a>, <br class="typebreak"/>
+_ &gt; &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::threadsafe_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; <a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">threadsafe_base</a>, <br class="typebreak"/>
+_ &gt; &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::secure_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; <a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">secure_base</a>, _ &gt;<br class="typebreak"/>
+ &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::nothrow_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; <a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">nothrow_base</a>, _ &gt;<br class="typebreak"/>
+ &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::allocator_tag &gt;<br class="typebreak"/>
+, is_class&lt; _ &gt; &gt;&gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1options.html#af65b057a2b140d4ca9daec17bba31722">integer_signature</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Options for the <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> template are stored in this namespace. </p>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="af65b057a2b140d4ca9daec17bba31722"></a><!-- doxytag: member="boost::xint::options::integer_signature" ref="af65b057a2b140d4ca9daec17bba31722" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef parameter::parameters&lt; optional&lt;deduced&lt;tag::fixedlength_tag&gt;, is_base_of&lt;<a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">fixedlength_base</a>, _&gt; &gt;, optional&lt;deduced&lt;tag::threadsafe_tag&gt;, is_base_of&lt;<a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">threadsafe_base</a>, _&gt; &gt;, optional&lt;deduced&lt;tag::secure_tag&gt;, is_base_of&lt;<a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">secure_base</a>, _&gt; &gt;, optional&lt;deduced&lt;tag::nothrow_tag&gt;, is_base_of&lt;<a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">nothrow_base</a>, _&gt; &gt;, optional&lt;deduced&lt;tag::allocator_tag&gt;, is_class&lt;_&gt; &gt;&gt; <a class="el" href="namespaceboost_1_1xint_1_1options.html#af65b057a2b140d4ca9daec17bba31722">boost::xint::options::integer_signature</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00058">58</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/namespacemembers.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespacemembers.html (original)
+++ sandbox/xint/libs/xint/doc/namespacemembers.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -55,7 +55,7 @@
 
 <h3><a class="anchor" id="index_a">- a -</a></h3><ul>
 <li>abs()
-: <a class="el" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523">boost::xint</a>
 </li>
 <li>autobase
 : <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint</a>
@@ -78,34 +78,34 @@
 : <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint</a>
 </li>
 <li>clearbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175">boost::xint</a>
 </li>
 <li>compare()
-: <a class="el" href="namespaceboost_1_1xint.html#ad198e5679c816eb58edbd8910a2a3e22">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_d">- d -</a></h3><ul>
 <li>divide()
-: <a class="el" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4">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.html#a808dafe43afa6f06a5a44b0e956b885a">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e">boost::xint</a>
 </li>
 <li>getbit()
-: <a class="el" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba">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.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0">boost::xint</a>
 </li>
 </ul>
 
@@ -114,90 +114,96 @@
 <li>integer
 : <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">boost::xint</a>
 </li>
+<li>integer_signature
+: <a class="el" href="namespaceboost_1_1xint_1_1options.html#af65b057a2b140d4ca9daec17bba31722">boost::xint::options</a>
+</li>
 <li>invmod()
-: <a class="el" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad">boost::xint</a>
 </li>
 <li>is_prime()
-: <a class="el" href="namespaceboost_1_1xint.html#a7b44943a74e4c544b7691c2e0a24a32c">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4">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.html#a0ef1c4af129617e9d5f01f96edf2b867">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4">boost::xint</a>
 </li>
 <li>log2()
-: <a class="el" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18">boost::xint</a>
 </li>
 <li>lowestbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a2a45431596a3d8ce084bef4d181205d3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_m">- m -</a></h3><ul>
 <li>mulmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nan_text()
+: <a class="el" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b">boost::xint</a>
+</li>
 <li>no_callback
 : <a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">boost::xint</a>
 </li>
 <li>nothrow_integer
-: <a class="el" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4">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.html#a3ae00595a180a21d326ad50a072add0f">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">boost::xint</a>
 </li>
 <li>operator%()
-: <a class="el" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67">boost::xint</a>
 </li>
 <li>operator&amp;()
 : <a class="el" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3">boost::xint</a>
 </li>
 <li>operator*()
-: <a class="el" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455">boost::xint</a>
 </li>
 <li>operator+()
-: <a class="el" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915">boost::xint</a>
 </li>
 <li>operator-()
-: <a class="el" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27">boost::xint</a>
 </li>
 <li>operator/()
-: <a class="el" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21">boost::xint</a>
 </li>
 <li>operator&lt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">boost::xint</a>
 </li>
 <li>operator&lt;&lt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a6bb5af0935eaf4be1876c8284f116525">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">boost::xint</a>
 </li>
 <li>operator&lt;=()
-: <a class="el" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">boost::xint</a>
 </li>
 <li>operator==()
 : <a class="el" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">boost::xint</a>
 </li>
 <li>operator&gt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">boost::xint</a>
 </li>
 <li>operator&gt;=()
 : <a class="el" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">boost::xint</a>
 </li>
 <li>operator&gt;&gt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">boost::xint</a>
 </li>
 <li>operator^()
-: <a class="el" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025">boost::xint</a>
 </li>
 <li>operator|()
 : <a class="el" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075">boost::xint</a>
@@ -207,27 +213,27 @@
 
 <h3><a class="anchor" id="index_p">- p -</a></h3><ul>
 <li>pow()
-: <a class="el" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52">boost::xint</a>
 </li>
 <li>powmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_s">- s -</a></h3><ul>
 <li>setbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921">boost::xint</a>
 </li>
 <li>sqrmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">boost::xint</a>
-</li>
-<li>sqrt()
-: <a class="el" href="namespaceboost_1_1xint.html#a730b703534656d2f4d96484d7bb8cfc6">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877">boost::xint</a>
 </li>
 <li>square()
 : <a class="el" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424">boost::xint</a>
 </li>
+<li>square_root()
+: <a class="el" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2">boost::xint</a>
+</li>
 <li>strong_random_generator
 : <a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">boost::xint</a>
 </li>
@@ -239,17 +245,17 @@
 
 <h3><a class="anchor" id="index_t">- t -</a></h3><ul>
 <li>to()
-: <a class="el" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#afd9d2c7743d11e6959d6cda44c8abf69">boost::xint</a>
 </li>
 <li>to_binary()
-: <a class="el" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40">boost::xint</a>
 </li>
 <li>to_string()
-: <a class="el" href="namespaceboost_1_1xint.html#ad512da0b0312cfcf3ddea15dff14cf93">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2">boost::xint</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespacemembers_func.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespacemembers_func.html (original)
+++ sandbox/xint/libs/xint/doc/namespacemembers_func.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -41,6 +41,7 @@
       <li>i</li>
       <li>l</li>
       <li>m</li>
+ <li>n</li>
       <li>o</li>
       <li>p</li>
       <li>s</li>
@@ -53,120 +54,127 @@
 
 <h3><a class="anchor" id="index_a">- a -</a></h3><ul>
 <li>abs()
-: <a class="el" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523">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.html#a05dfa039837daba29cfac939335b8364">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9f0fe7813dc7e6d6d92b64cd68677175">boost::xint</a>
 </li>
 <li>compare()
-: <a class="el" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a740189c9646dcda553f1bd9de200cdd0">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_d">- d -</a></h3><ul>
 <li>divide()
-: <a class="el" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a7d5e37941c1085e1cc1e513d9f1857b4">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.html#a808dafe43afa6f06a5a44b0e956b885a">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a011ac7b423cee444f6728ca2b061f31e">boost::xint</a>
 </li>
 <li>getbit()
-: <a class="el" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ae44f7918320a37538c5fa8e4622cbfba">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.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a47f175d3a516b6e9e851890e2ce4a9b0">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_i">- i -</a></h3><ul>
 <li>invmod()
-: <a class="el" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ada4e628fe2275e6d6459b9b87167cbad">boost::xint</a>
 </li>
 <li>is_prime()
-: <a class="el" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4">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.html#a0ef1c4af129617e9d5f01f96edf2b867">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#affa4bae53c9bc3814816c70c8bb442b4">boost::xint</a>
 </li>
 <li>log2()
-: <a class="el" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18">boost::xint</a>
 </li>
 <li>lowestbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a2a45431596a3d8ce084bef4d181205d3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a8f1c7103d951ba19510458166d4fd2f4">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_m">- m -</a></h3><ul>
 <li>mulmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a2503b80a8b59b45190ea024884405564">boost::xint</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nan_text()
+: <a class="el" href="namespaceboost_1_1xint.html#ac80b017fceb4774cc3ff5a01a6d70d1b">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.html#a3ae00595a180a21d326ad50a072add0f">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac6bf18fab19873cc55142b26ce11fda4">boost::xint</a>
 </li>
 <li>operator%()
-: <a class="el" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#aac56e280afa13284381f144a208eaf67">boost::xint</a>
 </li>
 <li>operator&amp;()
 : <a class="el" href="namespaceboost_1_1xint.html#a356d6efa380af7ee2c2f6f0a83e7c9a3">boost::xint</a>
 </li>
 <li>operator*()
-: <a class="el" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a69c9fa493989cc96676a007f58031455">boost::xint</a>
 </li>
 <li>operator+()
-: <a class="el" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915">boost::xint</a>
 </li>
 <li>operator-()
-: <a class="el" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27">boost::xint</a>
 </li>
 <li>operator/()
-: <a class="el" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a800dca196da627207b63fccd3c132c21">boost::xint</a>
 </li>
 <li>operator&lt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a0a987fd73c7c0844f9ed4fdabf0f27e4">boost::xint</a>
 </li>
 <li>operator&lt;&lt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a6bb5af0935eaf4be1876c8284f116525">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">boost::xint</a>
 </li>
 <li>operator&lt;=()
-: <a class="el" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a9b01e116d91ad2d7d9f13138a1182d1d">boost::xint</a>
 </li>
 <li>operator==()
 : <a class="el" href="namespaceboost_1_1xint.html#aa753a8fb37b38da8293fec1c9bb09711">boost::xint</a>
 </li>
 <li>operator&gt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af5c2bc8d95f42e9442c113d22614ac2d">boost::xint</a>
 </li>
 <li>operator&gt;=()
 : <a class="el" href="namespaceboost_1_1xint.html#ad4fd77e8ed2e76028c3ae554bfc564f7">boost::xint</a>
 </li>
 <li>operator&gt;&gt;()
-: <a class="el" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">boost::xint</a>
 </li>
 <li>operator^()
-: <a class="el" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a73c999d0550a46b24272e07f1720b025">boost::xint</a>
 </li>
 <li>operator|()
 : <a class="el" href="namespaceboost_1_1xint.html#aa8537f29fb1ade411f79084ffe170075">boost::xint</a>
@@ -176,46 +184,46 @@
 
 <h3><a class="anchor" id="index_p">- p -</a></h3><ul>
 <li>pow()
-: <a class="el" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52">boost::xint</a>
 </li>
 <li>powmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_s">- s -</a></h3><ul>
 <li>setbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921">boost::xint</a>
 </li>
 <li>sqrmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">boost::xint</a>
-</li>
-<li>sqrt()
-: <a class="el" href="namespaceboost_1_1xint.html#a730b703534656d2f4d96484d7bb8cfc6">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877">boost::xint</a>
 </li>
 <li>square()
 : <a class="el" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424">boost::xint</a>
 </li>
+<li>square_root()
+: <a class="el" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2">boost::xint</a>
+</li>
 <li>swap()
-: <a class="el" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">boost::xint</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_t">- t -</a></h3><ul>
 <li>to()
-: <a class="el" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#afd9d2c7743d11e6959d6cda44c8abf69">boost::xint</a>
 </li>
 <li>to_binary()
-: <a class="el" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a66514eef6594409cda1dfad652e2dc40">boost::xint</a>
 </li>
 <li>to_string()
-: <a class="el" href="namespaceboost_1_1xint.html#ad512da0b0312cfcf3ddea15dff14cf93">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2">boost::xint</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespacemembers_type.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespacemembers_type.html (original)
+++ sandbox/xint/libs/xint/doc/namespacemembers_type.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -46,15 +46,18 @@
 <li>integer
 : <a class="el" href="namespaceboost_1_1xint.html#a3f9537c30e9c1f7341574fcd0223147c">boost::xint</a>
 </li>
+<li>integer_signature
+: <a class="el" href="namespaceboost_1_1xint_1_1options.html#af65b057a2b140d4ca9daec17bba31722">boost::xint::options</a>
+</li>
 <li>nothrow_integer
-: <a class="el" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#af3a28f270195952c3bbe42bff5bf2cd4">boost::xint</a>
 </li>
 <li>strong_random_generator
 : <a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">boost::xint</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespacemembers_vars.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespacemembers_vars.html (original)
+++ sandbox/xint/libs/xint/doc/namespacemembers_vars.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -42,7 +42,7 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/namespaces.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespaces.html (original)
+++ sandbox/xint/libs/xint/doc/namespaces.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -30,10 +30,10 @@
   <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">STL namespace </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a></td><td class="indexvalue">Options for the <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> template are stored in this namespace </td></tr>
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/namespacestd.html
==============================================================================
--- sandbox/xint/libs/xint/doc/namespacestd.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,166 +0,0 @@
-<!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 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 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>
-<div class="contents">
-<h1>std Namespace Reference</h1>
-<p>STL 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 &nbsp;</td><td class="memItemRight" valign="bottom"><b>allocator</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>auto_ptr</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>bad_alloc</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>bad_cast</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>bad_exception</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>bad_typeid</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_fstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_ifstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_ios</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_iostream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_istream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_istringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_ofstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_ostream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_ostringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_string</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>basic_stringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>bitset</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>complex</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>deque</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>domain_error</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>exception</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>fstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>ifstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>invalid_argument</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>ios</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>ios_base</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>istream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>istringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>length_error</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>list</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>logic_error</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>map</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>multimap</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>multiset</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1fixed__integer_01_4.html">numeric_limits&lt; boost::xint::fixed_integer &gt;</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</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&lt; boost::xint::integer &gt;</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</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&lt; boost::xint::nothrow_integer &gt;</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>ofstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>ostream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>ostringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>out_of_range</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>overflow_error</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>priority_queue</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>queue</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>range_error</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>runtime_error</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>set</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>stack</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>string</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>stringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>underflow_error</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>valarray</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>vector</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wfstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wifstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wios</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wistream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wistringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wofstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wostream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wostringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wstring</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>wstringstream</b></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">STL class. <br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>STL namespace. </p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/nan.html
==============================================================================
--- sandbox/xint/libs/xint/doc/nan.html (original)
+++ sandbox/xint/libs/xint/doc/nan.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -23,21 +23,22 @@
 <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 <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>
+<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</code> variants of the <code>integer_t</code> type provide a Not-a-Number value.</p>
+<p>(Note that this value can <em>only</em> be held by the <code>Nothrow</code> variants of <code>integer_t</code>. If you try to assign it to another variant, you'll get a <code>not_a_number</code> exception.)</p>
+<p>To create a Not-a-Number, use the <code>integer_t::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>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>
+<li>If a function that returns a <code>Nothrow</code> integer 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 <code>nothrow_integer::is_nan</code>.</li>
+<li>Test for it, using the member function <code>integer_t::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 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>
+<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 an <code>integer_t</code>). </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/nan_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/nan_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/nan_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/nothrow__integer_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/nothrow__integer_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,297 +0,0 @@
-<!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>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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1nothrow__integer__t.html">boost::xint::nothrow_integer_t&lt;&gt;</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The nothrow_integer_t class template. More...<br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</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&lt; boost::xint::nothrow_integer &gt;</a></td></tr>
-<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-
-<p><tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
-
-<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>STL namespace. </p>
-<br/></td></tr>
-</p>
-<tr><td colspan="2"><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="nothrow__integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">BOOST_XINT_INTEGER_INITIAL_TPL</a>&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="nothrow__integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(rtype, op)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(op)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&nbsp;&nbsp;&nbsp;nothrow_integer_t</td></tr>
-<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef nothrow_integer_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf">boost::xint::nothrow_integer</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default nothrow_integer type. <br/></td></tr>
-<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5df93e9ae7f561d923bb90afd9cbd2d8">boost::xint::swap</a> (nothrow_integer_t &amp;left, nothrow_integer_t &amp;right)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aef79239cf595334619310a6a9698de77">boost::xint::abs</a> (const nothrow_integer_t n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t::divide_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7595b5065bafe137a1e5a076d03ce298">boost::xint::divide</a> (const nothrow_integer_t dividend, const nothrow_integer_t divisor)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abed80988937fa36406095c53ac5b4925">boost::xint::clearbit</a> (nothrow_integer_t &amp;n, bitsize_t bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae9772c469f88348cd1558be1dcac0a46">boost::xint::getbit</a> (const nothrow_integer_t n, bitsize_t bit)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bitsize_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abce4290c5bd113c9caf713b7887494ab">boost::xint::highestbit</a> (const nothrow_integer_t n, bitsize_t return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bitsize_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a2a45431596a3d8ce084bef4d181205d3">boost::xint::lowestbit</a> (const nothrow_integer_t n, bitsize_t return_if_zero=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#acbde618676ee2d01ce334b0ad2ee415f">boost::xint::setbit</a> (nothrow_integer_t &amp;n, bitsize_t bit)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad198e5679c816eb58edbd8910a2a3e22">boost::xint::compare</a> (const nothrow_integer_t n1, const nothrow_integer_t n2, bool ignoresign=false)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3c2edec1d630692541fb8d779fe24d6c">boost::xint::gcd</a> (const nothrow_integer_t num1, const nothrow_integer_t num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad5f8b7e50849e6bc237e881f8b531d28">boost::xint::lcm</a> (const nothrow_integer_t num1, const nothrow_integer_t num2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7e4c5b4383c8c4f23791999b999045aa">boost::xint::log2</a> (const nothrow_integer_t 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> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aece47ab2a3e92ee9206912290619e8f7">boost::xint::invmod</a> (const nothrow_integer_t n, const nothrow_integer_t modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92435de368aa4f5c513c370917b2e6c2">boost::xint::mulmod</a> (const nothrow_integer_t n, const nothrow_integer_t by, const nothrow_integer_t modulus)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92c4fb70fbc30f6b0e5d3d284c4ae9a7">boost::xint::powmod</a> (const nothrow_integer_t n, const nothrow_integer_t exponent, const nothrow_integer_t modulus, bool no_monty)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#acc04d22301e5451b1cd45b42b723dfa4">boost::xint::sqrmod</a> (const nothrow_integer_t n, const nothrow_integer_t modulus)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Random and prime number functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpa3caa0f3187a2dcc617c005b6b75011b"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7b44943a74e4c544b7691c2e0a24a32c">boost::xint::is_prime</a> (const nothrow_integer_t n, callback_t callback=no_callback)</td></tr>
-<tr><td colspan="2"><div class="groupHeader">Comparison Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp54923b9793dae891d9489cc5947f263a"></a> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a78fe60b6ff798332d9c972a7572a8ff3">boost::xint::operator!=</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a14d04f3e5d238015f70a9fd3b862c77f">boost::xint::operator&lt;</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abffa91bfcbe1e85a36b35c0dca12911e">boost::xint::operator&lt;=</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7bb742fa7f73ce4a66c3562e63093ea4">boost::xint::operator==</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a067985512800bf111b6381a3a6523c67">boost::xint::operator&gt;</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a049242861ecb219e864a179c4e2bd87a">boost::xint::operator&gt;=</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</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> </p>
-</div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad7e11b62950cda48aa1e8288f0f49bb1">boost::xint::operator%</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a91a76dbe5320a452f31966aae35da0bc">boost::xint::operator&amp;</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8008de156c89f46eb421eb4a60fb90f">boost::xint::operator*</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3cb9c9351c4150e9b7f028cdf26e380b">boost::xint::operator+</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1d5c865ffc91a6b29fc95e3cbd87e753">boost::xint::operator-</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aef07a1b59c017d367cd8f129601d317f">boost::xint::operator/</a> (const nothrow_integer_t dividend, const nothrow_integer_t divisor)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6b65ed6783e91563d65410aa4e526a99">boost::xint::operator^</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ace07b7c6d63117b14903f785b8d2276d">boost::xint::operator|</a> (const nothrow_integer_t n1, const nothrow_integer_t n2)</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&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6bb5af0935eaf4be1876c8284f116525">boost::xint::operator&lt;&lt;</a> (std::basic_ostream&lt; charT, traits &gt; &amp;out, const nothrow_integer_t n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;typename charT , typename traits , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream&lt; charT, <br class="typebreak"/>
-traits &gt; &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#add798bd386457947563587067ad497e8">boost::xint::operator&gt;&gt;</a> (std::basic_istream&lt; charT, traits &gt; &amp;in, nothrow_integer_t &amp;n)</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="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a10ae77d8cd473ef75073ef5c23631659">boost::xint::pow</a> (const nothrow_integer_t n, const nothrow_integer_t e)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0a4a7562e6fd3597b26a1cad4a76b834">boost::xint::sqrt</a> (const nothrow_integer_t n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">nothrow_integer_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac6704f0c9e4050d1076791dff3067eb9">boost::xint::square</a> (const nothrow_integer_t 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&lt;typename Type , class Alloc , bool Threadsafe, bool Secure&gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">Type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad7639155422020e4f347e0f96b60069a">boost::xint::to</a> (const nothrow_integer_t n)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">xint::binary_t&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adbfaf0dd58a326a1d333b648588d60b7">boost::xint::to_binary</a> (const nothrow_integer_t n, bitsize_t bits=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template&lt;... &gt; </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ad512da0b0312cfcf3ddea15dff14cf93">boost::xint::to_string</a> (const nothrow_integer_t n, size_t base=10, bool uppercase=false)</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>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="aa7c3e1efa96c7df6333940b38b2d7e5b"></a><!-- doxytag: member="nothrow_integer.hpp::BOOST_XINT_INTEGER_INITIAL_TPL" ref="aa7c3e1efa96c7df6333940b38b2d7e5b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_INTEGER_INITIAL_TPL&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00036">36</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae52121dc019a317d3d044eb35e44b817"></a><!-- doxytag: member="nothrow_integer.hpp::BOOST_XINT_INTEGER_TPL" ref="ae52121dc019a317d3d044eb35e44b817" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_INTEGER_TPL&nbsp;&nbsp;&nbsp;template&lt;...&gt;</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00037">37</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a46fcb1cc12bb4c915e62f759a519f71d"></a><!-- doxytag: member="nothrow_integer.hpp::BOOST_XINT_NOTHROW_ANY_COMPARE" ref="a46fcb1cc12bb4c915e62f759a519f71d" args="(rtype, op)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_NOTHROW_ANY_COMPARE</td>
- <td>(</td>
- <td class="paramtype">rtype, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">op&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span> &lt;<span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure, <span class="keyword">typename</span> N&gt; \
- rtype op(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span> N n2) { \
- <span class="keywordflow">return</span> op(n1, <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>(n2)); \
- } \
- \
- <span class="keyword">template</span> &lt;<span class="keyword">typename</span> N, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt; \
- rtype op(<span class="keyword">const</span> N n1, <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2) { \
- <span class="keywordflow">return</span> op(<a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>(n1), n2); \
- }
-</pre></div><p>Allows for comparisons between nothrow_integer_t types and other integral values. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01197">1197</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aff76dded7b4c18c2bfe5ab1df94c69d3"></a><!-- doxytag: member="nothrow_integer.hpp::BOOST_XINT_NOTHROW_ANY_MATH" ref="aff76dded7b4c18c2bfe5ab1df94c69d3" args="(op)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_NOTHROW_ANY_MATH</td>
- <td>(</td>
- <td class="paramtype">op&nbsp;</td>
- <td class="paramname"></td>
- <td>&nbsp;)&nbsp;</td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span> &lt;<span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure, <span class="keyword">typename</span> N&gt; \
- <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> op(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span> N \
- n2) \
- { \
- <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(op(n1, <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>(n2))); \
- <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r); \
- } \
- \
- <span class="keyword">template</span> &lt;<span class="keyword">typename</span> N, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt; \
- <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> op(<span class="keyword">const</span> N n1, <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> \
- n2) \
- { \
- <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(op(<a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>(n1), n2)); \
- <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r); \
- }
-</pre></div><p>Allows for operations between nothrow_integer_t types and other integral values. </p>
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l01218">1218</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa215bbd24b0f30813fc9ad4add1ce4e9"></a><!-- doxytag: member="nothrow_integer.hpp::BOOST_XINT_NTINTEGER_TYPE" ref="aa215bbd24b0f30813fc9ad4add1ce4e9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define BOOST_XINT_NTINTEGER_TYPE&nbsp;&nbsp;&nbsp;nothrow_integer_t</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="nothrow__integer_8hpp_source.html#l00038">38</a> of file <a class="el" href="nothrow__integer_8hpp_source.html">nothrow_integer.hpp</a>.</p>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/nothrow__integer_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/nothrow__integer_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,1180 +0,0 @@
-<!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>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 &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">detail/internals.hpp</a>&quot;</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="random_8hpp.html" title="Declares items relating to random numbers.">random.hpp</a>&quot;</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
-<a name="l00027"></a>00027 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span> <span class="comment">// The file&#39;s constructors make heavy use of the &#39;this&#39; pointer, in a safe</span>
-<a name="l00029"></a>00029 <span class="comment">// manner. MSVC isn&#39;t smart enough to know that it&#39;s safe.</span>
-<a name="l00030"></a>00030 <span class="preprocessor"> #pragma warning(push)</span>
-<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable: 4355)</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span> <span class="comment">// The documentation should see a simplified version of the functions.</span>
-<a name="l00036"></a><a class="code" href="nothrow__integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">00036</a> <span class="preprocessor"> #define BOOST_XINT_INTEGER_INITIAL_TPL template&lt;...&gt;</span>
-<a name="l00037"></a><a class="code" href="nothrow__integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">00037</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TPL template&lt;...&gt;</span>
-<a name="l00038"></a><a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">00038</a> <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_NTINTEGER_TYPE nothrow_integer_t</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span> <span class="keyword">namespace </span>detail { <span class="keyword">struct </span>nan_t { }; }
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 <span class="preprocessor"> #define BOOST_XINT_INTEGER_INITIAL_TPL template &lt;class Alloc = \</span>
-<a name="l00043"></a>00043 <span class="preprocessor"> std::allocator&lt;detail::digit_t&gt;, bool Threadsafe = true, bool Secure = \</span>
-<a name="l00044"></a>00044 <span class="preprocessor"> false&gt;</span>
-<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_INTEGER_TPL template&lt;class Alloc, bool Threadsafe, bool \</span>
-<a name="l00046"></a>00046 <span class="preprocessor"> Secure&gt;</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor"> #define BOOST_XINT_NTINTEGER_TYPE nothrow_integer_t&lt;Alloc, Threadsafe, \</span>
-<a name="l00048"></a>00048 <span class="preprocessor"> Secure&gt;</span>
-<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span>
-<a name="l00073"></a>00073 <a class="code" href="integer_8hpp.html#aa7c3e1efa96c7df6333940b38b2d7e5b">BOOST_XINT_INTEGER_INITIAL_TPL</a>
-<a name="l00074"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html">00074</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">nothrow_integer_t</a>: <span class="keyword">public</span> detail::digitmanager_t&lt;Alloc, Threadsafe,
-<a name="l00075"></a>00075 Secure&gt;, <span class="keyword">public</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keyword">public</span>:
-<a name="l00078"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">00078</a> <span class="keyword">typedef</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">type</a>;
-<a name="l00079"></a>00079
-<a name="l00082"></a>00082 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>();
-<a name="l00083"></a>00083 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; b, <span class="keywordtype">bool</span>
-<a name="l00084"></a>00084 force_thread_safety = <span class="keyword">false</span>);
-<a name="l00085"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a7a9cf97c8ede54a22c7bd795f198dd42">00085</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a7a9cf97c8ede54a22c7bd795f198dd42">nothrow_integer_t</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">type</a>) b): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1) {
-<a name="l00086"></a>00086 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">_swap</a>(b); }
-<a name="l00087"></a>00087 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00088"></a>00088 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base =
-<a name="l00089"></a>00089 10);
-<a name="l00090"></a>00090 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base = 10);
-<a name="l00091"></a>00091 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits = 0);
-<a name="l00092"></a>00092 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>&amp; other, <span class="keywordtype">bool</span>
-<a name="l00093"></a>00093 force_thread_safety = <span class="keyword">false</span>);
-<a name="l00094"></a>00094 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> Type n, <span class="keyword">typename</span>
-<a name="l00095"></a>00095 boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">type</a>* = 0);
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="preprocessor"> #ifndef BOOST_XINT_DOXYGEN_IGNORE</span>
-<a name="l00098"></a>00098 <span class="preprocessor"></span>
-<a name="l00099"></a>00099 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> detail::data_t c): detail::digitmanager_t&lt;Alloc,
-<a name="l00100"></a>00100 Threadsafe, Secure&gt;(*c.holder()), <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, c.length,
-<a name="l00101"></a>00101 c.negative) { data.beginendmod(); }
-<a name="l00102"></a>00102 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">nothrow_integer_t</a>(<span class="keyword">const</span> detail::nan_t&amp; c): detail::digitmanager_t&lt;Alloc,
-<a name="l00103"></a>00103 Threadsafe, Secure&gt;(0), any_integer(*this, 0) { }
-<a name="l00104"></a>00104 <span class="preprocessor"> #endif</span>
-<a name="l00105"></a>00105 <span class="preprocessor"></span>
-<a name="l00106"></a>00106
-<a name="l00112"></a>00112 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae211b395180df8b906af6894ec2437ee">operator=</a>(<a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">type</a>) c);
-<a name="l00113"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#acf7984f96e96e094cebc84945af84237">00113</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#acf7984f96e96e094cebc84945af84237">operator=</a>(<a class="code" href="internals_8hpp.html#a0533c283bce9e4d9468ea9b3a5ab509b">BOOST_XINT_RV_REF</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">type</a>) c) { <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">_swap</a>(c);
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00115"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a201e483d7d4c1e8abb23b129bf732278">00115</a> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae211b395180df8b906af6894ec2437ee">operator=</a>(<span class="keyword">const</span> Type n)
-<a name="l00116"></a>00116 { <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> nn(n); <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">_swap</a>(nn); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00117"></a>00117
-<a name="l00118"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a5ece8a816c760032dfbc2ec44853e608">00118</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a5ece8a816c760032dfbc2ec44853e608">operator!</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_zero(); }
-<a name="l00119"></a>00119 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ad432f2c0daa6aea3f416cf5f8c666a77">operator-</a>() <span class="keyword">const</span>;
-<a name="l00120"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a533d61d717d6c2776cd01f9953a40434">00120</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a533d61d717d6c2776cd01f9953a40434">operator+</a>() { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00121"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a67f958af92a0a6eca7226cbc5d29212e">00121</a> <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a67f958af92a0a6eca7226cbc5d29212e">operator+</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00122"></a>00122 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#acd0fb55952130128a3fe7b2bf27c999a">operator~</a>() <span class="keyword">const</span>;
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0f789839445460824a6a9e0ae09438e9">operator+=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b);
-<a name="l00125"></a>00125 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a9cf2199722b2ae7b84b13df8f25e30bb">operator-=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b);
-<a name="l00126"></a>00126 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#af385460d651cf5e55f1b98163157e542">operator*=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b);
-<a name="l00127"></a>00127 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa9e0d7a3b1c6468ddb6cafd8310cce33">operator/=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b);
-<a name="l00128"></a>00128 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a4c05efc7570c68cf66097250a89983e3">operator%=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b);
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab2c4f32b023d5993cac190f2d3b04d75">operator++</a>();
-<a name="l00131"></a>00131 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a545623af583e6db95648e439136487a8">operator--</a>();
-<a name="l00132"></a>00132 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab2c4f32b023d5993cac190f2d3b04d75">operator++</a>(<span class="keywordtype">int</span>);
-<a name="l00133"></a>00133 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a545623af583e6db95648e439136487a8">operator--</a>(<span class="keywordtype">int</span>);
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#abdf888c46a80cd3ff27ce3cb7b1c926b">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n);
-<a name="l00136"></a>00136 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97d99c9fdf91ac89641a7899fbb44f0f">operator|=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n);
-<a name="l00137"></a>00137 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97fb50e03fc95bace0ab7eb3390ef20b">operator^=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n);
-<a name="l00138"></a>00138 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a337f26edac632e711f7636179c7905f4">operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) <span class="keyword">const</span>;
-<a name="l00139"></a>00139 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a210d46fc5a4b686e403cf7aedfcc5674">operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift) <span class="keyword">const</span>;
-<a name="l00140"></a>00140 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0fbb396ca3e90adeb21af98101e6ca64">operator&lt;&lt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift);
-<a name="l00141"></a>00141 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a842db03f81eb40dbd2861379bbcb6f58">operator&gt;&gt;=</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift);
-<a name="l00143"></a>00143
-<a name="l00146"></a>00146 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aca45de2a1ab27699462dac63e47bc365">is_odd</a>() <span class="keyword">const</span>;
-<a name="l00147"></a>00147 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aacf756407b2a37dfeec01c9e2d2baa55">is_even</a>() <span class="keyword">const</span>;
-<a name="l00148"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">00148</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _is_nan(); }
-<a name="l00149"></a>00149 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a19ed49ed07a32317aa3b57410908bfe3">sign</a>(<span class="keywordtype">bool</span> signed_zero = <span class="keyword">false</span>) <span class="keyword">const</span>;
-<a name="l00150"></a>00150 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a3f3d0b7be14b9a5858ac76302341e573">hex_digits</a>() <span class="keyword">const</span>;
-<a name="l00152"></a>00152
-<a name="l00153"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a79eabe8735d1d487b39b4a69fbbe1e15">00153</a> <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">base_divide_t&lt;BOOST_XINT_NTINTEGER_TYPE&gt;</a> <a class="code" href="classboost_1_1xint_1_1base__divide__t.html" title="Holds the results from a division-with-remainder call.">divide_t</a>;
-<a name="l00154"></a>00154
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keyword">static</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0c102b1fea546c819b8269d72548f93c">pow2</a>(<span class="keywordtype">size_t</span> exponent);
-<a name="l00164"></a>00164 <span class="keyword">static</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a1696a934f6dbcd3b5798f0b2d15f7283">factorial</a>(<span class="keywordtype">size_t</span> n);
-<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">00165</a> <span class="keyword">static</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>() { <span class="keywordflow">return</span> _nan; }
-<a name="l00166"></a>00166 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0de2e10bd4405b0cb8700345425c52f1">random_by_size</a>(Type&amp;
-<a name="l00167"></a>00167 gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on = <span class="keyword">false</span>, <span class="keywordtype">bool</span> low_bit_on =
-<a name="l00168"></a>00168 <span class="keyword">false</span>, <span class="keywordtype">bool</span> can_be_negative = <span class="keyword">false</span>);
-<a name="l00169"></a>00169 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt; <span class="keyword">static</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a72339e1215826ce74e3013c48d06598a">random_prime</a>(Type&amp;
-<a name="l00170"></a>00170 gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>);
-<a name="l00172"></a>00172
-<a name="l00173"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">00173</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab55e40317f0aac0702fb2d66dcb9e535">_swap</a>(<a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; s) { <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">std::swap</a>; <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(data,
-<a name="l00174"></a>00174 s.data); }
-<a name="l00175"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a2ff82a3986a4282910ea24d7e4f1da92">00175</a> <span class="keyword">static</span> std::string <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a2ff82a3986a4282910ea24d7e4f1da92">_nan_text</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;#NaN#&quot;</span>; }
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="keyword">private</span>:
-<a name="l00178"></a>00178 <span class="keyword">static</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> _nan;
-<a name="l00179"></a>00179 <a class="code" href="internals_8hpp.html#a5f5634ec80010f0f87b93320fa3419f9">BOOST_XINT_COPYABLE_AND_MOVABLE</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a303b5898b723e7ea7aae736edebf9ba6">type</a>)
-<a name="l00180"></a>00180 };
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00183"></a>00183 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> BOOST_XINT_NTINTEGER_TYPE::_nan =
-<a name="l00184"></a>00184 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>(detail::nan_t());
-<a name="l00185"></a>00185
-<a name="l00187"></a>00187 <span class="comment">// Function template definitions</span>
-<a name="l00188"></a>00188
-<a name="l00190"></a>00190 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00191"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa6bb6d3a98f05b84f3d03e0b574dc88f">00191</a> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1) {
-<a name="l00192"></a>00192 <span class="comment">// Don&#39;t need to do anything, already preinitialized to zero.</span>
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194
-<a name="l00196"></a>00196 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00197"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab3042e9b301c19ffed851b7a5bd35bc9">00197</a> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; b,
-<a name="l00198"></a>00198 <span class="keywordtype">bool</span> force_thread_safety): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <span class="keywordflow">try</span> {
-<a name="l00201"></a>00201 data = b.data;
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) {
-<a name="l00203"></a>00203 data.beginendmod();
-<a name="l00204"></a>00204 <span class="keywordflow">if</span> (force_thread_safety &amp;&amp; Threadsafe == <span class="keyword">false</span>) data.make_unique();
-<a name="l00205"></a>00205 }
-<a name="l00206"></a>00206 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00207"></a>00207 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210
-<a name="l00212"></a>00212 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00213"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a629c04b77763ee8ea795e031acf27765">00213</a> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base):
-<a name="l00214"></a>00214 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <span class="keywordflow">try</span> {
-<a name="l00217"></a>00217 data.from_string(str, strlen(str), base);
-<a name="l00218"></a>00218 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00219"></a>00219 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222
-<a name="l00224"></a>00224 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00225"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a11a60ea239406b72d02e06a5034d056e">00225</a> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr,
-<a name="l00226"></a>00226 <span class="keywordtype">size_t</span> base): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00227"></a>00227 {
-<a name="l00228"></a>00228 <span class="keywordflow">try</span> {
-<a name="l00229"></a>00229 data.from_string(str, endptr, base);
-<a name="l00230"></a>00230 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00231"></a>00231 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00232"></a>00232 }
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234
-<a name="l00236"></a>00236 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00237"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a6032b171cf7fb29a9b58a77409126f20">00237</a> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span>
-<a name="l00238"></a>00238 base): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00239"></a>00239 {
-<a name="l00240"></a>00240 <span class="keywordflow">try</span> {
-<a name="l00241"></a>00241 data.from_string(str.c_str(), str.length(), base);
-<a name="l00242"></a>00242 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00243"></a>00243 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245 }
-<a name="l00246"></a>00246
-<a name="l00248"></a>00248 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00249"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a227b5762857ac8b81a0ee4a1306060b8">00249</a> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>
-<a name="l00250"></a>00250 bits): <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="keywordflow">try</span> {
-<a name="l00253"></a>00253 data.from_binary(b, bits);
-<a name="l00254"></a>00254 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00255"></a>00255 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258
-<a name="l00260"></a>00260 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00261"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a097fd64e54708327f2392f5dd77b8031">00261</a> BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>&amp; c, <span class="keywordtype">bool</span>):
-<a name="l00262"></a>00262 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00263"></a>00263 {
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (c._data().is_nan()) {
-<a name="l00265"></a>00265 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00266"></a>00266 } <span class="keywordflow">else</span> {
-<a name="l00267"></a>00267 <span class="keywordflow">try</span> {
-<a name="l00268"></a>00268 data.duplicate_data(c._data());
-<a name="l00269"></a>00269 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00270"></a>00270 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00271"></a>00271 }
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274
-<a name="l00287"></a>00287 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00288"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae91d394b346d787de41053bdbc565393">00288</a> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type&gt; BOOST_XINT_NTINTEGER_TYPE::nothrow_integer_t(<span class="keyword">const</span> Type
-<a name="l00289"></a>00289 n, <span class="keyword">typename</span> boost::enable_if&lt;boost::is_integral&lt;Type&gt; &gt;::<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">type</a>*):
-<a name="l00290"></a>00290 <a class="code" href="classboost_1_1xint_1_1any__integer.html" title="A base class for all integer types.">any_integer</a>(*this, 1)
-<a name="l00291"></a>00291 {
-<a name="l00292"></a>00292 <span class="keywordflow">try</span> {
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (std::numeric_limits&lt;Type&gt;::is_signed) data.set_signed(n);
-<a name="l00294"></a>00294 <span class="keywordflow">else</span> data.set_unsigned(n);
-<a name="l00295"></a>00295 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00296"></a>00296 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00297"></a>00297 }
-<a name="l00298"></a>00298 }
-<a name="l00299"></a>00299
-<a name="l00300"></a>00300 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00301"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ae211b395180df8b906af6894ec2437ee">00301</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator=(
-<a name="l00302"></a>00302 <a class="code" href="internals_8hpp.html#a8177a6a6c68ea042f7e644d8ef7128f9">BOOST_XINT_COPY_ASSIGN_REF</a>(<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">type</a>) c)
-<a name="l00303"></a>00303 {
-<a name="l00304"></a>00304 <span class="keywordflow">try</span> {
-<a name="l00305"></a>00305 data = c.data;
-<a name="l00306"></a>00306 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) data.beginendmod();
-<a name="l00307"></a>00307 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00308"></a>00308 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00311"></a>00311 }
-<a name="l00312"></a>00312
-<a name="l00314"></a>00314 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00315"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ad432f2c0daa6aea3f416cf5f8c666a77">00315</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">BOOST_XINT_NTINTEGER_TYPE::operator-</a>()<span class="keyword"> const </span>{
-<a name="l00316"></a>00316 <span class="keywordflow">try</span> {
-<a name="l00317"></a>00317 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00318"></a>00318 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(-data);
-<a name="l00319"></a>00319 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00320"></a>00320 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00321"></a>00321 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00322"></a>00322 }
-<a name="l00323"></a>00323 }
-<a name="l00324"></a>00324
-<a name="l00326"></a>00326 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00327"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0f789839445460824a6a9e0ae09438e9">00327</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator+=(<span class="keyword">const</span>
-<a name="l00328"></a>00328 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b)
-<a name="l00329"></a>00329 {
-<a name="l00330"></a>00330 <span class="keywordflow">try</span> {
-<a name="l00331"></a>00331 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !b.is_nan()) data += b.data;
-<a name="l00332"></a>00332 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00333"></a>00333 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00334"></a>00334 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00335"></a>00335 }
-<a name="l00336"></a>00336 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338
-<a name="l00340"></a>00340 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00341"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a9cf2199722b2ae7b84b13df8f25e30bb">00341</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator-=(<span class="keyword">const</span>
-<a name="l00342"></a>00342 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b)
-<a name="l00343"></a>00343 {
-<a name="l00344"></a>00344 <span class="keywordflow">try</span> {
-<a name="l00345"></a>00345 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !b.is_nan()) data -= b.data;
-<a name="l00346"></a>00346 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00347"></a>00347 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00348"></a>00348 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00349"></a>00349 }
-<a name="l00350"></a>00350 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00351"></a>00351 }
-<a name="l00352"></a>00352
-<a name="l00354"></a>00354 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00355"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#af385460d651cf5e55f1b98163157e542">00355</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator*=(<span class="keyword">const</span>
-<a name="l00356"></a>00356 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b)
-<a name="l00357"></a>00357 {
-<a name="l00358"></a>00358 <span class="keywordflow">try</span> {
-<a name="l00359"></a>00359 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !b.is_nan()) data *= b.data;
-<a name="l00360"></a>00360 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00361"></a>00361 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00362"></a>00362 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00363"></a>00363 }
-<a name="l00364"></a>00364 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00365"></a>00365 }
-<a name="l00366"></a>00366
-<a name="l00368"></a>00368 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00369"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aa9e0d7a3b1c6468ddb6cafd8310cce33">00369</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator/=(<span class="keyword">const</span>
-<a name="l00370"></a>00370 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b)
-<a name="l00371"></a>00371 {
-<a name="l00372"></a>00372 <span class="keywordflow">try</span> {
-<a name="l00373"></a>00373 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !b.is_nan()) data /= b.data;
-<a name="l00374"></a>00374 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00375"></a>00375 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00376"></a>00376 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00377"></a>00377 }
-<a name="l00378"></a>00378 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00379"></a>00379 }
-<a name="l00380"></a>00380
-<a name="l00382"></a>00382 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00383"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a4c05efc7570c68cf66097250a89983e3">00383</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator%=(<span class="keyword">const</span>
-<a name="l00384"></a>00384 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> b)
-<a name="l00385"></a>00385 {
-<a name="l00386"></a>00386 <span class="keywordflow">try</span> {
-<a name="l00387"></a>00387 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !b.is_nan()) data %= b.data;
-<a name="l00388"></a>00388 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00389"></a>00389 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00390"></a>00390 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00391"></a>00391 }
-<a name="l00392"></a>00392 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00393"></a>00393 }
-<a name="l00394"></a>00394
-<a name="l00396"></a>00396 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00397"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#ab2c4f32b023d5993cac190f2d3b04d75">00397</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator++() {
-<a name="l00398"></a>00398 <span class="keywordflow">try</span> {
-<a name="l00399"></a>00399 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) ++data;
-<a name="l00400"></a>00400 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00401"></a>00401 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00402"></a>00402 }
-<a name="l00403"></a>00403 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00404"></a>00404 }
-<a name="l00405"></a>00405
-<a name="l00407"></a>00407 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00408"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a545623af583e6db95648e439136487a8">00408</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator--() {
-<a name="l00409"></a>00409 <span class="keywordflow">try</span> {
-<a name="l00410"></a>00410 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) --data;
-<a name="l00411"></a>00411 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00412"></a>00412 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00413"></a>00413 }
-<a name="l00414"></a>00414 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00415"></a>00415 }
-<a name="l00416"></a>00416
-<a name="l00418"></a>00418 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00419"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0e5e783b5be631e256b1d3e5ba7af901">00419</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> BOOST_XINT_NTINTEGER_TYPE::operator++(<span class="keywordtype">int</span>) {
-<a name="l00420"></a>00420 <span class="keywordflow">try</span> {
-<a name="l00421"></a>00421 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00422"></a>00422 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(data++);
-<a name="l00423"></a>00423 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00424"></a>00424 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00425"></a>00425 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00426"></a>00426 }
-<a name="l00427"></a>00427 }
-<a name="l00428"></a>00428
-<a name="l00430"></a>00430 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00431"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a90da75f97d39014691268b338b74a801">00431</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> BOOST_XINT_NTINTEGER_TYPE::operator--(<span class="keywordtype">int</span>) {
-<a name="l00432"></a>00432 <span class="keywordflow">try</span> {
-<a name="l00433"></a>00433 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00434"></a>00434 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(data--);
-<a name="l00435"></a>00435 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00436"></a>00436 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00437"></a>00437 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00438"></a>00438 }
-<a name="l00439"></a>00439 }
-<a name="l00440"></a>00440
-<a name="l00442"></a>00442 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00443"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#abdf888c46a80cd3ff27ce3cb7b1c926b">00443</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator&amp;=(<span class="keyword">const</span>
-<a name="l00444"></a>00444 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n)
-<a name="l00445"></a>00445 {
-<a name="l00446"></a>00446 <span class="keywordflow">try</span> {
-<a name="l00447"></a>00447 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !n.is_nan()) data &amp;= n.data;
-<a name="l00448"></a>00448 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00449"></a>00449 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00450"></a>00450 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00451"></a>00451 }
-<a name="l00452"></a>00452 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00453"></a>00453 }
-<a name="l00454"></a>00454
-<a name="l00456"></a>00456 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00457"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97d99c9fdf91ac89641a7899fbb44f0f">00457</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator|=(<span class="keyword">const</span>
-<a name="l00458"></a>00458 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n)
-<a name="l00459"></a>00459 {
-<a name="l00460"></a>00460 <span class="keywordflow">try</span> {
-<a name="l00461"></a>00461 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !n.is_nan()) data |= n.data;
-<a name="l00462"></a>00462 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00463"></a>00463 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00464"></a>00464 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00467"></a>00467 }
-<a name="l00468"></a>00468
-<a name="l00470"></a>00470 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00471"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a97fb50e03fc95bace0ab7eb3390ef20b">00471</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator^=(<span class="keyword">const</span>
-<a name="l00472"></a>00472 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n)
-<a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keywordflow">try</span> {
-<a name="l00475"></a>00475 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() &amp;&amp; !n.is_nan()) data ^= n.data;
-<a name="l00476"></a>00476 <span class="keywordflow">else</span> *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00477"></a>00477 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00478"></a>00478 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00479"></a>00479 }
-<a name="l00480"></a>00480 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00481"></a>00481 }
-<a name="l00482"></a>00482
-<a name="l00484"></a>00484 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00485"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a337f26edac632e711f7636179c7905f4">00485</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">BOOST_XINT_NTINTEGER_TYPE::operator&lt;&lt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)<span class="keyword"></span>
-<a name="l00486"></a>00486 <span class="keyword"> const</span>
-<a name="l00487"></a>00487 <span class="keyword"></span>{
-<a name="l00488"></a>00488 <span class="keywordflow">try</span> {
-<a name="l00489"></a>00489 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00490"></a>00490 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(data &lt;&lt; shift);
-<a name="l00491"></a>00491 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00492"></a>00492 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00493"></a>00493 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">BOOST_XINT_NTINTEGER_TYPE::nan</a>();
-<a name="l00494"></a>00494 }
-<a name="l00495"></a>00495 }
-<a name="l00496"></a>00496
-<a name="l00498"></a>00498 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00499"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a210d46fc5a4b686e403cf7aedfcc5674">00499</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">BOOST_XINT_NTINTEGER_TYPE::operator&gt;&gt;</a>(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> shift)<span class="keyword"></span>
-<a name="l00500"></a>00500 <span class="keyword"> const</span>
-<a name="l00501"></a>00501 <span class="keyword"></span>{
-<a name="l00502"></a>00502 <span class="keywordflow">try</span> {
-<a name="l00503"></a>00503 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00504"></a>00504 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(data &gt;&gt; shift);
-<a name="l00505"></a>00505 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00506"></a>00506 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00507"></a>00507 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">BOOST_XINT_NTINTEGER_TYPE::nan</a>();
-<a name="l00508"></a>00508 }
-<a name="l00509"></a>00509 }
-<a name="l00510"></a>00510
-<a name="l00512"></a>00512 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00513"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0fbb396ca3e90adeb21af98101e6ca64">00513</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator&lt;&lt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>
-<a name="l00514"></a>00514 shift)
-<a name="l00515"></a>00515 {
-<a name="l00516"></a>00516 <span class="keywordflow">try</span> {
-<a name="l00517"></a>00517 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) data &lt;&lt;= shift;
-<a name="l00518"></a>00518 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00519"></a>00519 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00520"></a>00520 }
-<a name="l00521"></a>00521 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00522"></a>00522 }
-<a name="l00523"></a>00523
-<a name="l00525"></a>00525 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00526"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a842db03f81eb40dbd2861379bbcb6f58">00526</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; BOOST_XINT_NTINTEGER_TYPE::operator&gt;&gt;=(<a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a>
-<a name="l00527"></a>00527 shift)
-<a name="l00528"></a>00528 {
-<a name="l00529"></a>00529 <span class="keywordflow">try</span> {
-<a name="l00530"></a>00530 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>()) data &gt;&gt;= shift;
-<a name="l00531"></a>00531 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00532"></a>00532 *<span class="keyword">this</span> = <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">nan</a>();
-<a name="l00533"></a>00533 }
-<a name="l00534"></a>00534 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00535"></a>00535 }
-<a name="l00536"></a>00536
-<a name="l00541"></a>00541 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00542"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aca45de2a1ab27699462dac63e47bc365">00542</a> <span class="keywordtype">bool</span> BOOST_XINT_NTINTEGER_TYPE::is_odd()<span class="keyword"> const </span>{
-<a name="l00543"></a>00543 <span class="keywordflow">try</span> {
-<a name="l00544"></a>00544 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() ? <span class="keyword">false</span> : data.is_odd());
-<a name="l00545"></a>00545 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00546"></a>00546 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00547"></a>00547 }
-<a name="l00548"></a>00548 }
-<a name="l00549"></a>00549
-<a name="l00554"></a>00554 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00555"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aacf756407b2a37dfeec01c9e2d2baa55">00555</a> <span class="keywordtype">bool</span> BOOST_XINT_NTINTEGER_TYPE::is_even()<span class="keyword"> const </span>{
-<a name="l00556"></a>00556 <span class="keywordflow">try</span> {
-<a name="l00557"></a>00557 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() ? <span class="keyword">false</span> : data.is_even());
-<a name="l00558"></a>00558 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00559"></a>00559 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00560"></a>00560 }
-<a name="l00561"></a>00561 }
-<a name="l00562"></a>00562
-<a name="l00567"></a>00567 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00568"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a19ed49ed07a32317aa3b57410908bfe3">00568</a> <span class="keywordtype">int</span> BOOST_XINT_NTINTEGER_TYPE::sign(<span class="keywordtype">bool</span> signed_zero)<span class="keyword"> const </span>{
-<a name="l00569"></a>00569 <span class="keywordflow">try</span> {
-<a name="l00570"></a>00570 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() ? 0 : data.sign(signed_zero));
-<a name="l00571"></a>00571 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00572"></a>00572 <span class="keywordflow">return</span> 0;
-<a name="l00573"></a>00573 }
-<a name="l00574"></a>00574 }
-<a name="l00575"></a>00575
-<a name="l00580"></a>00580 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00581"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a3f3d0b7be14b9a5858ac76302341e573">00581</a> <span class="keywordtype">size_t</span> BOOST_XINT_NTINTEGER_TYPE::hex_digits()<span class="keyword"> const </span>{
-<a name="l00582"></a>00582 <span class="keywordflow">try</span> {
-<a name="l00583"></a>00583 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#aaa77f6a448a26fb1e326101f00d964ba">is_nan</a>() ? 0 : data.hex_digits());
-<a name="l00584"></a>00584 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00585"></a>00585 <span class="keywordflow">return</span> 0;
-<a name="l00586"></a>00586 }
-<a name="l00587"></a>00587 }
-<a name="l00588"></a>00588
-<a name="l00590"></a>00590 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00591"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0c102b1fea546c819b8269d72548f93c">00591</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> BOOST_XINT_NTINTEGER_TYPE::pow2(<span class="keywordtype">size_t</span> exponent) {
-<a name="l00592"></a>00592 <span class="keywordflow">try</span> {
-<a name="l00593"></a>00593 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00594"></a>00594 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0c102b1fea546c819b8269d72548f93c">detail::pow2</a>(r.data, exponent);
-<a name="l00595"></a>00595 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00596"></a>00596 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00597"></a>00597 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">BOOST_XINT_NTINTEGER_TYPE::nan</a>();
-<a name="l00598"></a>00598 }
-<a name="l00599"></a>00599 }
-<a name="l00600"></a>00600
-<a name="l00602"></a>00602 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00603"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a1696a934f6dbcd3b5798f0b2d15f7283">00603</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> BOOST_XINT_NTINTEGER_TYPE::factorial(<span class="keywordtype">size_t</span> n) {
-<a name="l00604"></a>00604 <span class="keywordflow">try</span> {
-<a name="l00605"></a>00605 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00606"></a>00606 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a1696a934f6dbcd3b5798f0b2d15f7283">detail::factorial</a>(r.data, n);
-<a name="l00607"></a>00607 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00608"></a>00608 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00609"></a>00609 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">BOOST_XINT_NTINTEGER_TYPE::nan</a>();
-<a name="l00610"></a>00610 }
-<a name="l00611"></a>00611 }
-<a name="l00612"></a>00612
-<a name="l00614"></a>00614 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00615"></a>00615 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
-<a name="l00616"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0de2e10bd4405b0cb8700345425c52f1">00616</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> BOOST_XINT_NTINTEGER_TYPE::random_by_size(Type&amp; gen,
-<a name="l00617"></a>00617 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
-<a name="l00618"></a>00618 can_be_negative)
-<a name="l00619"></a>00619 {
-<a name="l00620"></a>00620 <span class="keywordflow">try</span> {
-<a name="l00621"></a>00621 detail::random_generator&lt;Type&gt; rgen(gen);
-<a name="l00622"></a>00622
-<a name="l00623"></a>00623 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00624"></a>00624 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0de2e10bd4405b0cb8700345425c52f1">detail::random_by_size</a>(r._data(), rgen, size_in_bits, high_bit_on,
-<a name="l00625"></a>00625 low_bit_on, can_be_negative);
-<a name="l00626"></a>00626 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00627"></a>00627 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00628"></a>00628 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">BOOST_XINT_NTINTEGER_TYPE::nan</a>();
-<a name="l00629"></a>00629 }
-<a name="l00630"></a>00630 }
-<a name="l00631"></a>00631
-<a name="l00633"></a>00633 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00634"></a>00634 <span class="keyword">template</span> &lt;<span class="keyword">class</span> Type&gt;
-<a name="l00635"></a><a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a72339e1215826ce74e3013c48d06598a">00635</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> BOOST_XINT_NTINTEGER_TYPE::random_prime(Type&amp; gen,
-<a name="l00636"></a>00636 <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
-<a name="l00637"></a>00637 {
-<a name="l00638"></a>00638 <span class="keywordflow">try</span> {
-<a name="l00639"></a>00639 detail::random_generator&lt;Type&gt; rgen(gen);
-<a name="l00640"></a>00640
-<a name="l00641"></a>00641 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00642"></a>00642 <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a72339e1215826ce74e3013c48d06598a">detail::random_prime</a>(r._data(), rgen, size_in_bits, callback);
-<a name="l00643"></a>00643 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00644"></a>00644 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00645"></a>00645 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">BOOST_XINT_NTINTEGER_TYPE::nan</a>();
-<a name="l00646"></a>00646 }
-<a name="l00647"></a>00647 }
-<a name="l00648"></a>00648
-<a name="l00650"></a>00650 <span class="comment">// Free function template definitions</span>
-<a name="l00651"></a>00651
-<a name="l00654"></a>00654
-<a name="l00656"></a>00656 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00657"></a><a class="code" href="namespaceboost_1_1xint.html#aef79239cf595334619310a6a9698de77">00657</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n) {
-<a name="l00658"></a>00658 <span class="keywordflow">try</span> {
-<a name="l00659"></a>00659 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> n;
-<a name="l00660"></a>00660 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(<a class="code" href="namespaceboost_1_1xint.html#a22c29f49cfee8ee7bf809db665e1d9d7">abs</a>(n._data()));
-<a name="l00661"></a>00661 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00662"></a>00662 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00663"></a>00663 <span class="keywordflow">return</span> n.nan();
-<a name="l00664"></a>00664 }
-<a name="l00665"></a>00665 }
-<a name="l00666"></a>00666
-<a name="l00671"></a>00671 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00672"></a><a class="code" href="namespaceboost_1_1xint.html#a7595b5065bafe137a1e5a076d03ce298">00672</a> <span class="keyword">typename</span> BOOST_XINT_NTINTEGER_TYPE::divide_t <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(<span class="keyword">const</span>
-<a name="l00673"></a>00673 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> dividend, <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> divisor)
-<a name="l00674"></a>00674 {
-<a name="l00675"></a>00675 <span class="keywordflow">try</span> {
-<a name="l00676"></a>00676 <span class="keywordflow">if</span> (dividend.is_nan() || divisor.is_nan())
-<a name="l00677"></a>00677 <span class="keywordflow">return</span> std::make_pair(dividend.nan(), dividend.nan());
-<a name="l00678"></a>00678 <span class="keyword">typename</span> BOOST_XINT_NTINTEGER_TYPE::divide_t r;
-<a name="l00679"></a>00679 <a class="code" href="namespaceboost_1_1xint.html#a729653da022f22652cd5aa2d29f0c8fd">divide</a>(r.quotient._data(), r.remainder._data(), dividend._data(),
-<a name="l00680"></a>00680 divisor._data());
-<a name="l00681"></a>00681 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00682"></a>00682 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00683"></a>00683 <span class="keywordflow">return</span> std::make_pair(dividend.nan(), dividend.nan());
-<a name="l00684"></a>00684 }
-<a name="l00685"></a>00685 }
-<a name="l00687"></a>00687
-<a name="l00690"></a>00690
-<a name="l00692"></a>00692 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00693"></a><a class="code" href="namespaceboost_1_1xint.html#ac6704f0c9e4050d1076791dff3067eb9">00693</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n) {
-<a name="l00694"></a>00694 <span class="keywordflow">try</span> {
-<a name="l00695"></a>00695 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> n;
-<a name="l00696"></a>00696 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00697"></a>00697 <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(r._data(), n._data());
-<a name="l00698"></a>00698 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00699"></a>00699 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00700"></a>00700 <span class="keywordflow">return</span> n.nan();
-<a name="l00701"></a>00701 }
-<a name="l00702"></a>00702 }
-<a name="l00703"></a>00703
-<a name="l00705"></a>00705 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00706"></a><a class="code" href="namespaceboost_1_1xint.html#a10ae77d8cd473ef75073ef5c23631659">00706</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00707"></a>00707 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> e)
-<a name="l00708"></a>00708 {
-<a name="l00709"></a>00709 <span class="keywordflow">try</span> {
-<a name="l00710"></a>00710 <span class="keywordflow">if</span> (n.is_nan() || e.is_nan()) <span class="keywordflow">return</span> n.nan();
-<a name="l00711"></a>00711 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00712"></a>00712 <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(r._data(), n._data(), e._data());
-<a name="l00713"></a>00713 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00714"></a>00714 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00715"></a>00715 <span class="keywordflow">return</span> n.nan();
-<a name="l00716"></a>00716 }
-<a name="l00717"></a>00717 }
-<a name="l00718"></a>00718
-<a name="l00720"></a>00720 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00721"></a><a class="code" href="namespaceboost_1_1xint.html#a0a4a7562e6fd3597b26a1cad4a76b834">00721</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n) {
-<a name="l00722"></a>00722 <span class="keywordflow">try</span> {
-<a name="l00723"></a>00723 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> n;
-<a name="l00724"></a>00724 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00725"></a>00725 <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(r._data(), n._data());
-<a name="l00726"></a>00726 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00727"></a>00727 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00728"></a>00728 <span class="keywordflow">return</span> n.nan();
-<a name="l00729"></a>00729 }
-<a name="l00730"></a>00730 }
-<a name="l00732"></a>00732
-<a name="l00735"></a>00735
-<a name="l00740"></a>00740 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Type, <span class="keyword">class</span> Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span> Secure&gt;
-<a name="l00741"></a><a class="code" href="namespaceboost_1_1xint.html#ad7639155422020e4f347e0f96b60069a">00741</a> Type <a class="code" href="namespaceboost_1_1xint.html#addfb10ab763fc55ecd4123c9a93769a0">to</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n) {
-<a name="l00742"></a>00742 <span class="keywordflow">try</span> {
-<a name="l00743"></a>00743 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> Type(0);
-<a name="l00744"></a>00744 <span class="keywordflow">return</span> to&lt;Type&gt;(n._data());
-<a name="l00745"></a>00745 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00746"></a>00746 <span class="keywordflow">return</span> Type(0);
-<a name="l00747"></a>00747 }
-<a name="l00748"></a>00748 }
-<a name="l00749"></a>00749
-<a name="l00754"></a>00754 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00755"></a><a class="code" href="namespaceboost_1_1xint.html#ad512da0b0312cfcf3ddea15dff14cf93">00755</a> std::string <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <span class="keywordtype">size_t</span> base = 10, <span class="keywordtype">bool</span>
-<a name="l00756"></a>00756 uppercase = <span class="keyword">false</span>)
-<a name="l00757"></a>00757 {
-<a name="l00758"></a>00758 <span class="keywordflow">try</span> {
-<a name="l00759"></a>00759 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> n._nan_text();
-<a name="l00760"></a>00760 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6ae4ddf930587218746f08a2a5982746">to_string</a>(n._data(), base, uppercase);
-<a name="l00761"></a>00761 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00762"></a>00762 <span class="keywordflow">return</span> std::string();
-<a name="l00763"></a>00763 }
-<a name="l00764"></a>00764 }
-<a name="l00765"></a>00765
-<a name="l00771"></a>00771 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00772"></a><a class="code" href="namespaceboost_1_1xint.html#adbfaf0dd58a326a1d333b648588d60b7">00772</a> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bits = 0)
-<a name="l00773"></a>00773 {
-<a name="l00774"></a>00774 <span class="keywordflow">try</span> {
-<a name="l00775"></a>00775 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a>();
-<a name="l00776"></a>00776 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac1c6eb0f3c5166761d81503fa68f4b78">to_binary</a>(n._data(), bits);
-<a name="l00777"></a>00777 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00778"></a>00778 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a>();
-<a name="l00779"></a>00779 }
-<a name="l00780"></a>00780 }
-<a name="l00782"></a>00782
-<a name="l00785"></a>00785
-<a name="l00790"></a>00790 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00791"></a><a class="code" href="namespaceboost_1_1xint.html#ae9772c469f88348cd1558be1dcac0a46">00791</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00792"></a>00792 <span class="keywordflow">try</span> {
-<a name="l00793"></a>00793 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00794"></a>00794 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab9f07ea184f62952ec0bc51ae7f63946">getbit</a>(n._data(), bit);
-<a name="l00795"></a>00795 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00796"></a>00796 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00797"></a>00797 }
-<a name="l00798"></a>00798 }
-<a name="l00799"></a>00799
-<a name="l00804"></a>00804 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00805"></a><a class="code" href="namespaceboost_1_1xint.html#acbde618676ee2d01ce334b0ad2ee415f">00805</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(<a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00806"></a>00806 <span class="keywordflow">try</span> {
-<a name="l00807"></a>00807 <span class="keywordflow">if</span> (!n.is_nan()) <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(n._data(), bit);
-<a name="l00808"></a>00808 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00809"></a>00809 <span class="comment">// Do nothing.</span>
-<a name="l00810"></a>00810 }
-<a name="l00811"></a>00811 }
-<a name="l00812"></a>00812
-<a name="l00817"></a>00817 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00818"></a><a class="code" href="namespaceboost_1_1xint.html#abed80988937fa36406095c53ac5b4925">00818</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(<a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> bit) {
-<a name="l00819"></a>00819 <span class="keywordflow">try</span> {
-<a name="l00820"></a>00820 <span class="keywordflow">if</span> (!n.is_nan()) <a class="code" href="namespaceboost_1_1xint.html#a05dfa039837daba29cfac939335b8364">clearbit</a>(n._data(), bit);
-<a name="l00821"></a>00821 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00822"></a>00822 <span class="comment">// Do nothing.</span>
-<a name="l00823"></a>00823 }
-<a name="l00824"></a>00824 }
-<a name="l00825"></a>00825
-<a name="l00830"></a>00830 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00831"></a><a class="code" href="namespaceboost_1_1xint.html#a2a45431596a3d8ce084bef4d181205d3">00831</a> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero
-<a name="l00832"></a>00832 = 0)
-<a name="l00833"></a>00833 {
-<a name="l00834"></a>00834 <span class="keywordflow">try</span> {
-<a name="l00835"></a>00835 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> return_if_zero;
-<a name="l00836"></a>00836 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a88132067ca7e259160bcb7ed0b51e34f">lowestbit</a>(n._data(), return_if_zero);
-<a name="l00837"></a>00837 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00838"></a>00838 <span class="keywordflow">return</span> return_if_zero;
-<a name="l00839"></a>00839 }
-<a name="l00840"></a>00840 }
-<a name="l00841"></a>00841
-<a name="l00846"></a>00846 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00847"></a><a class="code" href="namespaceboost_1_1xint.html#abce4290c5bd113c9caf713b7887494ab">00847</a> <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63">bitsize_t</a> return_if_zero
-<a name="l00848"></a>00848 = 0)
-<a name="l00849"></a>00849 {
-<a name="l00850"></a>00850 <span class="keywordflow">try</span> {
-<a name="l00851"></a>00851 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> return_if_zero;
-<a name="l00852"></a>00852 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a4eb6d95cc77c2f1fe1e7c7c1bf81260b">highestbit</a>(n._data(), return_if_zero);
-<a name="l00853"></a>00853 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00854"></a>00854 <span class="keywordflow">return</span> return_if_zero;
-<a name="l00855"></a>00855 }
-<a name="l00856"></a>00856 }
-<a name="l00858"></a>00858
-<a name="l00861"></a>00861
-<a name="l00863"></a>00863 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00864"></a><a class="code" href="namespaceboost_1_1xint.html#a92435de368aa4f5c513c370917b2e6c2">00864</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00865"></a>00865 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> by, <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> modulus)
-<a name="l00866"></a>00866 {
-<a name="l00867"></a>00867 <span class="keywordflow">try</span> {
-<a name="l00868"></a>00868 <span class="keywordflow">if</span> (n.is_nan() || by.is_nan() || modulus.is_nan()) <span class="keywordflow">return</span> n.nan();
-<a name="l00869"></a>00869 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00870"></a>00870 <a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>(r._data(), n._data(), by._data(), modulus._data());
-<a name="l00871"></a>00871 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00872"></a>00872 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00873"></a>00873 <span class="keywordflow">return</span> n.nan();
-<a name="l00874"></a>00874 }
-<a name="l00875"></a>00875 }
-<a name="l00876"></a>00876
-<a name="l00878"></a>00878 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00879"></a><a class="code" href="namespaceboost_1_1xint.html#acc04d22301e5451b1cd45b42b723dfa4">00879</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00880"></a>00880 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> modulus)
-<a name="l00881"></a>00881 {
-<a name="l00882"></a>00882 <span class="keywordflow">try</span> {
-<a name="l00883"></a>00883 <span class="keywordflow">if</span> (n.is_nan() || modulus.is_nan()) <span class="keywordflow">return</span> n.nan();
-<a name="l00884"></a>00884 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00885"></a>00885 <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(r._data(), n._data(), modulus._data());
-<a name="l00886"></a>00886 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00887"></a>00887 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00888"></a>00888 <span class="keywordflow">return</span> n.nan();
-<a name="l00889"></a>00889 }
-<a name="l00890"></a>00890 }
-<a name="l00891"></a>00891
-<a name="l00893"></a>00893 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00894"></a><a class="code" href="namespaceboost_1_1xint.html#a92c4fb70fbc30f6b0e5d3d284c4ae9a7">00894</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00895"></a>00895 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> exponent, <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> modulus,
-<a name="l00896"></a>00896 <span class="keywordtype">bool</span> no_monty)
-<a name="l00897"></a>00897 {
-<a name="l00898"></a>00898 <span class="keywordflow">try</span> {
-<a name="l00899"></a>00899 <span class="keywordflow">if</span> (n.is_nan() || exponent.is_nan() || modulus.is_nan()) <span class="keywordflow">return</span> n.nan();
-<a name="l00900"></a>00900 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00901"></a>00901 <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(r._data(), n._data(), exponent._data(), modulus._data(),
-<a name="l00902"></a>00902 no_monty);
-<a name="l00903"></a>00903 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00904"></a>00904 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00905"></a>00905 <span class="keywordflow">return</span> n.nan();
-<a name="l00906"></a>00906 }
-<a name="l00907"></a>00907 }
-<a name="l00908"></a>00908
-<a name="l00910"></a>00910 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00911"></a><a class="code" href="namespaceboost_1_1xint.html#aece47ab2a3e92ee9206912290619e8f7">00911</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <span class="keyword">const</span>
-<a name="l00912"></a>00912 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> modulus)
-<a name="l00913"></a>00913 {
-<a name="l00914"></a>00914 <span class="keywordflow">try</span> {
-<a name="l00915"></a>00915 <span class="keywordflow">if</span> (n.is_nan() || modulus.is_nan()) <span class="keywordflow">return</span> n.nan();
-<a name="l00916"></a>00916 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l00917"></a>00917 <a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>(r._data(), n._data(), modulus._data());
-<a name="l00918"></a>00918 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l00919"></a>00919 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00920"></a>00920 <span class="keywordflow">return</span> n.nan();
-<a name="l00921"></a>00921 }
-<a name="l00922"></a>00922 }
-<a name="l00924"></a>00924
-<a name="l00927"></a>00927
-<a name="l00932"></a>00932 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l00933"></a><a class="code" href="namespaceboost_1_1xint.html#a7b44943a74e4c544b7691c2e0a24a32c">00933</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback =
-<a name="l00934"></a>00934 <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>)
-<a name="l00935"></a>00935 {
-<a name="l00936"></a>00936 <span class="keywordflow">try</span> {
-<a name="l00937"></a>00937 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> -2;
-<a name="l00938"></a>00938 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(n._data(), callback);
-<a name="l00939"></a>00939 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00940"></a>00940 <span class="keywordflow">return</span> -2;
-<a name="l00941"></a>00941 }
-<a name="l00942"></a>00942 }
-<a name="l00944"></a>00944
-<a name="l00947"></a>00947
-<a name="l00948"></a><a class="code" href="namespaceboost_1_1xint.html#a14d04f3e5d238015f70a9fd3b862c77f">00948</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00949"></a>00949 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l00950"></a>00950 {
-<a name="l00951"></a>00951 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00952"></a>00952 <span class="keywordflow">try</span> {
-<a name="l00953"></a>00953 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a921174a41a68a6eef2584526590c18cf">operator&lt;</a>(n1._data(), n2._data());
-<a name="l00954"></a>00954 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00955"></a>00955 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00956"></a>00956 }
-<a name="l00957"></a>00957 }
-<a name="l00958"></a>00958
-<a name="l00959"></a><a class="code" href="namespaceboost_1_1xint.html#a067985512800bf111b6381a3a6523c67">00959</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00960"></a>00960 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l00961"></a>00961 {
-<a name="l00962"></a>00962 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00963"></a>00963 <span class="keywordflow">try</span> {
-<a name="l00964"></a>00964 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a492d33d92db8bf3b6b6221b8e1933228">operator&gt;</a>(n1._data(), n2._data());
-<a name="l00965"></a>00965 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00966"></a>00966 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00967"></a>00967 }
-<a name="l00968"></a>00968 }
-<a name="l00969"></a>00969
-<a name="l00970"></a><a class="code" href="namespaceboost_1_1xint.html#abffa91bfcbe1e85a36b35c0dca12911e">00970</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00971"></a>00971 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l00972"></a>00972 {
-<a name="l00973"></a>00973 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00974"></a>00974 <span class="keywordflow">try</span> {
-<a name="l00975"></a>00975 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a980f9747bff82e9cf8744151fc91a108">operator&lt;=</a>(n1._data(), n2._data());
-<a name="l00976"></a>00976 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00977"></a>00977 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00978"></a>00978 }
-<a name="l00979"></a>00979 }
-<a name="l00980"></a>00980
-<a name="l00981"></a><a class="code" href="namespaceboost_1_1xint.html#a049242861ecb219e864a179c4e2bd87a">00981</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00982"></a>00982 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l00983"></a>00983 {
-<a name="l00984"></a>00984 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00985"></a>00985 <span class="keywordflow">try</span> {
-<a name="l00986"></a>00986 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab47039ec5d5e120f869cf2d5f8d63843">operator&gt;=</a>(n1._data(), n2._data());
-<a name="l00987"></a>00987 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00988"></a>00988 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00989"></a>00989 }
-<a name="l00990"></a>00990 }
-<a name="l00991"></a>00991
-<a name="l00992"></a><a class="code" href="namespaceboost_1_1xint.html#a7bb742fa7f73ce4a66c3562e63093ea4">00992</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l00993"></a>00993 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l00994"></a>00994 {
-<a name="l00995"></a>00995 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00996"></a>00996 <span class="keywordflow">try</span> {
-<a name="l00997"></a>00997 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac9268bd409f006775f248d03213282d5">operator==</a>(n1._data(), n2._data());
-<a name="l00998"></a>00998 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l00999"></a>00999 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01000"></a>01000 }
-<a name="l01001"></a>01001 }
-<a name="l01002"></a>01002
-<a name="l01003"></a><a class="code" href="namespaceboost_1_1xint.html#a78fe60b6ff798332d9c972a7572a8ff3">01003</a> <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a> <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01004"></a>01004 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01005"></a>01005 {
-<a name="l01006"></a>01006 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01007"></a>01007 <span class="keywordflow">try</span> {
-<a name="l01008"></a>01008 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a3ae00595a180a21d326ad50a072add0f">operator!=</a>(n1._data(), n2._data());
-<a name="l01009"></a>01009 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01010"></a>01010 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01011"></a>01011 }
-<a name="l01012"></a>01012 }
-<a name="l01014"></a>01014
-<a name="l01017"></a>01017
-<a name="l01019"></a>01019 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01020"></a><a class="code" href="namespaceboost_1_1xint.html#a3cb9c9351c4150e9b7f028cdf26e380b">01020</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a1e894e947435664ba17c27a93c7325e1">operator+</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01021"></a>01021 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01022"></a>01022 {
-<a name="l01023"></a>01023 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01024"></a>01024 <span class="keywordflow">try</span> {
-<a name="l01025"></a>01025 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(n1._data() + n2._data());
-<a name="l01026"></a>01026 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01027"></a>01027 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01028"></a>01028 <span class="keywordflow">return</span> n1.nan();
-<a name="l01029"></a>01029 }
-<a name="l01030"></a>01030 }
-<a name="l01031"></a>01031
-<a name="l01033"></a>01033 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01034"></a><a class="code" href="namespaceboost_1_1xint.html#a1d5c865ffc91a6b29fc95e3cbd87e753">01034</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af29f603561c73ae4dfefa314f854a9b9">operator-</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01035"></a>01035 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01036"></a>01036 {
-<a name="l01037"></a>01037 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01038"></a>01038 <span class="keywordflow">try</span> {
-<a name="l01039"></a>01039 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(n1._data() - n2._data());
-<a name="l01040"></a>01040 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01041"></a>01041 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01042"></a>01042 <span class="keywordflow">return</span> n1.nan();
-<a name="l01043"></a>01043 }
-<a name="l01044"></a>01044 }
-<a name="l01045"></a>01045
-<a name="l01047"></a>01047 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01048"></a><a class="code" href="namespaceboost_1_1xint.html#ac8008de156c89f46eb421eb4a60fb90f">01048</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#af877fa3d7e129eb0ea0d873396868723">operator*</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01049"></a>01049 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01050"></a>01050 {
-<a name="l01051"></a>01051 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01052"></a>01052 <span class="keywordflow">try</span> {
-<a name="l01053"></a>01053 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(n1._data() * n2._data());
-<a name="l01054"></a>01054 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01055"></a>01055 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01056"></a>01056 <span class="keywordflow">return</span> n1.nan();
-<a name="l01057"></a>01057 }
-<a name="l01058"></a>01058 }
-<a name="l01059"></a>01059
-<a name="l01061"></a>01061 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01062"></a><a class="code" href="namespaceboost_1_1xint.html#aef07a1b59c017d367cd8f129601d317f">01062</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a2606613cee80fbd4fd17100d6d0e09b9">operator/</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> dividend,
-<a name="l01063"></a>01063 <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> divisor)
-<a name="l01064"></a>01064 {
-<a name="l01065"></a>01065 <span class="keywordflow">if</span> (dividend.is_nan() || divisor.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01066"></a>01066 <span class="keywordflow">try</span> {
-<a name="l01067"></a>01067 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(dividend._data() /
-<a name="l01068"></a>01068 divisor._data());
-<a name="l01069"></a>01069 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01070"></a>01070 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01071"></a>01071 <span class="keywordflow">return</span> dividend.nan();
-<a name="l01072"></a>01072 }
-<a name="l01073"></a>01073 }
-<a name="l01074"></a>01074
-<a name="l01076"></a>01076 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01077"></a><a class="code" href="namespaceboost_1_1xint.html#ad7e11b62950cda48aa1e8288f0f49bb1">01077</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a3b804d111a60509665d6a7227039aee9">operator%</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01078"></a>01078 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01079"></a>01079 {
-<a name="l01080"></a>01080 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01081"></a>01081 <span class="keywordflow">try</span> {
-<a name="l01082"></a>01082 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(n1._data() % n2._data());
-<a name="l01083"></a>01083 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01084"></a>01084 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01085"></a>01085 <span class="keywordflow">return</span> n1.nan();
-<a name="l01086"></a>01086 }
-<a name="l01087"></a>01087 }
-<a name="l01088"></a>01088
-<a name="l01090"></a>01090 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01091"></a><a class="code" href="namespaceboost_1_1xint.html#a91a76dbe5320a452f31966aae35da0bc">01091</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#ad86517e5d3b5826470694001075de255">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01092"></a>01092 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01093"></a>01093 {
-<a name="l01094"></a>01094 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01095"></a>01095 <span class="keywordflow">try</span> {
-<a name="l01096"></a>01096 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(n1._data() &amp; n2._data());
-<a name="l01097"></a>01097 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01098"></a>01098 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01099"></a>01099 <span class="keywordflow">return</span> n1.nan();
-<a name="l01100"></a>01100 }
-<a name="l01101"></a>01101 }
-<a name="l01102"></a>01102
-<a name="l01104"></a>01104 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01105"></a><a class="code" href="namespaceboost_1_1xint.html#ace07b7c6d63117b14903f785b8d2276d">01105</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a2e0a49149f74db4161870090d948e817">operator|</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01106"></a>01106 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01107"></a>01107 {
-<a name="l01108"></a>01108 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01109"></a>01109 <span class="keywordflow">try</span> {
-<a name="l01110"></a>01110 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(n1._data() | n2._data());
-<a name="l01111"></a>01111 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01112"></a>01112 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01113"></a>01113 <span class="keywordflow">return</span> n1.nan();
-<a name="l01114"></a>01114 }
-<a name="l01115"></a>01115 }
-<a name="l01116"></a>01116
-<a name="l01118"></a>01118 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01119"></a><a class="code" href="namespaceboost_1_1xint.html#a6b65ed6783e91563d65410aa4e526a99">01119</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a964396cc2b187769a3f45a7b348ce60c">operator^</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span>
-<a name="l01120"></a>01120 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n2)
-<a name="l01121"></a>01121 {
-<a name="l01122"></a>01122 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l01123"></a>01123 <span class="keywordflow">try</span> {
-<a name="l01124"></a>01124 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r(n1._data() ^ n2._data());
-<a name="l01125"></a>01125 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01126"></a>01126 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01127"></a>01127 <span class="keywordflow">return</span> n1.nan();
-<a name="l01128"></a>01128 }
-<a name="l01129"></a>01129 }
-<a name="l01131"></a>01131
-<a name="l01134"></a>01134
-<a name="l01136"></a>01136 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01137"></a><a class="code" href="namespaceboost_1_1xint.html#a3c2edec1d630692541fb8d779fe24d6c">01137</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> num1, <span class="keyword">const</span>
-<a name="l01138"></a>01138 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> num2)
-<a name="l01139"></a>01139 {
-<a name="l01140"></a>01140 <span class="keywordflow">if</span> (num1.is_nan() || num2.is_nan()) <span class="keywordflow">return</span> num1.nan();
-<a name="l01141"></a>01141 <span class="keywordflow">try</span> {
-<a name="l01142"></a>01142 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l01143"></a>01143 <a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>(r._data(), num1._data(), num2._data());
-<a name="l01144"></a>01144 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01145"></a>01145 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01146"></a>01146 <span class="keywordflow">return</span> num1.nan();
-<a name="l01147"></a>01147 }
-<a name="l01148"></a>01148 }
-<a name="l01149"></a>01149
-<a name="l01151"></a>01151 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01152"></a><a class="code" href="namespaceboost_1_1xint.html#ad5f8b7e50849e6bc237e881f8b531d28">01152</a> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> num1, <span class="keyword">const</span>
-<a name="l01153"></a>01153 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> num2)
-<a name="l01154"></a>01154 {
-<a name="l01155"></a>01155 <span class="keywordflow">if</span> (num1.is_nan() || num2.is_nan()) <span class="keywordflow">return</span> num1.nan();
-<a name="l01156"></a>01156 <span class="keywordflow">try</span> {
-<a name="l01157"></a>01157 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> r;
-<a name="l01158"></a>01158 <a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>(r._data(), num1._data(), num2._data());
-<a name="l01159"></a>01159 <span class="keywordflow">return</span> <a class="code" href="internals_8hpp.html#a73c3b02410381da656b7cb59c7ba9314">BOOST_XINT_MOVE</a>(r);
-<a name="l01160"></a>01160 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01161"></a>01161 <span class="keywordflow">return</span> num1.nan();
-<a name="l01162"></a>01162 }
-<a name="l01163"></a>01163 }
-<a name="l01164"></a>01164
-<a name="l01169"></a>01169 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01170"></a><a class="code" href="namespaceboost_1_1xint.html#ad198e5679c816eb58edbd8910a2a3e22">01170</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n1, <span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>
-<a name="l01171"></a>01171 n2, <span class="keywordtype">bool</span> ignoresign = <span class="keyword">false</span>)
-<a name="l01172"></a>01172 {
-<a name="l01173"></a>01173 <span class="keywordflow">if</span> (n1.is_nan() || n2.is_nan()) <span class="keywordflow">return</span> 2;
-<a name="l01174"></a>01174 <span class="keywordflow">try</span> {
-<a name="l01175"></a>01175 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>(n1._data(), n2._data(), ignoresign);
-<a name="l01176"></a>01176 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01177"></a>01177 <span class="keywordflow">return</span> 2;
-<a name="l01178"></a>01178 }
-<a name="l01179"></a>01179 }
-<a name="l01180"></a>01180
-<a name="l01185"></a>01185 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01186"></a><a class="code" href="namespaceboost_1_1xint.html#a7e4c5b4383c8c4f23791999b999045aa">01186</a> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(<span class="keyword">const</span> <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n) {
-<a name="l01187"></a>01187 <span class="keywordflow">try</span> {
-<a name="l01188"></a>01188 <span class="keywordflow">return</span> (n.is_nan() ? 0 : <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(n._data()));
-<a name="l01189"></a>01189 } <span class="keywordflow">catch</span> (std::exception&amp;) {
-<a name="l01190"></a>01190 <span class="keywordflow">return</span> 0;
-<a name="l01191"></a>01191 }
-<a name="l01192"></a>01192 }
-<a name="l01194"></a>01194
-<a name="l01197"></a><a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">01197</a> <span class="preprocessor">#define BOOST_XINT_NOTHROW_ANY_COMPARE(rtype, op) \</span>
-<a name="l01198"></a>01198 <span class="preprocessor"> template &lt;class Alloc, bool Threadsafe, bool Secure, typename N&gt; \</span>
-<a name="l01199"></a>01199 <span class="preprocessor"> rtype op(const BOOST_XINT_NTINTEGER_TYPE n1, const N n2) { \</span>
-<a name="l01200"></a>01200 <span class="preprocessor"> return op(n1, BOOST_XINT_NTINTEGER_TYPE(n2)); \</span>
-<a name="l01201"></a>01201 <span class="preprocessor"> } \</span>
-<a name="l01202"></a>01202 <span class="preprocessor"> \</span>
-<a name="l01203"></a>01203 <span class="preprocessor"> template &lt;typename N, class Alloc, bool Threadsafe, bool Secure&gt; \</span>
-<a name="l01204"></a>01204 <span class="preprocessor"> rtype op(const N n1, const BOOST_XINT_NTINTEGER_TYPE n2) { \</span>
-<a name="l01205"></a>01205 <span class="preprocessor"> return op(BOOST_XINT_NTINTEGER_TYPE(n1), n2); \</span>
-<a name="l01206"></a>01206 <span class="preprocessor"> }</span>
-<a name="l01207"></a>01207 <span class="preprocessor"></span>
-<a name="l01208"></a>01208 <a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, <span class="keyword">operator</span>&lt;)
-<a name="l01209"></a>01209 <a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;)
-<a name="l01210"></a>01210 <a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&lt;=)
-<a name="l01211"></a>01211 <a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator&gt;=)
-<a name="l01212"></a>01212 <a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator==)
-<a name="l01213"></a>01213 <a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(<span class="keywordtype">bool</span>, operator!=)
-<a name="l01214"></a>01214 <a class="code" href="nothrow__integer_8hpp.html#a46fcb1cc12bb4c915e62f759a519f71d">BOOST_XINT_NOTHROW_ANY_COMPARE</a>(<span class="keywordtype">int</span>, <a class="code" href="namespaceboost_1_1xint.html#a39a3143ef1f03a35f2b7409b365fc853">compare</a>)
-<a name="l01215"></a>01215
-<a name="l01218"></a><a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">01218</a> <span class="preprocessor">#define BOOST_XINT_NOTHROW_ANY_MATH(op) \</span>
-<a name="l01219"></a>01219 <span class="preprocessor"> template &lt;class Alloc, bool Threadsafe, bool Secure, typename N&gt; \</span>
-<a name="l01220"></a>01220 <span class="preprocessor"> BOOST_XINT_NTINTEGER_TYPE op(const BOOST_XINT_NTINTEGER_TYPE n1, const N \</span>
-<a name="l01221"></a>01221 <span class="preprocessor"> n2) \</span>
-<a name="l01222"></a>01222 <span class="preprocessor"> { \</span>
-<a name="l01223"></a>01223 <span class="preprocessor"> BOOST_XINT_NTINTEGER_TYPE r(op(n1, BOOST_XINT_NTINTEGER_TYPE(n2))); \</span>
-<a name="l01224"></a>01224 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
-<a name="l01225"></a>01225 <span class="preprocessor"> } \</span>
-<a name="l01226"></a>01226 <span class="preprocessor"> \</span>
-<a name="l01227"></a>01227 <span class="preprocessor"> template &lt;typename N, class Alloc, bool Threadsafe, bool Secure&gt; \</span>
-<a name="l01228"></a>01228 <span class="preprocessor"> BOOST_XINT_NTINTEGER_TYPE op(const N n1, const BOOST_XINT_NTINTEGER_TYPE \</span>
-<a name="l01229"></a>01229 <span class="preprocessor"> n2) \</span>
-<a name="l01230"></a>01230 <span class="preprocessor"> { \</span>
-<a name="l01231"></a>01231 <span class="preprocessor"> BOOST_XINT_NTINTEGER_TYPE r(op(BOOST_XINT_NTINTEGER_TYPE(n1), n2)); \</span>
-<a name="l01232"></a>01232 <span class="preprocessor"> return BOOST_XINT_MOVE(r); \</span>
-<a name="l01233"></a>01233 <span class="preprocessor"> }</span>
-<a name="l01234"></a>01234 <span class="preprocessor"></span>
-<a name="l01235"></a>01235 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>)
-<a name="l01236"></a>01236 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a08936f9fc3d9b799f98604bedefb1ee8">mulmod</a>)
-<a name="l01237"></a>01237 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>)
-<a name="l01238"></a>01238 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>)
-<a name="l01239"></a>01239 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#ac628e1a39065df013c263455992c00eb">invmod</a>)
-<a name="l01240"></a>01240 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator+)
-<a name="l01241"></a>01241 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator-)
-<a name="l01242"></a>01242 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator*)
-<a name="l01243"></a>01243 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator/)
-<a name="l01244"></a>01244 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator%)
-<a name="l01245"></a>01245 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator&amp;)
-<a name="l01246"></a>01246 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator|)
-<a name="l01247"></a>01247 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(operator^)
-<a name="l01248"></a>01248 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a808dafe43afa6f06a5a44b0e956b885a">gcd</a>)
-<a name="l01249"></a>01249 <a class="code" href="nothrow__integer_8hpp.html#aff76dded7b4c18c2bfe5ab1df94c69d3">BOOST_XINT_NOTHROW_ANY_MATH</a>(<a class="code" href="namespaceboost_1_1xint.html#a0ef1c4af129617e9d5f01f96edf2b867">lcm</a>)
-<a name="l01250"></a>01250
-<a name="l01253"></a>01253 template &lt;typename charT, typename traits, class Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span>
-<a name="l01254"></a>01254 Secure&gt; inline std::basic_ostream&lt;charT,traits&gt;&amp;
-<a name="l01255"></a><a class="code" href="namespaceboost_1_1xint.html#a6bb5af0935eaf4be1876c8284f116525">01255</a> operator&lt;&lt;(std::basic_ostream&lt;charT, traits&gt;&amp; out, const
-<a name="l01256"></a>01256 <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a> n)
-<a name="l01257"></a>01257 {
-<a name="l01258"></a>01258 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> <span class="keyword">operator</span>&lt;&lt;(out, n._nan_text());
-<a name="l01259"></a>01259 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">operator&lt;&lt;</a>(out, n._data());
-<a name="l01260"></a>01260 }
-<a name="l01261"></a>01261
-<a name="l01262"></a>01262 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> charT, <span class="keyword">typename</span> traits, <span class="keyword">class </span>Alloc, <span class="keywordtype">bool</span> Threadsafe, <span class="keywordtype">bool</span>
-<a name="l01263"></a>01263 Secure&gt; <span class="keyword">inline</span> std::basic_istream&lt;charT,traits&gt;&amp;
-<a name="l01264"></a><a class="code" href="namespaceboost_1_1xint.html#add798bd386457947563587067ad497e8">01264</a> <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(std::basic_istream&lt;charT, traits&gt;&amp; in, <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp;
-<a name="l01265"></a>01265 n)
-<a name="l01266"></a>01266 {
-<a name="l01267"></a>01267 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">&#39;#&#39;</span>) {
-<a name="l01268"></a>01268 <span class="comment">// Must be either #NaN# or an error</span>
-<a name="l01269"></a>01269 <span class="keywordtype">char</span> buffer[6];
-<a name="l01270"></a>01270
-<a name="l01271"></a>01271 <span class="comment">// These are efficient and safe, but MSVC complains about them anyway.</span>
-<a name="l01272"></a>01272 <span class="comment">//std::streamsize size=in.readsome(buffer, 5);</span>
-<a name="l01273"></a>01273 <span class="comment">//buffer[size]=0;</span>
-<a name="l01274"></a>01274
-<a name="l01275"></a>01275 <span class="comment">// Replacing them with these.</span>
-<a name="l01276"></a>01276 <span class="keywordtype">char</span> *p = buffer, *pe = p + 5;
-<a name="l01277"></a>01277 <span class="keywordflow">while</span> (p != pe) in &gt;&gt; *p++;
-<a name="l01278"></a>01278 *p = 0;
-<a name="l01279"></a>01279
-<a name="l01280"></a>01280 std::string str(buffer);
-<a name="l01281"></a>01281
-<a name="l01282"></a>01282 <span class="keywordflow">if</span> (str == n._nan_text()) n = n.nan();
-<a name="l01283"></a>01283 <span class="keywordflow">else</span> in.setstate(std::ios::failbit);
-<a name="l01284"></a>01284 <span class="keywordflow">return</span> in;
-<a name="l01285"></a>01285 } <span class="keywordflow">else</span> {
-<a name="l01286"></a>01286 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(in, n._data());
-<a name="l01287"></a>01287 }
-<a name="l01288"></a>01288 }
-<a name="l01290"></a>01290
-<a name="l01291"></a>01291 <a class="code" href="integer_8hpp.html#ae52121dc019a317d3d044eb35e44b817">BOOST_XINT_INTEGER_TPL</a>
-<a name="l01292"></a><a class="code" href="namespaceboost_1_1xint.html#a5df93e9ae7f561d923bb90afd9cbd2d8">01292</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a00ebb69a2c4e772f6ae9de36b4430d62">swap</a>(<a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp; left, <a class="code" href="nothrow__integer_8hpp.html#aa215bbd24b0f30813fc9ad4add1ce4e9">BOOST_XINT_NTINTEGER_TYPE</a>&amp;
-<a name="l01293"></a>01293 right)
-<a name="l01294"></a>01294 {
-<a name="l01295"></a>01295 left._swap(right);
-<a name="l01296"></a>01296 }
-<a name="l01297"></a>01297
-<a name="l01302"></a><a class="code" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf">01302</a> <span class="keyword">typedef</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">nothrow_integer_t&lt;&gt;</a> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">nothrow_integer</a>;
-<a name="l01303"></a>01303
-<a name="l01304"></a>01304 } <span class="comment">// namespace xint</span>
-<a name="l01305"></a>01305 } <span class="comment">// namespace boost</span>
-<a name="l01306"></a>01306
-<a name="l01307"></a>01307 <span class="keyword">namespace </span>std {
-<a name="l01308"></a>01308 <span class="keyword">template</span>&lt;&gt;
-<a name="l01309"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html">01309</a> <span class="keyword">class </span>numeric_limits&lt;boost::xint::<a class="code" href="namespaceboost_1_1xint.html#a4a293ec33bf1c68b3c92536fdd6b4abf" title="The default nothrow_integer type.">nothrow_integer</a>&gt; {
-<a name="l01310"></a>01310 <span class="keyword">public</span>:
-<a name="l01311"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ad75c31bcf281bc3d61fcaa86f5d637a4">01311</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="l01312"></a>01312
-<a name="l01313"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5c9ca5145dc7b0020c7d8a59a2200af4">01313</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">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="l01314"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae393a1460b35b321eb0911061ba2d877">01314</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">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="l01315"></a>01315
-<a name="l01316"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8db85ce6bfd29378cd5b054ffa9dcc73">01316</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="l01317"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a635a92c394110e24ad5446906d32dbac">01317</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="l01318"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a54b78ebfa3ddfc7b348487936aca5a69">01318</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="l01319"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ab6e1b183e5175d71bf9e4d6df54aef0a">01319</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="l01320"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a7349047386bb539ab5a714b5864f8b2b">01320</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="l01321"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#adae12b63475b14d19128eee60c665c5c">01321</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> radix = 2;
-<a name="l01322"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a1e2dbe9a0e93d417475413d5547c504d">01322</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">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="l01323"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8a38a58bba31aa9ea9815b957525b650">01323</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">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="l01324"></a>01324
-<a name="l01325"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#ae0fa48cc50faee763bb27126f48fd16c">01325</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="l01326"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aede69004d06de1fcf6a0a4d7fc601a5d">01326</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="l01327"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a5159625bece286f452e9b2b86e94b8d5">01327</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="l01328"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6a63de06c48db492872f44521d52d300">01328</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="l01329"></a>01329
-<a name="l01330"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#af2f45b256a4e7ad9f6304e0f743400ec">01330</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="l01331"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aae261d33d81d7ce984a045e96b46f962">01331</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="l01332"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a49ff05bed05568f4a4ddf0b3d25e5980">01332</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="l01333"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a8eb59688fd79c9928927d524d7c700c4">01333</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="l01334"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#addb4eee85c09f7e5395e67c918671d05">01334</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="l01335"></a>01335
-<a name="l01336"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aeb5447260ec78f94e2979ca91081f3d0">01336</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">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="l01337"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a13e8fdc53c49a6965fb9009a0bc39fab">01337</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">boost::xint::nothrow_integer</a> quiet_NaN() throw()
-<a name="l01338"></a>01338 { <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html#a0ae44add69e94e0caaf48d44b4feb019">boost::xint::nothrow_integer::nan</a>(); }
-<a name="l01339"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aaa6da5c0db199ca584a2ee47d0796476">01339</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">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="l01340"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#aab4e0d9304ec3163dd04c2f1fd51f0a0">01340</a> <span class="keyword">static</span> <a class="code" href="classboost_1_1xint_1_1nothrow__integer__t.html" title="The nothrow_integer_t class template.">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="l01341"></a>01341
-<a name="l01342"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#abea02c5396ab75990b17946fb8e9aa9b">01342</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="l01343"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a53d8df36b3487d8eb3e923c6729edf21">01343</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="l01344"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a3a65bc9e353e0a09aeb1b35384d65f40">01344</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="l01345"></a>01345
-<a name="l01346"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a9d18eb71d6bad51653de3f58f62d5f47">01346</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="l01347"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a2cb05a6ce2f537c0be893bb3260fb186">01347</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="l01348"></a><a class="code" href="classstd_1_1numeric__limits_3_01boost_1_1xint_1_1nothrow__integer_01_4.html#a6e305ad6c75f38d0d0ba4aa15865845d">01348</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="l01349"></a>01349 };
-<a name="l01350"></a>01350 } <span class="comment">// namespace std</span>
-<a name="l01351"></a>01351
-<a name="l01352"></a>01352 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l01353"></a>01353 <span class="preprocessor"></span> <span class="comment">// Return the warning setting to its original value.</span>
-<a name="l01354"></a>01354 <span class="preprocessor"> #pragma warning(pop)</span>
-<a name="l01355"></a>01355 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l01356"></a>01356 <span class="preprocessor"></span>
-<a name="l01357"></a>01357 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/options_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/options_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/options.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>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>detail/options.hpp File Reference</h1>
+<p>Declares the arbitrary-length 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">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength.html">boost::xint::options::fixedlength&lt; Bits &gt;</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">boost::xint::options::fixedlength_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">boost::xint::options::nothrow&lt; Value &gt;</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">boost::xint::options::nothrow_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1secure.html">boost::xint::options::secure&lt; Value &gt;</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">boost::xint::options::secure_base</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe.html">boost::xint::options::threadsafe&lt; Value &gt;</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">boost::xint::options::threadsafe_base</a></td></tr>
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1options.html">boost::xint::options</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Options for the <a class="el" href="classboost_1_1xint_1_1integer__t.html" title="The integer_t class template.">integer_t</a> template are stored in this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef parameter::parameters<br class="typebreak"/>
+&lt; optional&lt; deduced<br class="typebreak"/>
+&lt; tag::fixedlength_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; fixedlength_base, <br class="typebreak"/>
+_ &gt; &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::threadsafe_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; threadsafe_base, <br class="typebreak"/>
+_ &gt; &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::secure_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; secure_base, _ &gt;<br class="typebreak"/>
+ &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::nothrow_tag &gt;<br class="typebreak"/>
+, is_base_of&lt; nothrow_base, _ &gt;<br class="typebreak"/>
+ &gt;, optional&lt; deduced<br class="typebreak"/>
+&lt; tag::allocator_tag &gt;<br class="typebreak"/>
+, is_class&lt; _ &gt; &gt;&gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1options.html#af65b057a2b140d4ca9daec17bba31722">boost::xint::options::integer_signature</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Declares the arbitrary-length integer type. </p>
+
+<p>Definition in file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/options_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/options_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,90 @@
+<!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: detail/options.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>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>detail/options.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00003"></a>00003 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00004"></a>00004 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00005"></a>00005 <span class="comment"></span>
+<a name="l00006"></a>00006 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00007"></a>00007 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00008"></a>00008 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00009"></a>00009 <span class="comment"></span>
+<a name="l00010"></a>00010 <span class="comment"> See
http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00011"></a>00011 <span class="comment">*/</span>
+<a name="l00012"></a>00012
+<a name="l00017"></a>00017 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_INTEGER_OPTIONS_HPP</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_INTEGER_OPTIONS_HPP</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span>
+<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 BOOST_PARAMETER_TEMPLATE_KEYWORD(fixedlength_tag)
+<a name="l00024"></a>00024 BOOST_PARAMETER_TEMPLATE_KEYWORD(threadsafe_tag)
+<a name="l00025"></a>00025 BOOST_PARAMETER_TEMPLATE_KEYWORD(secure_tag)
+<a name="l00026"></a>00026 BOOST_PARAMETER_TEMPLATE_KEYWORD(nothrow_tag)
+<a name="l00027"></a>00027 BOOST_PARAMETER_TEMPLATE_KEYWORD(allocator_tag)
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 using boost::is_base_of;
+<a name="l00030"></a>00030 using boost::mpl::_;
+<a name="l00031"></a>00031 using boost::parameter::binding;
+<a name="l00032"></a>00032 using boost::parameter::optional;
+<a name="l00033"></a>00033 using boost::parameter::deduced;
+<a name="l00034"></a>00034
+<a name="l00036"></a><a class="code" href="namespaceboost_1_1xint_1_1options.html">00036</a> namespace options {
+<a name="l00037"></a>00037
+<a name="l00038"></a><a class="code" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">00038</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">fixedlength_base</a> { };
+<a name="l00039"></a><a class="code" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">00039</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">threadsafe_base</a> { };
+<a name="l00040"></a><a class="code" href="structboost_1_1xint_1_1options_1_1secure__base.html">00040</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1secure__base.html">secure_base</a> { };
+<a name="l00041"></a><a class="code" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">00041</a> <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">nothrow_base</a> { };
+<a name="l00042"></a>00042
+<a name="l00043"></a><a class="code" href="structboost_1_1xint_1_1options_1_1fixedlength.html">00043</a> <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits&gt; <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1fixedlength.html">fixedlength</a>: <span class="keyword">public</span> <a class="code" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">fixedlength_base</a>, <span class="keyword">public</span>
+<a name="l00044"></a>00044 boost::mpl::integral_c&lt;bitsize_t, Bits&gt; { };
+<a name="l00045"></a><a class="code" href="structboost_1_1xint_1_1options_1_1threadsafe.html">00045</a> <span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Value&gt; <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1threadsafe.html">threadsafe</a>: <span class="keyword">public</span> <a class="code" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">threadsafe_base</a>, <span class="keyword">public</span>
+<a name="l00046"></a>00046 boost::mpl::bool_&lt;Value&gt; { };
+<a name="l00047"></a><a class="code" href="structboost_1_1xint_1_1options_1_1secure.html">00047</a> <span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Value&gt; <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1secure.html">secure</a>: <span class="keyword">public</span> <a class="code" href="structboost_1_1xint_1_1options_1_1secure__base.html">secure_base</a>, <span class="keyword">public</span>
+<a name="l00048"></a>00048 boost::mpl::bool_&lt;Value&gt; { };
+<a name="l00049"></a><a class="code" href="structboost_1_1xint_1_1options_1_1nothrow.html">00049</a> <span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Value&gt; <span class="keyword">struct </span><a class="code" href="structboost_1_1xint_1_1options_1_1nothrow.html">nothrow</a>: <span class="keyword">public</span> <a class="code" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">nothrow_base</a>, <span class="keyword">public</span>
+<a name="l00050"></a>00050 boost::mpl::bool_&lt;Value&gt; { };
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> parameter::parameters&lt;
+<a name="l00053"></a>00053 optional&lt;deduced&lt;tag::fixedlength_tag&gt;, is_base_of&lt;fixedlength_base, _&gt; &gt;,
+<a name="l00054"></a>00054 optional&lt;deduced&lt;tag::threadsafe_tag&gt;, is_base_of&lt;threadsafe_base, _&gt; &gt;,
+<a name="l00055"></a>00055 optional&lt;deduced&lt;tag::secure_tag&gt;, is_base_of&lt;secure_base, _&gt; &gt;,
+<a name="l00056"></a>00056 optional&lt;deduced&lt;tag::nothrow_tag&gt;, is_base_of&lt;nothrow_base, _&gt; &gt;,
+<a name="l00057"></a>00057 optional&lt;deduced&lt;tag::allocator_tag&gt;, is_class&lt;_&gt; &gt;
+<a name="l00058"></a><a class="code" href="namespaceboost_1_1xint_1_1options.html#af65b057a2b140d4ca9daec17bba31722">00058</a> &gt; <a class="code" href="namespaceboost_1_1xint_1_1options.html#af65b057a2b140d4ca9daec17bba31722">integer_signature</a>;
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 } <span class="comment">// namespace options</span>
+<a name="l00061"></a>00061 } <span class="comment">// namespace xint</span>
+<a name="l00062"></a>00062 } <span class="comment">// namespace boost</span>
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_INTEGER_OPTIONS_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/pages.html
==============================================================================
--- sandbox/xint/libs/xint/doc/pages.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,32 +0,0 @@
-<!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: Page Index</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>
-<div class="contents">
-<h1>Related Pages</h1>Here is a list of all related documentation pages:<ul>
-<li><a class="el" href="threadsafe.html">The \c Threadsafe Template Parameter</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Jun 2 12:53:42 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/policies_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/random_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/policies_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/policies.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,15 +25,12 @@
   </div>
 </div>
 <div class="contents">
-<h1>random.hpp File Reference</h1>
-<p>Declares items relating to random numbers.
+<h1>detail/policies.hpp File Reference</h1>
+<p>Contains the policy classes.
 <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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for general-purpose (insecure) random numbers. More...<br/></td></tr>
 <tr><td colspan="2"><h2>Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -46,17 +43,14 @@
 <p><tr><td class="mdescLeft">&nbsp;</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 <br class="typebreak"/>
-detail::strong_random_generator_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">boost::xint::strong_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. <br/></td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Declares items relating to random numbers. </p>
+<p>Contains the policy classes. </p>
+<p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition in file <a class="el" href="policies_8hpp_source.html">policies.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/policies_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/policies_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,217 @@
+<!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: detail/policies.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>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>detail/policies.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_POLICY_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_POLICY_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<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>detail {
+<a name="l00027"></a>00027
+<a name="l00029"></a>00029 <span class="comment">// Allocation</span>
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="keyword">struct </span>realloc {
+<a name="l00032"></a>00032 <span class="keyword">enum</span> strategy { ignore, zero, copy, extend };
+<a name="l00033"></a>00033 };
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00036"></a>00036 <span class="keyword">class </span>allocator_t {
+<a name="l00037"></a>00037 BOOST_STATIC_ASSERT(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> Alloc::value_type) == <span class="keyword">sizeof</span>(digit_t));
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">public</span>:
+<a name="l00040"></a>00040 <span class="keyword">static</span> magnitude_t *alloc(<span class="keywordtype">size_t</span> size, <span class="keywordtype">bool</span> readonly = <span class="keyword">false</span>);
+<a name="l00041"></a>00041 <span class="keyword">static</span> magnitude_t *realloc_and_uniquify(magnitude_t *old, <span class="keywordtype">size_t</span> newsize
+<a name="l00042"></a>00042 = 0, realloc::strategy strategy = realloc::copy);
+<a name="l00043"></a>00043 <span class="keyword">static</span> magnitude_t *duplicate(magnitude_t *source, <span class="keywordtype">size_t</span> newsize = 0);
+<a name="l00044"></a>00044 <span class="keyword">static</span> <span class="keywordtype">void</span> dealloc(magnitude_t *p);
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keyword">static</span> <span class="keywordtype">void</span> attach(magnitude_t *p);
+<a name="l00047"></a>00047 <span class="keyword">static</span> <span class="keywordtype">void</span> detach(magnitude_t *p);
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keyword">private</span>:
+<a name="l00050"></a>00050 <span class="keyword">static</span> Alloc allocator;
+<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> fixed_length;
+<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> magnitude_datasize;
+<a name="l00053"></a>00053 };
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00056"></a>00056 Alloc allocator_t&lt;Bits, Secure, Alloc&gt;::allocator;
+<a name="l00057"></a>00057 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00058"></a>00058 <span class="keyword">const</span> <span class="keywordtype">size_t</span> allocator_t&lt;Bits, Secure, Alloc&gt;::fixed_length = (Bits +
+<a name="l00059"></a>00059 bits_per_digit - 1) / bits_per_digit;
+<a name="l00060"></a>00060 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00061"></a>00061 <span class="keyword">const</span> <span class="keywordtype">size_t</span> allocator_t&lt;Bits, Secure, Alloc&gt;::magnitude_datasize =
+<a name="l00062"></a>00062 (<span class="keyword">sizeof</span>(magnitude_t) + <span class="keyword">sizeof</span>(digit_t) - 1) / <span class="keyword">sizeof</span>(digit_t);
+<a name="l00063"></a>00063
+<a name="l00065"></a>00065 <span class="comment">// Fixed- or variable-length</span>
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, bit<span class="keywordtype">size_t</span> Modded = Bits % bits_per_digit&gt;
+<a name="l00068"></a>00068 <span class="keyword">class </span>fixedlength_t {
+<a name="l00069"></a>00069 <span class="keyword">public</span>:
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keywordtype">void</span> trim(magnitude_t *p) {
+<a name="l00071"></a>00071 <span class="comment">// Only valid if Bits % bits_per_digit is non-zero.</span>
+<a name="l00072"></a>00072 p-&gt;digits[last_digit] &amp;= mask;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">private</span>:
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> last_digit;
+<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keyword">const</span> digit_t mask;
+<a name="l00078"></a>00078 };
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, bit<span class="keywordtype">size_t</span> Modded&gt;
+<a name="l00081"></a>00081 <span class="keyword">const</span> <span class="keywordtype">size_t</span> fixedlength_t&lt;Bits, Modded&gt;::last_digit = ((Bits + bits_per_digit -
+<a name="l00082"></a>00082 1) / bits_per_digit) - 1;
+<a name="l00083"></a>00083 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, bit<span class="keywordtype">size_t</span> Modded&gt;
+<a name="l00084"></a>00084 <span class="keyword">const</span> digit_t fixedlength_t&lt;Bits, Modded&gt;::mask = digit_t((doubledigit_t(1) &lt;&lt;
+<a name="l00085"></a>00085 (Bits % bits_per_digit)) - 1);
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits&gt;
+<a name="l00088"></a>00088 <span class="keyword">class </span>fixedlength_t&lt;Bits, 0&gt; {
+<a name="l00089"></a>00089 <span class="keyword">public</span>:
+<a name="l00090"></a>00090 <span class="keyword">static</span> <span class="keywordtype">void</span> trim(magnitude_t*) { }
+<a name="l00091"></a>00091 };
+<a name="l00092"></a>00092
+<a name="l00094"></a>00094 <span class="comment">// Function Definitions</span>
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00097"></a>00097 magnitude_t *allocator_t&lt;Bits, Secure, Alloc&gt;::alloc(<span class="keywordtype">size_t</span> size, <span class="keywordtype">bool</span> readonly)
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 <span class="keywordflow">if</span> (fixed_length) size = fixed_length;
+<a name="l00100"></a>00100 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (size &lt; minimum_digits) size = minimum_digits;
+<a name="l00101"></a>00101 <span class="keyword">const</span> <span class="keywordtype">size_t</span> count = size - minimum_digits + magnitude_datasize;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 digit_t *storage = 0;
+<a name="l00104"></a>00104 <span class="keywordflow">try</span> {
+<a name="l00105"></a>00105 storage = allocator.allocate(count);
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (readonly) <span class="keywordflow">return</span> <span class="keyword">new</span>(storage) magnitude_t(size, readonly, 0);
+<a name="l00107"></a>00107 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">new</span>(storage) magnitude_t(size, readonly);
+<a name="l00108"></a>00108 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
+<a name="l00109"></a>00109 <span class="keywordflow">throw</span> exceptions::overflow_error(<span class="stringliteral">&quot;Out of memory allocating integer&quot;</span>);
+<a name="l00110"></a>00110 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00111"></a>00111 <span class="comment">// To make it exception-safe, we&#39;ve got to ensure that the allocated</span>
+<a name="l00112"></a>00112 <span class="comment">// data is properly disposed of if there&#39;s an exception, before passing</span>
+<a name="l00113"></a>00113 <span class="comment">// the exception on.</span>
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (storage) allocator.deallocate(storage, size);
+<a name="l00115"></a>00115 <span class="keywordflow">throw</span>;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00120"></a>00120 magnitude_t *allocator_t&lt;Bits, Secure, Alloc&gt;::realloc_and_uniquify(magnitude_t
+<a name="l00121"></a>00121 *old, <span class="keywordtype">size_t</span> newsize, realloc::strategy strategy)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (fixed_length) {
+<a name="l00124"></a>00124 newsize = fixed_length;
+<a name="l00125"></a>00125 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (newsize == 0) {
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (old) newsize = old-&gt;max_length;
+<a name="l00127"></a>00127 <span class="keywordflow">else</span> newsize = minimum_digits;
+<a name="l00128"></a>00128 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (newsize &lt; minimum_digits) newsize = minimum_digits;
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 magnitude_t *r = old;
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (old == 0 || newsize &gt; old-&gt;max_length || old-&gt;copies() &gt; 1) {
+<a name="l00132"></a>00132 r = alloc(newsize);
+<a name="l00133"></a>00133 attach(r);
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (strategy == realloc::ignore) {
+<a name="l00136"></a>00136 <span class="comment">// Do nothing.</span>
+<a name="l00137"></a>00137 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((strategy == realloc::extend || strategy == realloc::copy) &amp;&amp;
+<a name="l00138"></a>00138 old != 0)
+<a name="l00139"></a>00139 {
+<a name="l00140"></a>00140 <span class="keyword">const</span> digit_t *s = old-&gt;digits, *se = s + old-&gt;max_length;
+<a name="l00141"></a>00141 digit_t *t = r-&gt;digits, *te = t + r-&gt;max_length;
+<a name="l00142"></a>00142 <span class="keywordflow">while</span> (s != se &amp;&amp; t != te) *t++ = *s++;
+<a name="l00143"></a>00143 } <span class="keywordflow">else</span> {
+<a name="l00144"></a>00144 <span class="comment">// It&#39;s realloc::zero, old == 0. Zero it.</span>
+<a name="l00145"></a>00145 digit_t *t = r-&gt;digits, *te = t + r-&gt;max_length;
+<a name="l00146"></a>00146 <span class="keywordflow">while</span> (t != te) *t++ = 0;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 detach(old);
+<a name="l00150"></a>00150 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strategy == realloc::zero) {
+<a name="l00151"></a>00151 digit_t *t = r-&gt;digits, *te = t + r-&gt;max_length;
+<a name="l00152"></a>00152 <span class="keywordflow">while</span> (t != te) *t++ = 0;
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="keywordflow">return</span> r;
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00159"></a>00159 magnitude_t *allocator_t&lt;Bits, Secure, Alloc&gt;::duplicate(magnitude_t *source,
+<a name="l00160"></a>00160 <span class="keywordtype">size_t</span> newsize)
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162 attach(source);
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> realloc_and_uniquify(source, newsize, realloc::copy);
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00167"></a>00167 <span class="keywordtype">void</span> allocator_t&lt;Bits, Secure, Alloc&gt;::dealloc(magnitude_t *data) {
+<a name="l00168"></a>00168 <span class="keywordflow">if</span> (data == 0) <span class="keywordflow">return</span>;
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="keyword">const</span> <span class="keywordtype">size_t</span> len = (data-&gt;max_length + magnitude_datasize - minimum_digits);
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="comment">// Since the data was initialized with placement-new, we have to manually</span>
+<a name="l00173"></a>00173 <span class="comment">// call the destructor.</span>
+<a name="l00174"></a>00174 data-&gt; ~magnitude_t();
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="comment">// Finally, dispose of it.</span>
+<a name="l00177"></a>00177 digit_t *p = <span class="keyword">reinterpret_cast&lt;</span>digit_t*<span class="keyword">&gt;</span>(data);
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (Secure) memset(p, 0, len * <span class="keyword">sizeof</span>(digit_t));
+<a name="l00179"></a>00179 allocator.deallocate(p, len);
+<a name="l00180"></a>00180 }
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00183"></a>00183 <span class="keywordtype">void</span> allocator_t&lt;Bits, Secure, Alloc&gt;::attach(magnitude_t *p) {
+<a name="l00184"></a>00184 p-&gt;inc();
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class</span> Alloc&gt;
+<a name="l00188"></a>00188 <span class="keywordtype">void</span> allocator_t&lt;Bits, Secure, Alloc&gt;::detach(magnitude_t *p) {
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (p-&gt;dec()) dealloc(p);
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191
+<a name="l00193"></a>00193 } <span class="comment">// namespace detail</span>
+<a name="l00194"></a>00194 } <span class="comment">// namespace xint</span>
+<a name="l00195"></a>00195 } <span class="comment">// namespace boost</span>
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_POLICY_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/powers_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/powers_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/powers.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>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>detail/powers.cpp File Reference</h1>
-<p>Contains functions related to powers of a number.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains functions related to powers of a number. </p>
-<p>This file will be included by the library itself when needed. </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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/powers_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/powers_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,133 +0,0 @@
-<!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: detail/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>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>detail/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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>boost {
-<a name="l00027"></a>00027 <span class="keyword">namespace </span>xint {
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">size_t</span> count_one_bits(<span class="keyword">const</span> data_t n) {
-<a name="l00032"></a>00032 <span class="keywordtype">size_t</span> r = 0;
-<a name="l00033"></a>00033 <span class="keywordflow">for</span> (<span class="keyword">const</span> digit_t *p = n.digits(), *pe = p + n.length; p != pe; ++p) {
-<a name="l00034"></a>00034 digit_t nn(*p);
-<a name="l00035"></a>00035 <span class="keywordflow">while</span> (nn != 0) {
-<a name="l00036"></a>00036 <span class="keywordflow">if</span> (nn &amp; 0x01) ++r;
-<a name="l00037"></a>00037 nn &gt;&gt;= 1;
-<a name="l00038"></a>00038 }
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040 <span class="keywordflow">return</span> r;
-<a name="l00041"></a>00041 }
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a29a7d787472df22c7c554af6588e9102">pow</a>(data_t&amp; target, <span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t e) {
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (e.is_zero()) {
-<a name="l00045"></a>00045 <span class="comment">// Anything to the zeroth power is one.</span>
-<a name="l00046"></a>00046 target.set(1);
-<a name="l00047"></a>00047 <span class="keywordflow">return</span>;
-<a name="l00048"></a>00048 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e.negative) {
-<a name="l00049"></a>00049 <span class="comment">// Anything to a negative power is a fractional value, which an integer</span>
-<a name="l00050"></a>00050 <span class="comment">// library can&#39;t represent.</span>
-<a name="l00051"></a>00051 target.set(0);
-<a name="l00052"></a>00052 <span class="keywordflow">return</span>;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keywordtype">bool</span> neg = (!n.is_zero() &amp;&amp; n.negative &amp;&amp; e.is_odd());
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="keywordtype">size_t</span> lastBitCount = 0;
-<a name="l00058"></a>00058 digit_t ee(e[e.length - 1]);
-<a name="l00059"></a>00059 <span class="keywordflow">while</span> (ee != 0) { ee &gt;&gt;= 1; ++lastBitCount; }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 data_t p(n.abs());
-<a name="l00062"></a>00062 p.beginmod(data_t::bits_to_digits(<a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(p) * <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(e)));
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 target.beginmod(data_t::bits_to_digits(<a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(p) * count_one_bits(e)));
-<a name="l00065"></a>00065 target.set(1);
-<a name="l00066"></a>00066 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex &lt; e.length; ++eIndex) {
-<a name="l00067"></a>00067 digit_t eee(e[eIndex]);
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == e.length - 1 ? lastBitCount :
-<a name="l00070"></a>00070 bits_per_digit));
-<a name="l00071"></a>00071 <span class="keywordflow">while</span> (bitCount-- &gt; 0) {
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (eee &amp; 0x01) target *= p;
-<a name="l00073"></a>00073 <a class="code" href="namespaceboost_1_1xint.html#ac3f13e684b487865506362e4b382bc11">square</a>(p, p);
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 eee &gt;&gt;= 1;
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 target.negative = neg;
-<a name="l00079"></a>00079 target.endmod();
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 p.endmod();
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> pow2(data_t&amp; target, <span class="keywordtype">size_t</span> exponent) {
-<a name="l00085"></a>00085 target.beginmod();
-<a name="l00086"></a>00086 target.set(0);
-<a name="l00087"></a>00087 <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(target, exponent);
-<a name="l00088"></a>00088 target.endmod();
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> factorial(data_t&amp; target, <span class="keywordtype">size_t</span> n) {
-<a name="l00092"></a>00092 target.beginmod(data_t::bits_to_digits(n * <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(n / 2)) + 1);
-<a name="l00093"></a>00093 target.set(1);
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 data_t one(target.new_holder(), 1);
-<a name="l00096"></a>00096 data_t nn(target.new_holder(), n);
-<a name="l00097"></a>00097 <span class="keywordflow">while</span> (nn &gt; one) {
-<a name="l00098"></a>00098 target *= nn;
-<a name="l00099"></a>00099 --nn;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 target.endmod();
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00106"></a>00106 } <span class="comment">// namespace detail</span>
-<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 // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/powers_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/powers_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/powers_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/powers_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/powers.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/powers.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,32 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/powers.cpp File Reference</h1>
+<h1>detail/powers.hpp File Reference</h1>
 <p>Contains 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 &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</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 &nbsp;</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">&nbsp;</td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
+<br/></td></tr>
+</p>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains functions related to powers of a number. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="powers_8cpp_source.html">powers.cpp</a>.</p>
+<p>Definition in file <a class="el" href="powers_8hpp_source.html">powers.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/powers_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/powers_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/powers.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>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>detail/powers.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_POWERS_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_POWERS_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a499b28ba7acd8b1534bb968826e23c52" title="Calculate the value of ne">pow</a>(BOOST_XINT_RAWINT&amp; target, <span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span>
+<a name="l00030"></a>00030 BOOST_XINT_RAWINT e)
+<a name="l00031"></a>00031 {
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (e.is_zero()) {
+<a name="l00033"></a>00033 <span class="comment">// Anything to the zeroth power is one.</span>
+<a name="l00034"></a>00034 target.set(1);
+<a name="l00035"></a>00035 <span class="keywordflow">return</span>;
+<a name="l00036"></a>00036 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e.negative) {
+<a name="l00037"></a>00037 <span class="comment">// Anything to a negative power is a fractional value, which an integer</span>
+<a name="l00038"></a>00038 <span class="comment">// library can&#39;t represent.</span>
+<a name="l00039"></a>00039 target.set(0);
+<a name="l00040"></a>00040 <span class="keywordflow">return</span>;
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keywordtype">bool</span> neg = (!n.is_zero() &amp;&amp; n.negative &amp;&amp; e.is_odd());
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <span class="keywordtype">size_t</span> lastBitCount = 0;
+<a name="l00046"></a>00046 digit_t ee(e[e.length - 1]);
+<a name="l00047"></a>00047 <span class="keywordflow">while</span> (ee != 0) { ee &gt;&gt;= 1; ++lastBitCount; }
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 BOOST_XINT_RAWINT p(n.abs());
+<a name="l00050"></a>00050 target.set(1);
+<a name="l00051"></a>00051 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex = 0; eIndex &lt; e.length; ++eIndex) {
+<a name="l00052"></a>00052 digit_t eee(e[eIndex]);
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == e.length - 1 ? lastBitCount :
+<a name="l00055"></a>00055 bits_per_digit));
+<a name="l00056"></a>00056 <span class="keywordflow">while</span> (bitCount-- &gt; 0) {
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (eee &amp; 0x01) target *= p;
+<a name="l00058"></a>00058 p = <a class="code" href="namespaceboost_1_1xint.html#abe5e63185f27f2c795dc287e030ec424" title="Calculate the value of n2">square</a>(p);
+<a name="l00059"></a>00059 eee &gt;&gt;= 1;
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 target.negative = neg;
+<a name="l00063"></a>00063 target.trim();
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 BOOST_XINT_RAWINT_TPL <span class="keywordtype">void</span> pow2(BOOST_XINT_RAWINT&amp; target, <span class="keywordtype">size_t</span> exponent) {
+<a name="l00067"></a>00067 target.set(0);
+<a name="l00068"></a>00068 <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(target, exponent);
+<a name="l00069"></a>00069 target.trim();
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 BOOST_XINT_RAWINT_TPL <span class="keywordtype">void</span> factorial(BOOST_XINT_RAWINT&amp; target, <span class="keywordtype">size_t</span> n) {
+<a name="l00073"></a>00073 target.set(1);
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 BOOST_XINT_RAWINT one(1), nn(n);
+<a name="l00076"></a>00076 <span class="keywordflow">while</span> (nn &gt; one) {
+<a name="l00077"></a>00077 target *= nn;
+<a name="l00078"></a>00078 --nn;
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00083"></a>00083 } <span class="comment">// namespace detail</span>
+<a name="l00084"></a>00084 } <span class="comment">// namespace xint</span>
+<a name="l00085"></a>00085 } <span class="comment">// namespace boost</span>
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_POWERS_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/prime_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/prime_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/prime.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>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>detail/prime.cpp File Reference</h1>
-<p>Contains the function definitions for the prime number functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the function definitions for the prime number functions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="prime_8cpp_source.html">prime.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/prime_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/prime_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,172 +0,0 @@
-<!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: detail/prime.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>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>detail/prime.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"> #include &quot;../random.hpp&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00026"></a>00026 <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="l00032"></a>00032 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> std::vector&lt;int&gt; sieveOfEratosthenes(<span class="keywordtype">int</span> upTo) {
-<a name="l00033"></a>00033 std::vector&lt;int&gt; sieve;
-<a name="l00034"></a>00034 sieve.reserve(upTo);
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="comment">// Zero and one aren&#39;t prime, by definition.</span>
-<a name="l00037"></a>00037 sieve.push_back(0);
-<a name="l00038"></a>00038 sieve.push_back(0);
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> p = 2; p &lt; upTo; ++p) sieve.push_back(p);
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 std::vector&lt;int&gt; ret;
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="keywordtype">int</span> *p = &amp;sieve[0], *e = p + upTo;
-<a name="l00045"></a>00045 <span class="keywordflow">while</span> (p &lt; e) {
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (*p == 0) { ++p; <span class="keywordflow">continue</span>; }
-<a name="l00047"></a>00047 ret.push_back(*p);
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keywordtype">int</span> *p2 = p + (*p);
-<a name="l00050"></a>00050 <span class="keywordflow">while</span> (p2 &lt; e) { *p2 = 0; p2 += *p; }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 ++p;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keywordflow">return</span> ret;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="comment">// The Miller-Rabin Probabilistic Test of Primality</span>
-<a name="l00059"></a>00059 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">int</span> isProbablePrimeBaseB(<span class="keyword">const</span> data_t n, <span class="keyword">const</span> data_t b,
-<a name="l00060"></a>00060 <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="keyword">const</span> data_t one(n.new_holder(), 1), nMinus1(n - one);
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="comment">// Find r and a satisfying: n - 1 = 2^a * r, r odd</span>
-<a name="l00065"></a>00065 data_t r(nMinus1);
-<a name="l00066"></a>00066 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> a = 0;
-<a name="l00067"></a>00067 <span class="keywordflow">while</span> (r.is_even()) { r &gt;&gt;= 1; ++a; }
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="comment">// We check the congruence class of b^((2^i)r) % n for each i</span>
-<a name="l00070"></a>00070 <span class="comment">// from 0 to a - 1. If any one is correct, then n passes.</span>
-<a name="l00071"></a>00071 <span class="comment">// Otherwise, n fails.</span>
-<a name="l00072"></a>00072 data_t test(n.new_holder());
-<a name="l00073"></a>00073 <a class="code" href="namespaceboost_1_1xint.html#a3df211c7086c4652a7e12492d7d103f7">powmod</a>(test, b, r, n);
-<a name="l00074"></a>00074 <span class="keywordflow">if</span> (test == one || test == nMinus1) <span class="keywordflow">return</span> 1; <span class="comment">// Better than 3/4 chance it&#39;s prime</span>
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keywordflow">while</span> (a-- &gt; 0) {
-<a name="l00077"></a>00077 <a class="code" href="namespaceboost_1_1xint.html#a250379d4753bbd26002eac066114b756">sqrmod</a>(test, test, n);
-<a name="l00078"></a>00078 <span class="keywordflow">if</span> (test == nMinus1) <span class="keywordflow">return</span> 1;
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (callback &amp;&amp; !callback()) <span class="keywordflow">return</span> -1;
-<a name="l00082"></a>00082 <span class="keywordflow">return</span> 0;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(<span class="keyword">const</span> data_t n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback) {
-<a name="l00086"></a>00086 data_t tmp(n.new_holder(), 2);
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (n &lt; tmp) <span class="keywordflow">throw</span> exceptions::invalid_argument(<span class="stringliteral">&quot;xint::is_prime cannot &quot;</span>
-<a name="l00088"></a>00088 <span class="stringliteral">&quot;test numbers below 2&quot;</span>);
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="comment">// First we trial-divide it by the primes below 2000</span>
-<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keyword">const</span> std::vector&lt;int&gt; low_primes(sieveOfEratosthenes(2000));
-<a name="l00092"></a>00092 <span class="keyword">const</span> data_t zero(n.new_holder());
-<a name="l00093"></a>00093 std::vector&lt;int&gt;::const_iterator i = low_primes.begin(), ie =
-<a name="l00094"></a>00094 low_primes.end();
-<a name="l00095"></a>00095 <span class="keywordflow">for</span> (; i != ie; ++i) {
-<a name="l00096"></a>00096 tmp.set_unsigned(*i);
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> ((n % tmp) == zero)
-<a name="l00098"></a>00098 <span class="keywordflow">return</span> (n == tmp);
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="comment">// Ensure that we&#39;ve got a random generator.</span>
-<a name="l00102"></a>00102 <span class="keyword">static</span> std::auto_ptr&lt;default_random_generator&gt; gen(<span class="keyword">new</span>
-<a name="l00103"></a>00103 default_random_generator);
-<a name="l00104"></a>00104 detail::random_generator&lt;default_random_generator&gt; random(*gen.get());
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="comment">// Run the number through the Miller-Rabin Probabilistic Test of Primality</span>
-<a name="l00107"></a>00107 <span class="comment">// a few times to see if it&#39;s actually (probably) prime.</span>
-<a name="l00108"></a>00108 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> count = 0; count &lt; 5; ++count) {
-<a name="l00109"></a>00109 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k = random();
-<a name="l00110"></a>00110 tmp.set_unsigned(k);
-<a name="l00111"></a>00111 <span class="keywordtype">int</span> isP = isProbablePrimeBaseB(n, tmp, callback);
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> (isP &lt;= 0) <span class="keywordflow">return</span> isP;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> 1; <span class="comment">// Appears to be prime!</span>
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> random_prime(data_t&amp; target, base_random_generator&amp; gen,
-<a name="l00118"></a>00118 <span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (size_in_bits &lt; 2) <span class="keywordflow">throw</span> exceptions::invalid_argument(<span class="stringliteral">&quot;cannot create &quot;</span>
-<a name="l00121"></a>00121 <span class="stringliteral">&quot;prime numbers smaller than two bits&quot;</span>);
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="comment">// Call the callback for the first time</span>
-<a name="l00124"></a>00124 <span class="keywordflow">if</span> (callback &amp;&amp; !callback()) { target.set(0); <span class="keywordflow">return</span>; }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="comment">// If, by rare chance, the number we&#39;re testing gets larger than the number</span>
-<a name="l00127"></a>00127 <span class="comment">// of bits requested, we have to start over with a new random number of the</span>
-<a name="l00128"></a>00128 <span class="comment">// proper size.</span>
-<a name="l00129"></a>00129 data_t pe(target.new_holder());
-<a name="l00130"></a>00130 pow2(pe, size_in_bits + 1);
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keyword">const</span> data_t two(target.new_holder(), 2);
-<a name="l00133"></a>00133 <span class="keywordflow">while</span> (1) {
-<a name="l00134"></a>00134 random_by_size(target, gen, size_in_bits, <span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">false</span>);
-<a name="l00135"></a>00135 <span class="keywordflow">while</span> (target &lt; pe) {
-<a name="l00136"></a>00136 <span class="keywordtype">int</span> r = <a class="code" href="namespaceboost_1_1xint.html#a0f70e8b365600e14df023c83435a56ff">is_prime</a>(target, callback);
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (r &lt; 0) { target.set(0); <span class="keywordflow">return</span>; }
-<a name="l00138"></a>00138 <span class="keywordflow">if</span> (r == 1) <span class="keywordflow">return</span>;
-<a name="l00139"></a>00139 target += two;
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 } <span class="comment">// namespace detail</span>
-<a name="l00145"></a>00145 } <span class="comment">// namespace xint</span>
-<a name="l00146"></a>00146 } <span class="comment">// namespace boost</span>
-<a name="l00148"></a>00148 <span class="comment"></span>
-<a name="l00149"></a>00149 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/prime_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/prime_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/prime_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/prime_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/prime.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/prime.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/prime.cpp File Reference</h1>
+<h1>detail/prime.hpp File Reference</h1>
 <p>Contains the function definitions for the prime number 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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the function definitions for the prime number functions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="prime_8cpp_source.html">prime.cpp</a>.</p>
+<p>Definition in file <a class="el" href="prime_8hpp_source.html">prime.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/prime_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/prime_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,173 @@
+<!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: detail/prime.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>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>detail/prime.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_PRIME_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_PRIME_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">inline</span> std::vector&lt;int&gt; sieveOfEratosthenes(<span class="keywordtype">int</span> upTo) {
+<a name="l00029"></a>00029 std::vector&lt;int&gt; 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&#39;t prime, by definition.</span>
+<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 &lt; upTo; ++p) sieve.push_back(p);
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 std::vector&lt;int&gt; ret;
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="keywordtype">int</span> *p = &amp;sieve[0], *e = p + upTo;
+<a name="l00041"></a>00041 <span class="keywordflow">while</span> (p &lt; 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 &lt; 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 BOOST_XINT_RAWINT_TPL
+<a name="l00056"></a>00056 <span class="keywordtype">int</span> isProbablePrimeBaseB(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <span class="keyword">const</span> BOOST_XINT_RAWINT b,
+<a name="l00057"></a>00057 <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 <span class="keyword">const</span> BOOST_XINT_RAWINT one(1), nMinus1(n - one);
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="comment">// Find r and a satisfying: n - 1 = 2^a * r, r odd</span>
+<a name="l00062"></a>00062 BOOST_XINT_RAWINT r(nMinus1);
+<a name="l00063"></a>00063 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> a = 0;
+<a name="l00064"></a>00064 <span class="keywordflow">while</span> (r.is_even()) { r &gt;&gt;= 1; ++a; }
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="comment">// We check the congruence class of b^((2^i)r) % n for each i</span>
+<a name="l00067"></a>00067 <span class="comment">// from 0 to a - 1. If any one is correct, then n passes.</span>
+<a name="l00068"></a>00068 <span class="comment">// Otherwise, n fails.</span>
+<a name="l00069"></a>00069 BOOST_XINT_RAWINT test = <a class="code" href="namespaceboost_1_1xint.html#a1108e56d7d500a384bd0bb0a6849bfa0" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(b, r, n);
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (test == one || test == nMinus1)
+<a name="l00071"></a>00071 <span class="keywordflow">return</span> 1; <span class="comment">// Better than 3/4 chance it&#39;s prime</span>
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keywordflow">while</span> (a-- &gt; 0) {
+<a name="l00074"></a>00074 test = <a class="code" href="namespaceboost_1_1xint.html#a979ddb09a4d1a5dbfcb0707c19695877" title="Get the modular product of squaring an integer.">sqrmod</a>(test, n);
+<a name="l00075"></a>00075 <span class="keywordflow">if</span> (test == nMinus1) <span class="keywordflow">return</span> 1;
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (callback &amp;&amp; !callback()) <span class="keywordflow">return</span> -1;
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> 0;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 BOOST_XINT_RAWINT_TPL
+<a name="l00083"></a>00083 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> BOOST_XINT_RAWINT n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback) {
+<a name="l00084"></a>00084 BOOST_XINT_RAWINT tmp(2);
+<a name="l00085"></a>00085 <span class="keywordflow">if</span> (n &lt; tmp) <span class="keywordflow">throw</span> exceptions::invalid_argument(<span class="stringliteral">&quot;xint::is_prime cannot &quot;</span>
+<a name="l00086"></a>00086 <span class="stringliteral">&quot;test numbers below 2&quot;</span>);
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="comment">// First we trial-divide it by the primes below 2000</span>
+<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keyword">const</span> std::vector&lt;int&gt; low_primes(sieveOfEratosthenes(2000));
+<a name="l00090"></a>00090 <span class="keyword">const</span> BOOST_XINT_RAWINT zero;
+<a name="l00091"></a>00091 std::vector&lt;int&gt;::const_iterator i = low_primes.begin(), ie =
+<a name="l00092"></a>00092 low_primes.end();
+<a name="l00093"></a>00093 <span class="keywordflow">for</span> (; i != ie; ++i) {
+<a name="l00094"></a>00094 tmp.set_unsigned(*i);
+<a name="l00095"></a>00095 <span class="keywordflow">if</span> ((n % tmp) == zero)
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> (n == tmp);
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="comment">// Ensure that we&#39;ve got a random generator.</span>
+<a name="l00100"></a>00100 <span class="keyword">static</span> std::auto_ptr&lt;default_random_generator&gt; gen(<span class="keyword">new</span>
+<a name="l00101"></a>00101 default_random_generator);
+<a name="l00102"></a>00102 detail::random_generator&lt;default_random_generator&gt; random(*gen.get());
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="comment">// Run the number through the Miller-Rabin Probabilistic Test of Primality</span>
+<a name="l00105"></a>00105 <span class="comment">// a few times to see if it&#39;s actually (probably) prime.</span>
+<a name="l00106"></a>00106 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> count = 0; count &lt; 5; ++count) {
+<a name="l00107"></a>00107 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k = random();
+<a name="l00108"></a>00108 tmp.set_unsigned(k);
+<a name="l00109"></a>00109 <span class="keywordtype">int</span> isP = isProbablePrimeBaseB(n, tmp, callback);
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (isP &lt;= 0) <span class="keywordflow">return</span> isP;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> 1; <span class="comment">// Appears to be prime!</span>
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 BOOST_XINT_RAWINT_TPL
+<a name="l00116"></a>00116 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GenType&gt;
+<a name="l00117"></a>00117 BOOST_XINT_RAWINT BOOST_XINT_RAWINT::random_prime(GenType&amp; gen, <span class="keywordtype">size_t</span>
+<a name="l00118"></a>00118 size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (size_in_bits &lt; 2) <span class="keywordflow">throw</span> exceptions::invalid_argument(<span class="stringliteral">&quot;cannot create &quot;</span>
+<a name="l00121"></a>00121 <span class="stringliteral">&quot;prime numbers smaller than two bits&quot;</span>);
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="comment">// Call the callback for the first time</span>
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> (callback &amp;&amp; !callback()) <span class="keywordflow">return</span> 0;
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="comment">// If, by rare chance, the number we&#39;re testing gets larger than the number</span>
+<a name="l00127"></a>00127 <span class="comment">// of bits requested, we have to start over with a new random number of the</span>
+<a name="l00128"></a>00128 <span class="comment">// proper size.</span>
+<a name="l00129"></a>00129 BOOST_XINT_RAWINT pe;
+<a name="l00130"></a>00130 pow2(pe, size_in_bits + 1);
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="keyword">const</span> BOOST_XINT_RAWINT two(2);
+<a name="l00133"></a>00133 <span class="keywordflow">while</span> (1) {
+<a name="l00134"></a>00134 BOOST_XINT_RAWINT target = random_by_size(gen, size_in_bits, <span class="keyword">true</span>, <span class="keyword">true</span>,
+<a name="l00135"></a>00135 <span class="keyword">false</span>);
+<a name="l00136"></a>00136 <span class="keywordflow">while</span> (target &lt; pe) {
+<a name="l00137"></a>00137 <span class="keywordtype">int</span> r = <a class="code" href="namespaceboost_1_1xint.html#a089d98ffc4599122209d1a3c1c7c39d4" title="Tests an integer for primality.">is_prime</a>(target, callback);
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (r &lt; 0) <span class="keywordflow">return</span> 0;
+<a name="l00139"></a>00139 <span class="keywordflow">if</span> (r == 1) <span class="keywordflow">return</span> target;
+<a name="l00140"></a>00140 target += two;
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 } <span class="comment">// namespace detail</span>
+<a name="l00146"></a>00146 } <span class="comment">// namespace xint</span>
+<a name="l00147"></a>00147 } <span class="comment">// namespace boost</span>
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_PRIME_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/primes.html
==============================================================================
--- sandbox/xint/libs/xint/doc/primes.html (original)
+++ sandbox/xint/libs/xint/doc/primes.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,7 +27,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 &lt;iostream&gt;</span>
-<span class="preprocessor">#include &lt;<a class="code" href="xint_8hpp.html" title="This is the include-everything header.">boost/xint/xint.hpp</a>&gt;</span>
+<span class="preprocessor">#include &lt;<a class="code" href="integer_8hpp.html" title="Declares the arbitrary-length integer type.">boost/xint/integer.hpp</a>&gt;</span>
 
 <span class="keywordtype">bool</span> callback() {
     std::cout &lt;&lt; <span class="charliteral">&#39;.&#39;</span> &lt;&lt; std::flush;
@@ -40,7 +40,7 @@
     <span class="keyword">using namespace </span>boost;
     <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="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&#39;s strong random number generator, via the XInt-</span>
@@ -65,7 +65,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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/primes_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/primes_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/primes_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__core.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__core.html (original)
+++ sandbox/xint/libs/xint/doc/r__core.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -31,7 +31,7 @@
 <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>nothrow_integer</code> can hold).</p>
 <p>This design ensures that the Not-a-Number value only needs to be checked for in the <code>nothrow_integer</code> code, 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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__core_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__core_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__core_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__cow.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__cow.html (original)
+++ sandbox/xint/libs/xint/doc/r__cow.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,7 +27,7 @@
 <p>It <em>can</em> cause problems when you try to use the library from multiple threads at the same time, which is why it's only used in the (single-threaded) internal functions. By default, when you get a number back from the library, it has its own unique storage, so it can be safely used across multiple threads; if you don't need to use integer objects outside of the thread that they're created in, you can disable that by setting the <code>Threadsafe</code> template parameter to <code>false</code>.</p>
 <p>Note that even with the <code>Threadsafe</code> option set to <code>true</code>, 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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__cow_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__cow_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__cow_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__exception__blocking.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__exception__blocking.html (original)
+++ sandbox/xint/libs/xint/doc/r__exception__blocking.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -27,7 +27,7 @@
 <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 <code>std::string::find</code>, 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 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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__exception__blocking_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__exception__blocking_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__exception__blocking_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__insecure__default.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__insecure__default.html (original)
+++ sandbox/xint/libs/xint/doc/r__insecure__default.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -25,7 +25,7 @@
 
 <h1><a class="anchor" id="r_insecure_default">But why have an insecure random number generator as the default? 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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__insecure__default_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__insecure__default_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__insecure__default_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__interface.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__interface.html (original)
+++ sandbox/xint/libs/xint/doc/r__interface.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__interface_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__interface_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__interface_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__interface__design__only.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__interface__design__only.html (original)
+++ sandbox/xint/libs/xint/doc/r__interface__design__only.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -30,7 +30,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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__interface__design__only_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__interface__design__only_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__interface__design__only_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__nan.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__nan.html (original)
+++ sandbox/xint/libs/xint/doc/r__nan.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -25,7 +25,7 @@
 
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__nan_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__nan_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__nan_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__negzero.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__negzero.html (original)
+++ sandbox/xint/libs/xint/doc/r__negzero.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -25,7 +25,7 @@
 
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__negzero_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__negzero_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__negzero_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__no__floats.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__no__floats.html (original)
+++ sandbox/xint/libs/xint/doc/r__no__floats.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -26,7 +26,7 @@
 <h1><a class="anchor" id="r_no_floats">Why didn't you provide conversions to and from float/double types? </a></h1><p>Although it might not be obvious, there is occasionally a need for such conversions. Unfortunately, unlike integers, there is no universal representation for floating-point values. Even IEEE 754, the most widely used floating-point specification, isn't completely nailed down -- it doesn't specify the endianness of the fields, making it difficult to provide code that would work on all systems. What's worse, the C/C++ <code>float</code> and <code>double</code> types don't have to be encoded in an IEEE 754 format at all.</p>
 <p>I'd like to provide such conversions, and I'll keep looking for ways to do so. It may turn out to be possible to do them through a string format, for instance. But for now, the library only provides conversions to and from integral values. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__nofloats_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__nofloats_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__nofloats_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/xint/doc/dox/r_nofloats.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__random.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__random.html (original)
+++ sandbox/xint/libs/xint/doc/r__random.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -25,7 +25,7 @@
 
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__random_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__random_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__random_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__shared__ptr.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__shared__ptr.html (original)
+++ sandbox/xint/libs/xint/doc/r__shared__ptr.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -23,9 +23,9 @@
 <div class="contents">
 
 
-<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>
+<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> classes, 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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__shared__ptr_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__shared__ptr_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__shared__ptr_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__too__big.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__too__big.html (original)
+++ sandbox/xint/libs/xint/doc/r__too__big.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -25,10 +25,10 @@
 
 <h1><a class="anchor" id="r_too_big"><code>exceptions::too_big</code> sounds like <code>std::range_error</code> to me. </a></h1><p>With good reason -- it's essentially the same thing. But in Josuttis' "The C++
 Standard Library", the wording on <code>std::range_error</code> is that it's "used to
-report a range error in internal computations." That didn't quite sound like what I was trying to convey with that exception, which is that the library type that the user is trying to convert won't fit into the type that he's trying to convert it to. It does inherit from std::range_error though, so you can use either for most things, and get more specific if desired.</p>
+report a range error in internal computations." That didn't quite sound like what I was trying to convey with that exception, which is that the <code>integer_t</code> that the user is trying to convert won't fit into the type that he's trying to convert it to. It does inherit from std::range_error though, so you can use either for most things, and get more specific if desired.</p>
 <p>In addition, it seemed discordant to me to have a library that <em>almost</em> always throws exceptions from a particular namespace. It was almost no additional work to make it <em>always</em> throw from a specific namespace, and it fit my sense of rightness. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__toobig_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/r__toobig_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__toobig_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/xint/doc/dox/r_toobig.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__whynotx.html (from r62397, /sandbox/xint/libs/xint/doc/r__interface.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/r__interface.html (original)
+++ sandbox/xint/libs/xint/doc/r__whynotx.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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 did you do \e X in the interface?</title>
+<title>The Extended Integer (XInt) Library: I&#39;ve got a great idea! Why don&#39;t you do \e X?</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -23,12 +23,14 @@
 <div class="contents">
 
 
-<h1><a class="anchor" id="r_interface">Why did you do <em>X</em> in the interface? </a></h1><p>The interface is based on a paper by M.J. Kronenburg presented to the C++ Standards Committee in early 2004, n1692, and the "standardese" for it in n1744 by Michiel Salters / Nederlands Normalisatie Instituut.</p>
-<dl class="see"><dt><b>See also:</b></dt><dd>n1692: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1692.pdf </dd>
-<dd>
-n1744: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1744.pdf </dd></dl>
+<h1><a class="anchor" id="r_whynotx">I've got a great idea! Why don't you do <em>X</em>? </a></h1><p>This kind of suggestion, where <em>X</em> is something that would require days or weeks of work to finish and test properly, has come up several times already. Often enough that I've gotten tired of finding ways to diplomatically say no. So I'll lay out the reasons here, once and for all:</p>
+<ul>
+<li>The alternative to "release early, release often" is to release late and infrequently, or not at all.</li>
+<li>I need feedback from people who are actually <em>using</em> the library in order to improve it. Repeatedly delaying it to add another neat feature makes this impossible.</li>
+</ul>
+<p>By all means, make suggestions. But don't be offended if I respond by referring you to this page. It only means that I feel that your suggestion isn't appropriate for this version, because it would delay it further, not that it isn't appropriate at all. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/r__whynotx_8dox.html (from r62397, /sandbox/xint/libs/xint/doc/r__negzero_8dox.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/r__negzero_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/r__whynotx_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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/libs/xint/doc/dox/r_negzero.dox File Reference</title>
+<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/libs/xint/doc/dox/r_whynotx.dox File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,10 +25,10 @@
   </div>
 </div>
 <div class="contents">
-<h1>/home/chad/projects/xint/libs/xint/doc/dox/r_negzero.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<h1>/home/chad/projects/xint/libs/xint/doc/dox/r_whynotx.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/random.html
==============================================================================
--- sandbox/xint/libs/xint/doc/random.html (original)
+++ sandbox/xint/libs/xint/doc/random.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -26,10 +26,10 @@
 <h1><a class="anchor" id="random">The XInt Random Number System </a></h1><p>The library includes two convenience classes, meant to be used with the <code>xint::random_prime</code> function.</p>
 <p><code>default_random_generator</code> is a thin shell around one of the faster pseudo-random generators provided by Boost.Random. It does <em>not</em> produce secure random numbers, but is often all that is needed.</p>
 <p><code>strong_random_generator</code> provides an interface to the operating system's secure random number generator, 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 an operating-system-supplied generator.</p>
-<p>If you have a different preferred generator, perhaps one that uses dedicated hardware to produce randomness, you can plug that into the library's <code>random_by_size</code> and <code>random_prime</code> functions instead.</p>
+<p>If you have a different preferred generator, perhaps one that interfaces with dedicated hardware to produce randomness, you can plug that into the library's <code>random_by_size</code> and <code>random_prime</code> functions instead.</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 these generators to produce secure prime numbers. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>

Deleted: sandbox/xint/libs/xint/doc/random_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/random_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/random.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>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>detail/random.cpp File Reference</h1>
-<p>Contains the function definitions for the random number functions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the function definitions for the random number functions. </p>
-<p>This file will be included by the library itself when needed. </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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/random_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/random_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,220 +0,0 @@
-<!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: detail/random.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>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>detail/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>
-<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">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor"> #include &quot;<a class="code" href="bitqueue_8hpp.html" title="Contains the bitqueue_t class, used internally.">bitqueue.hpp</a>&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor"> #include &quot;../random.hpp&quot;</span>
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="preprocessor"> #ifdef _WIN32</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor"> #define STRICT</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"> #define WIN32_LEAN_AND_MEAN</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor"> #define NOMINMAX</span>
-<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;windows.h&gt;</span>
-<a name="l00032"></a>00032 <span class="preprocessor"> #endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor"> #include &lt;sstream&gt;</span>
-<a name="l00035"></a>00035 <span class="preprocessor"> #include &lt;fstream&gt;</span>
-<a name="l00036"></a>00036 <span class="preprocessor"> #include &lt;ctime&gt;</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00038"></a>00038 <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 <span class="keyword">namespace </span>detail {
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> random_by_size(data_t&amp; target, base_random_generator&amp;
-<a name="l00045"></a>00045 gen, <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> can_be_negative)
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (bits == 0) { target.set(0); <span class="keywordflow">return</span>; }
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="comment">// Grab a bunch of bits</span>
-<a name="l00050"></a>00050 bitqueue_t bitqueue;
-<a name="l00051"></a>00051 <span class="keywordflow">while</span> (bitqueue.size() &lt; bits) bitqueue.push(gen(),
-<a name="l00052"></a>00052 std::numeric_limits&lt;base_random_generator::result_type&gt;::digits);
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="comment">// Stick them into an integer</span>
-<a name="l00055"></a>00055 <span class="keywordtype">size_t</span> d = data_t::bits_to_digits(bits);
-<a name="l00056"></a>00056 target.beginmod(d);
-<a name="l00057"></a>00057 digit_t *tdigits = target.digits();
-<a name="l00058"></a>00058 target.length = (std::min)(d + 1, target.max_length());
-<a name="l00059"></a>00059 digit_t *pp = tdigits, *ppe = pp + target.length;
-<a name="l00060"></a>00060 <span class="keywordflow">while</span> (pp &lt; ppe) *pp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(bitqueue.pop(bits_per_digit));
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="comment">// Trim it to the proper length</span>
-<a name="l00063"></a>00063 <span class="keywordtype">size_t</span> index = (bits / bits_per_digit);
-<a name="l00064"></a>00064 digit_t mask = (digit_t(1) &lt;&lt; (bits % bits_per_digit)) - 1;
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> (mask == 0) { mask = digit_mask; --index; }
-<a name="l00066"></a>00066 target.length = index + 1;
-<a name="l00067"></a>00067 tdigits[index] &amp;= mask;
-<a name="l00068"></a>00068 <span class="keywordflow">for</span> (digit_t *i = tdigits + index + 1, *ie = tdigits + target.length; i &lt;
-<a name="l00069"></a>00069 ie; ++i) *i = 0;
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (high_bit_on) <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(target, bits - 1);
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (low_bit_on) <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(target, 0);
-<a name="l00073"></a>00073 target.negative = (can_be_negative &amp;&amp; (gen() &amp; 0x01));
-<a name="l00074"></a>00074 target.endmod();
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 } <span class="comment">// namespace detail</span>
-<a name="l00078"></a>00078 } <span class="comment">// namespace xint</span>
-<a name="l00079"></a>00079 } <span class="comment">// namespace boost</span>
-<a name="l00081"></a>00081 <span class="comment"></span>
-<a name="l00083"></a>00083 <span class="comment">// The secure random generator</span>
-<a name="l00084"></a>00084
-<a name="l00086"></a>00086 <span class="keyword">namespace </span>boost {
-<a name="l00087"></a>00087 <span class="keyword">namespace </span>xint {
-<a name="l00088"></a>00088 <span class="keyword">namespace </span>detail {
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l00091"></a>00091 <span class="preprocessor"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00092"></a>00092 <span class="keyword">struct </span>strong_random_generator_t&lt;T&gt;::impl_t {
-<a name="l00093"></a>00093 <span class="keyword">typedef</span> BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
-<a name="l00094"></a>00094 <span class="keyword">typedef</span> DWORD result_type;
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 impl_t(): dll(0), fn(0) {
-<a name="l00097"></a>00097 <span class="comment">// This should work under WinXP, Vista, and Win7. No guarantees</span>
-<a name="l00098"></a>00098 <span class="comment">// about future compatibility, but I doubt that Microsoft will get</span>
-<a name="l00099"></a>00099 <span class="comment">// rid of it (it&#39;s too useful), and I doubt that they&#39;ll change it</span>
-<a name="l00100"></a>00100 <span class="comment">// now that it&#39;s well-known (it would break too many programs). We</span>
-<a name="l00101"></a>00101 <span class="comment">// could also use the rand_s function in more recent versions of</span>
-<a name="l00102"></a>00102 <span class="comment">// Visual C++, but that causes compatibility problems with older</span>
-<a name="l00103"></a>00103 <span class="comment">// versions of Windows.</span>
-<a name="l00104"></a>00104 dll=LoadLibraryA(<span class="stringliteral">&quot;Advapi32.dll&quot;</span>);
-<a name="l00105"></a>00105 <span class="keywordflow">if</span> (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll,
-<a name="l00106"></a>00106 <span class="stringliteral">&quot;SystemFunction036&quot;</span>));
-<a name="l00107"></a>00107 <span class="keywordflow">if</span> (fn == 0) {
-<a name="l00108"></a>00108 destroy();
-<a name="l00109"></a>00109 <span class="keywordflow">throw</span> exceptions::no_strong_random();
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 ~impl_t() { destroy(); }
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 result_type operator()() {
-<a name="l00116"></a>00116 result_type r=0;
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (!fn(&amp;r, <span class="keyword">sizeof</span>(result_type)))
-<a name="l00118"></a>00118 <span class="keywordflow">throw</span> exceptions::no_strong_random(<span class="stringliteral">&quot;RtlGenRandom failed&quot;</span>);
-<a name="l00119"></a>00119 <span class="keywordflow">return</span> r;
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keywordtype">void</span> destroy() { <span class="keywordflow">if</span> (dll) FreeLibrary(dll); }
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 HMODULE dll;
-<a name="l00125"></a>00125 RtlGenRandomFn fn;
-<a name="l00126"></a>00126 };
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00129"></a>00129 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">double</span> strong_random_generator_t&lt;T&gt;::entropy()<span class="keyword"> const</span>
-<a name="l00130"></a>00130 <span class="keyword"> </span>{ <span class="keywordflow">return</span> 32; }
-<a name="l00131"></a>00131 <span class="preprocessor">#else</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00133"></a>00133 <span class="keyword">struct </span>strong_random_generator_t&lt;T&gt;::impl_t {
-<a name="l00134"></a>00134 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> result_type;
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 impl_t(): rng(<span class="stringliteral">&quot;/dev/urandom&quot;</span>, std::ios::binary) {
-<a name="l00137"></a>00137 <span class="comment">// This should be supported under most non-Windows systems. Note</span>
-<a name="l00138"></a>00138 <span class="comment">// that we&#39;re using /dev/urandom, not /dev/random -- /dev/random is</span>
-<a name="l00139"></a>00139 <span class="comment">// more secure, but it can be VERY slow.</span>
-<a name="l00140"></a>00140 <span class="keywordflow">if</span> (!rng) <span class="keywordflow">throw</span> exceptions::no_strong_random();
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 result_type operator()() {
-<a name="l00144"></a>00144 <span class="keywordtype">int</span> r=rng.get();
-<a name="l00145"></a>00145 <span class="keywordflow">if</span> (r==EOF) <span class="keywordflow">throw</span> exceptions::no_strong_random(<span class="stringliteral">&quot;/dev/urandom &quot;</span>
-<a name="l00146"></a>00146 <span class="stringliteral">&quot;returned EOF&quot;</span>);
-<a name="l00147"></a>00147 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>result_type<span class="keyword">&gt;</span>(r);
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 std::ifstream rng;
-<a name="l00151"></a>00151 };
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00154"></a>00154 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">double</span> strong_random_generator_t&lt;T&gt;::entropy()<span class="keyword"> const</span>
-<a name="l00155"></a>00155 <span class="keyword"> </span>{ <span class="keywordflow">return</span> 8; }
-<a name="l00156"></a>00156 <span class="preprocessor">#endif</span>
-<a name="l00157"></a>00157 <span class="preprocessor"></span>
-<a name="l00158"></a>00158 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00159"></a>00159 <span class="keyword">const</span> <span class="keywordtype">bool</span> strong_random_generator_t&lt;T&gt;::has_fixed_range = <span class="keyword">true</span>;
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00162"></a>00162 <span class="keyword">const</span> <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
-<a name="l00163"></a>00163 strong_random_generator_t&lt;T&gt;::min_value =
-<a name="l00164"></a>00164 (std::numeric_limits&lt;<span class="keyword">typename</span>
-<a name="l00165"></a>00165 strong_random_generator_t&lt;T&gt;::impl_t::result_type&gt;::min)();
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00168"></a>00168 <span class="keyword">const</span> <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
-<a name="l00169"></a>00169 strong_random_generator_t&lt;T&gt;::max_value =
-<a name="l00170"></a>00170 (std::numeric_limits&lt;<span class="keyword">typename</span>
-<a name="l00171"></a>00171 strong_random_generator_t&lt;T&gt;::impl_t::result_type&gt;::max)();
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00174"></a>00174 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> strong_random_generator_t&lt;T&gt;::strong_random_generator_t():
-<a name="l00175"></a>00175 impl(new impl_t) { }
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00178"></a>00178 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> strong_random_generator_t&lt;T&gt;::~strong_random_generator_t() {
-<a name="l00179"></a>00179 <span class="keyword">delete</span> impl; }
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00182"></a>00182 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
-<a name="l00183"></a>00183 strong_random_generator_t&lt;T&gt;::operator()() { <span class="keywordflow">return</span> (*impl)(); }
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00186"></a>00186 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
-<a name="l00187"></a>00187 strong_random_generator_t&lt;T&gt;::min BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const</span>
-<a name="l00188"></a>00188 <span class="keyword"> </span>{ <span class="keywordflow">return</span> min_value; }
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
-<a name="l00191"></a>00191 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
-<a name="l00192"></a>00192 strong_random_generator_t&lt;T&gt;::max BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const</span>
-<a name="l00193"></a>00193 <span class="keyword"> </span>{ <span class="keywordflow">return</span> max_value; }
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 } <span class="comment">// namespace detail</span>
-<a name="l00196"></a>00196 } <span class="comment">// namespace xint</span>
-<a name="l00197"></a>00197 } <span class="comment">// namespace boost</span>
-<a name="l00199"></a>00199 <span class="comment"></span>
-<a name="l00200"></a>00200 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/random_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/random_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/random_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/random_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/random_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/random_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -56,7 +56,7 @@
 
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/random_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/random_8hpp_source.html (original)
+++ sandbox/xint/libs/xint/doc/random_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -39,77 +39,71 @@
 <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 &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">detail/internals.hpp</a>&quot;</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;ctime&gt;</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;boost/random/uniform_int.hpp&gt;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;boost/random/variate_generator.hpp&gt;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;boost/random/mersenne_twister.hpp&gt;</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">namespace </span>detail {
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="comment">// This is a template only so that the static member variables don&#39;t cause</span>
-<a name="l00034"></a>00034 <span class="comment">// problems in header-only mode.</span>
-<a name="l00035"></a>00035 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;
-<a name="l00036"></a>00036 <span class="keyword">class </span>strong_random_generator_t {
-<a name="l00037"></a>00037 <span class="keyword">public</span>:
-<a name="l00038"></a>00038 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result_type;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 strong_random_generator_t();
-<a name="l00041"></a>00041 ~strong_random_generator_t();
-<a name="l00042"></a>00042 result_type operator()();
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_fixed_range;
-<a name="l00045"></a>00045 <span class="keyword">static</span> <span class="keyword">const</span> result_type min_value;
-<a name="l00046"></a>00046 <span class="keyword">static</span> <span class="keyword">const</span> result_type max_value;
-<a name="l00047"></a>00047 result_type min() <span class="keyword">const</span>;
-<a name="l00048"></a>00048 result_type max() <span class="keyword">const</span>;
-<a name="l00049"></a>00049 <span class="keywordtype">double</span> entropy() <span class="keyword">const</span>;
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 <span class="keyword">private</span>:
-<a name="l00052"></a>00052 <span class="keyword">struct </span>impl_t;
-<a name="l00053"></a>00053 impl_t *impl;
-<a name="l00054"></a>00054 };
-<a name="l00055"></a>00055
-<a name="l00057"></a>00057 <span class="keyword">struct </span>base_random_generator {
-<a name="l00058"></a>00058 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result_type;
-<a name="l00059"></a>00059 <span class="keyword">virtual</span> result_type operator()()=0;
-<a name="l00060"></a>00060 <span class="keyword">virtual</span> ~base_random_generator() { }
-<a name="l00061"></a>00061 };
-<a name="l00062"></a>00062
-<a name="l00064"></a>00064 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;
-<a name="l00065"></a>00065 <span class="keyword">struct </span>random_generator: <span class="keyword">public</span> base_random_generator {
-<a name="l00066"></a>00066 <span class="keyword">typedef</span> boost::uniform_int&lt;result_type&gt; dist_t;
-<a name="l00067"></a>00067 <span class="keyword">typedef</span> boost::variate_generator&lt;T&amp;, dist_t&gt; gen_t;
-<a name="l00068"></a>00068 random_generator(T&amp; g): gen(g,
-<a name="l00069"></a>00069 dist_t((std::numeric_limits&lt;result_type&gt;::min)(),
-<a name="l00070"></a>00070 (std::numeric_limits&lt;result_type&gt;::max)())) { }
-<a name="l00071"></a>00071 result_type operator()() { <span class="keywordflow">return</span> gen(); }
-<a name="l00072"></a>00072 gen_t gen;
-<a name="l00073"></a>00073 };
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <span class="keywordtype">void</span> random_by_size(data_t&amp; target, base_random_generator&amp; gen, <span class="keywordtype">size_t</span> bits,
-<a name="l00076"></a>00076 <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span> can_be_negative);
-<a name="l00077"></a>00077 <span class="keywordtype">void</span> random_prime(data_t&amp; target, base_random_generator&amp; gen, <span class="keywordtype">size_t</span>
-<a name="l00078"></a>00078 size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>);
-<a name="l00079"></a>00079
-<a name="l00081"></a>00081 } <span class="comment">// namespace detail</span>
-<a name="l00082"></a>00082
-<a name="l00092"></a><a class="code" href="classboost_1_1xint_1_1default__random__generator.html">00092</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1default__random__generator.html" title="A convenience class for general-purpose (insecure) random numbers.">default_random_generator</a>: <span class="keyword">public</span> boost::mt19937 {
-<a name="l00093"></a>00093 <span class="keyword">public</span>:
-<a name="l00094"></a><a class="code" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">00094</a> <a class="code" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">default_random_generator</a>(): mt19937(boost::uint32_t(time(0)+clock())) { }
-<a name="l00095"></a>00095 };
-<a name="l00096"></a>00096
-<a name="l00103"></a><a class="code" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">00103</a> <span class="keyword">typedef</span> detail::strong_random_generator_t&lt;&gt; <a class="code" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f" title="A convenience class for cryptographically-secure random numbers.">strong_random_generator</a>;
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 } <span class="comment">// namespace xint</span>
-<a name="l00106"></a>00106 } <span class="comment">// namespace boost</span>
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_RANDOM_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;ctime&gt;</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;boost/random/uniform_int.hpp&gt;</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;boost/random/variate_generator.hpp&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;boost/random/mersenne_twister.hpp&gt;</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>boost {
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>xint {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>detail {
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="comment">// This is a template only so that the static member variables don&#39;t cause</span>
+<a name="l00033"></a>00033 <span class="comment">// problems in header-only mode.</span>
+<a name="l00034"></a>00034 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;
+<a name="l00035"></a>00035 <span class="keyword">class </span>strong_random_generator_t {
+<a name="l00036"></a>00036 <span class="keyword">public</span>:
+<a name="l00037"></a>00037 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result_type;
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 strong_random_generator_t();
+<a name="l00040"></a>00040 ~strong_random_generator_t();
+<a name="l00041"></a>00041 result_type operator()();
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> has_fixed_range;
+<a name="l00044"></a>00044 <span class="keyword">static</span> <span class="keyword">const</span> result_type min_value;
+<a name="l00045"></a>00045 <span class="keyword">static</span> <span class="keyword">const</span> result_type max_value;
+<a name="l00046"></a>00046 result_type min() <span class="keyword">const</span>;
+<a name="l00047"></a>00047 result_type max() <span class="keyword">const</span>;
+<a name="l00048"></a>00048 <span class="keywordtype">double</span> entropy() <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="l00056"></a>00056 <span class="keyword">struct </span>base_random_generator {
+<a name="l00057"></a>00057 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result_type;
+<a name="l00058"></a>00058 <span class="keyword">virtual</span> result_type operator()()=0;
+<a name="l00059"></a>00059 <span class="keyword">virtual</span> ~base_random_generator() { }
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061
+<a name="l00063"></a>00063 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;
+<a name="l00064"></a>00064 <span class="keyword">struct </span>random_generator: <span class="keyword">public</span> base_random_generator {
+<a name="l00065"></a>00065 <span class="keyword">typedef</span> boost::uniform_int&lt;result_type&gt; dist_t;
+<a name="l00066"></a>00066 <span class="keyword">typedef</span> boost::variate_generator&lt;T&amp;, dist_t&gt; gen_t;
+<a name="l00067"></a>00067 random_generator(T&amp; g): gen(g,
+<a name="l00068"></a>00068 dist_t((std::numeric_limits&lt;result_type&gt;::min)(),
+<a name="l00069"></a>00069 (std::numeric_limits&lt;result_type&gt;::max)())) { }
+<a name="l00070"></a>00070 result_type operator()() { <span class="keywordflow">return</span> gen(); }
+<a name="l00071"></a>00071 gen_t gen;
+<a name="l00072"></a>00072 };
+<a name="l00073"></a>00073
+<a name="l00075"></a>00075 } <span class="comment">// namespace detail</span>
+<a name="l00076"></a>00076
+<a name="l00086"></a><a class="code" href="classboost_1_1xint_1_1default__random__generator.html">00086</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1default__random__generator.html" title="A convenience class for general-purpose (insecure) random numbers.">default_random_generator</a>: <span class="keyword">public</span> boost::mt19937 {
+<a name="l00087"></a>00087 <span class="keyword">public</span>:
+<a name="l00088"></a><a class="code" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">00088</a> <a class="code" href="classboost_1_1xint_1_1default__random__generator.html#a4289636c47258469b78703ae791812f6">default_random_generator</a>(): mt19937(boost::uint32_t(time(0)+clock())) { }
+<a name="l00089"></a>00089 };
+<a name="l00090"></a>00090
+<a name="l00097"></a><a class="code" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">00097</a> <span class="keyword">typedef</span> detail::strong_random_generator_t&lt;&gt; <a class="code" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f" title="A convenience class for cryptographically-secure random numbers.">strong_random_generator</a>;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 } <span class="comment">// namespace xint</span>
+<a name="l00100"></a>00100 } <span class="comment">// namespace boost</span>
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_RANDOM_HPP</span>
 </pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/random__by__size_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/random_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/random__by__size_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/random_by_size.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,15 +25,12 @@
   </div>
 </div>
 <div class="contents">
-<h1>random.hpp File Reference</h1>
-<p>Declares items relating to random numbers.
+<h1>detail/random_by_size.hpp File Reference</h1>
+<p>Contains the random_by_size function.
 <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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for general-purpose (insecure) random numbers. More...<br/></td></tr>
 <tr><td colspan="2"><h2>Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -46,17 +43,14 @@
 <p><tr><td class="mdescLeft">&nbsp;</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 <br class="typebreak"/>
-detail::strong_random_generator_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">boost::xint::strong_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. <br/></td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Declares items relating to random numbers. </p>
+<p>Contains the random_by_size function. </p>
+<p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition in file <a class="el" href="random__by__size_8hpp_source.html">random_by_size.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/random__by__size_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/random__by__size_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/random_by_size.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>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>detail/random_by_size.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_RANDOM_BY_SIZE_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_RANDOM_BY_SIZE_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> GenType&gt;
+<a name="l00030"></a>00030 BOOST_XINT_RAWINT BOOST_XINT_RAWINT::random_by_size(GenType&amp; _gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a>
+<a name="l00031"></a>00031 bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span> can_be_negative)
+<a name="l00032"></a>00032 {
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (bits == 0) <span class="keywordflow">return</span> 0;
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="comment">// Grab a bunch of bits</span>
+<a name="l00036"></a>00036 random_generator&lt;GenType&gt; gen(_gen);
+<a name="l00037"></a>00037 bitqueue_t bitqueue;
+<a name="l00038"></a>00038 <span class="keywordflow">while</span> (bitqueue.size() &lt; bits) bitqueue.push(gen(),
+<a name="l00039"></a>00039 std::numeric_limits&lt;base_random_generator::result_type&gt;::digits);
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="comment">// Stick them into an integer</span>
+<a name="l00042"></a>00042 BOOST_XINT_RAWINT target;
+<a name="l00043"></a>00043 <span class="keywordtype">size_t</span> d = bits_to_digits(bits);
+<a name="l00044"></a>00044 digit_t *tdigits = target.digits(d, realloc::ignore);
+<a name="l00045"></a>00045 target.length = (std::min)(d + 1, target.max_length());
+<a name="l00046"></a>00046 digit_t *pp = tdigits, *ppe = pp + target.length;
+<a name="l00047"></a>00047 <span class="keywordflow">while</span> (pp &lt; ppe) *pp++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(bitqueue.pop(bits_per_digit));
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="comment">// Trim it to the proper length</span>
+<a name="l00050"></a>00050 <span class="keywordtype">size_t</span> index = (bits / bits_per_digit);
+<a name="l00051"></a>00051 digit_t mask = (digit_t(1) &lt;&lt; (bits % bits_per_digit)) - 1;
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (mask == 0) { mask = digit_mask; --index; }
+<a name="l00053"></a>00053 target.length = index + 1;
+<a name="l00054"></a>00054 tdigits[index] &amp;= mask;
+<a name="l00055"></a>00055 <span class="keywordflow">for</span> (digit_t *i = tdigits + index + 1, *ie = tdigits + target.length; i &lt;
+<a name="l00056"></a>00056 ie; ++i) *i = 0;
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (high_bit_on) <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(target, bits - 1);
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (low_bit_on) <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(target, 0);
+<a name="l00060"></a>00060 target.negative = (can_be_negative &amp;&amp; (gen() &amp; 0x01));
+<a name="l00061"></a>00061 target.trim();
+<a name="l00062"></a>00062 <span class="keywordflow">return</span> target;
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064
+<a name="l00066"></a>00066 } <span class="comment">// namespace detail</span>
+<a name="l00067"></a>00067 } <span class="comment">// namespace xint</span>
+<a name="l00068"></a>00068 } <span class="comment">// namespace boost</span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_RANDOM_BY_SIZE_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/randomgen_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/bitqueue_8hpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/bitqueue_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/randomgen_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/bitqueue.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/randomgen.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/bitqueue.hpp File Reference</h1>
-<p>Contains the bitqueue_t class, used internally.
+<h1>detail/randomgen.hpp File Reference</h1>
+<p>Contains the function definitions for the random number classes.
 <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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the bitqueue_t class, used internally. </p>
+<p>Contains the function definitions for the random number classes. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="bitqueue_8hpp_source.html">bitqueue.hpp</a>.</p>
+<p>Definition in file <a class="el" href="randomgen_8hpp_source.html">randomgen.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/randomgen_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/randomgen_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,165 @@
+<!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: detail/randomgen.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>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>detail/randomgen.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_RANDOMGEN_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_RANDOMGEN_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="comment">// The secure random generator</span>
+<a name="l00025"></a>00025
+<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 <span class="keyword">namespace </span>detail {
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#define BOOST_XINT_INLINE inline</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span>
+<a name="l00033"></a>00033 <span class="preprocessor">#ifdef _WIN32</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00035"></a>00035 <span class="keyword">struct </span>strong_random_generator_t&lt;T&gt;::impl_t {
+<a name="l00036"></a>00036 <span class="keyword">typedef</span> BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
+<a name="l00037"></a>00037 <span class="keyword">typedef</span> DWORD result_type;
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 impl_t(): dll(0), fn(0) {
+<a name="l00040"></a>00040 <span class="comment">// This should work under WinXP, Vista, and Win7. No guarantees</span>
+<a name="l00041"></a>00041 <span class="comment">// about future compatibility, but I doubt that Microsoft will get</span>
+<a name="l00042"></a>00042 <span class="comment">// rid of it (it&#39;s too useful), and I doubt that they&#39;ll change it</span>
+<a name="l00043"></a>00043 <span class="comment">// now that it&#39;s well-known (it would break too many programs). We</span>
+<a name="l00044"></a>00044 <span class="comment">// could also use the rand_s function in more recent versions of</span>
+<a name="l00045"></a>00045 <span class="comment">// Visual C++, but that causes compatibility problems with older</span>
+<a name="l00046"></a>00046 <span class="comment">// versions of Windows.</span>
+<a name="l00047"></a>00047 dll=LoadLibraryA(<span class="stringliteral">&quot;Advapi32.dll&quot;</span>);
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll,
+<a name="l00049"></a>00049 <span class="stringliteral">&quot;SystemFunction036&quot;</span>));
+<a name="l00050"></a>00050 <span class="keywordflow">if</span> (fn == 0) {
+<a name="l00051"></a>00051 destroy();
+<a name="l00052"></a>00052 <span class="keywordflow">throw</span> exceptions::no_strong_random();
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 }
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 ~impl_t() { destroy(); }
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 result_type operator()() {
+<a name="l00059"></a>00059 result_type r=0;
+<a name="l00060"></a>00060 <span class="keywordflow">if</span> (!fn(&amp;r, <span class="keyword">sizeof</span>(result_type)))
+<a name="l00061"></a>00061 <span class="keywordflow">throw</span> exceptions::no_strong_random(<span class="stringliteral">&quot;RtlGenRandom failed&quot;</span>);
+<a name="l00062"></a>00062 <span class="keywordflow">return</span> r;
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keywordtype">void</span> destroy() { <span class="keywordflow">if</span> (dll) FreeLibrary(dll); }
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 HMODULE dll;
+<a name="l00068"></a>00068 RtlGenRandomFn fn;
+<a name="l00069"></a>00069 };
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00072"></a>00072 BOOST_XINT_INLINE <span class="keywordtype">double</span> strong_random_generator_t&lt;T&gt;::entropy()<span class="keyword"> const</span>
+<a name="l00073"></a>00073 <span class="keyword"> </span>{ <span class="keywordflow">return</span> 32; }
+<a name="l00074"></a>00074 <span class="preprocessor">#else</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00076"></a>00076 <span class="keyword">struct </span>strong_random_generator_t&lt;T&gt;::impl_t {
+<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> result_type;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 impl_t(): rng(<span class="stringliteral">&quot;/dev/urandom&quot;</span>, std::ios::binary) {
+<a name="l00080"></a>00080 <span class="comment">// This should be supported under most non-Windows systems. Note</span>
+<a name="l00081"></a>00081 <span class="comment">// that we&#39;re using /dev/urandom, not /dev/random -- /dev/random is</span>
+<a name="l00082"></a>00082 <span class="comment">// more secure, but it can be VERY slow.</span>
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (!rng) <span class="keywordflow">throw</span> exceptions::no_strong_random();
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 result_type operator()() {
+<a name="l00087"></a>00087 <span class="keywordtype">int</span> r=rng.get();
+<a name="l00088"></a>00088 <span class="keywordflow">if</span> (r==EOF) <span class="keywordflow">throw</span> exceptions::no_strong_random(<span class="stringliteral">&quot;/dev/urandom &quot;</span>
+<a name="l00089"></a>00089 <span class="stringliteral">&quot;returned EOF&quot;</span>);
+<a name="l00090"></a>00090 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>result_type<span class="keyword">&gt;</span>(r);
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 std::ifstream rng;
+<a name="l00094"></a>00094 };
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00097"></a>00097 BOOST_XINT_INLINE <span class="keywordtype">double</span> strong_random_generator_t&lt;T&gt;::entropy()<span class="keyword"> const</span>
+<a name="l00098"></a>00098 <span class="keyword"> </span>{ <span class="keywordflow">return</span> 8; }
+<a name="l00099"></a>00099 <span class="preprocessor">#endif</span>
+<a name="l00100"></a>00100 <span class="preprocessor"></span>
+<a name="l00101"></a>00101 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00102"></a>00102 <span class="keyword">const</span> <span class="keywordtype">bool</span> strong_random_generator_t&lt;T&gt;::has_fixed_range = <span class="keyword">true</span>;
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00105"></a>00105 <span class="keyword">const</span> <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
+<a name="l00106"></a>00106 strong_random_generator_t&lt;T&gt;::min_value =
+<a name="l00107"></a>00107 (std::numeric_limits&lt;<span class="keyword">typename</span>
+<a name="l00108"></a>00108 strong_random_generator_t&lt;T&gt;::impl_t::result_type&gt;::min)();
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00111"></a>00111 <span class="keyword">const</span> <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
+<a name="l00112"></a>00112 strong_random_generator_t&lt;T&gt;::max_value =
+<a name="l00113"></a>00113 (std::numeric_limits&lt;<span class="keyword">typename</span>
+<a name="l00114"></a>00114 strong_random_generator_t&lt;T&gt;::impl_t::result_type&gt;::max)();
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00117"></a>00117 BOOST_XINT_INLINE strong_random_generator_t&lt;T&gt;::strong_random_generator_t():
+<a name="l00118"></a>00118 impl(new impl_t) { }
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00121"></a>00121 BOOST_XINT_INLINE strong_random_generator_t&lt;T&gt;::~strong_random_generator_t() {
+<a name="l00122"></a>00122 <span class="keyword">delete</span> impl; }
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00125"></a>00125 BOOST_XINT_INLINE <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
+<a name="l00126"></a>00126 strong_random_generator_t&lt;T&gt;::operator()() { <span class="keywordflow">return</span> (*impl)(); }
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00129"></a>00129 BOOST_XINT_INLINE <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
+<a name="l00130"></a>00130 strong_random_generator_t&lt;T&gt;::min BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const</span>
+<a name="l00131"></a>00131 <span class="keyword"> </span>{ <span class="keywordflow">return</span> min_value; }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00134"></a>00134 BOOST_XINT_INLINE <span class="keyword">typename</span> strong_random_generator_t&lt;T&gt;::result_type
+<a name="l00135"></a>00135 strong_random_generator_t&lt;T&gt;::max BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const</span>
+<a name="l00136"></a>00136 <span class="keyword"> </span>{ <span class="keywordflow">return</span> max_value; }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 } <span class="comment">// namespace detail</span>
+<a name="l00139"></a>00139 } <span class="comment">// namespace xint</span>
+<a name="l00140"></a>00140 } <span class="comment">// namespace boost</span>
+<a name="l00142"></a>00142 <span class="comment"></span>
+<a name="l00143"></a>00143 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_RANDOMGEN_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/rationale.html
==============================================================================
--- sandbox/xint/libs/xint/doc/rationale.html (original)
+++ sandbox/xint/libs/xint/doc/rationale.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -53,10 +53,11 @@
 Miscellaneous</a></h2>
 <ul>
 <li><a class="el" href="r__too__big.html"><code>exceptions::too_big</code> sounds like <code>std::range_error</code> to me.</a></li>
-<li><a class="el" href="r__no__floats.html">Why didn't you provide conversions to and from float/double types?</a> </li>
+<li><a class="el" href="r__no__floats.html">Why didn't you provide conversions to and from float/double types?</a></li>
+<li><a class="el" href="r__whynotx.html">I've got a great idea! Why don't you do <em>X</em>?</a> </li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/rationale_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/rationale_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/rationale_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/raw__integer_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/random_8hpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/random_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/raw__integer_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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.hpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/raw_integer.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,15 +25,12 @@
   </div>
 </div>
 <div class="contents">
-<h1>random.hpp File Reference</h1>
-<p>Declares items relating to random numbers.
+<h1>detail/raw_integer.hpp File Reference</h1>
+<p>Contains the raw_integer class declaration, and miscellaneous definitions for 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>Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1default__random__generator.html">boost::xint::default_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for general-purpose (insecure) random numbers. More...<br/></td></tr>
 <tr><td colspan="2"><h2>Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
@@ -46,17 +43,14 @@
 <p><tr><td class="mdescLeft">&nbsp;</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 <br class="typebreak"/>
-detail::strong_random_generator_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac38b0aafb375c80ff42b5488a52d9e8f">boost::xint::strong_random_generator</a></td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. <br/></td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Declares items relating to random numbers. </p>
+<p>Contains the raw_integer class declaration, and miscellaneous definitions for member functions. </p>
+<p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="random_8hpp_source.html">random.hpp</a>.</p>
+<p>Definition in file <a class="el" href="raw__integer_8hpp_source.html">raw_integer.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/raw__integer_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/raw__integer_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,361 @@
+<!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: detail/raw_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>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>detail/raw_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="l00021"></a>00021 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_RAW_INTEGER_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_RAW_INTEGER_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>detail {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="preprocessor">#define BOOST_XINT_RAWINT_TPL template &lt;bitsize_t Bits, bool Secure, class \</span>
+<a name="l00030"></a>00030 <span class="preprocessor"> Alloc&gt;</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_XINT_RAWINT raw_integer_t&lt;Bits, Secure, Alloc&gt;</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span>
+<a name="l00033"></a>00033 BOOST_XINT_RAWINT_TPL
+<a name="l00034"></a>00034 <span class="keyword">class </span>raw_integer_t {
+<a name="l00035"></a>00035 <span class="keyword">public</span>:
+<a name="l00036"></a>00036 <span class="keyword">typedef</span> magnitude_manager_t&lt;Bits, Secure, Alloc&gt; datatype;
+<a name="l00037"></a>00037 <span class="keyword">typedef</span> base_divide_t&lt;BOOST_XINT_RAWINT&gt; divide_t;
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keywordtype">size_t</span> length;
+<a name="l00040"></a>00040 <span class="keywordtype">bool</span> negative;
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 raw_integer_t(): length(1), negative(false), changed(false) { }
+<a name="l00043"></a>00043 raw_integer_t(<span class="keyword">const</span> BOOST_XINT_RAWINT&amp; copy): length(copy.length),
+<a name="l00044"></a>00044 negative(copy.negative), changed(false), data(copy.data) { }
+<a name="l00045"></a>00045 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> B, <span class="keywordtype">bool</span> S, <span class="keyword">class</span> A&gt;
+<a name="l00046"></a>00046 raw_integer_t(<span class="keyword">const</span> raw_integer_t&lt;B,S,A&gt;&amp; copy): length(copy.length),
+<a name="l00047"></a>00047 negative(copy.negative), changed(true), data(copy.data) { make_unique();
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (length &gt; max_length()) length = max_length();
+<a name="l00049"></a>00049 trim(); }
+<a name="l00050"></a>00050 raw_integer_t(<span class="keyword">const</span> BOOST_XINT_RAWINT&amp; copy, <span class="keywordtype">bool</span> neg, <span class="keywordtype">bool</span> allow_zero =
+<a name="l00051"></a>00051 <span class="keyword">false</span>): length(copy.length), negative(neg), changed(false),
+<a name="l00052"></a>00052 data(copy.data) { trim(allow_zero); }
+<a name="l00053"></a>00053 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00054"></a>00054 raw_integer_t(T n, <span class="keywordtype">size_t</span> prealloc = 0, <span class="keyword">typename</span> boost::enable_if&lt;
+<a name="l00055"></a>00055 boost::is_integral&lt;T&gt; &gt;::type* = 0): length(1), negative(false),
+<a name="l00056"></a>00056 changed(false) { <span class="keywordflow">if</span> (std::numeric_limits&lt;T&gt;::is_signed) set_signed(n,
+<a name="l00057"></a>00057 prealloc); <span class="keywordflow">else</span> set_unsigned(n, <span class="keyword">false</span>, prealloc); }
+<a name="l00058"></a>00058 raw_integer_t(<span class="keyword">const</span> <span class="keywordtype">char</span> *s, <span class="keywordtype">size_t</span> base = 10): length(1), negative(false),
+<a name="l00059"></a>00059 changed(false) { from_string(s, base); }
+<a name="l00060"></a>00060 raw_integer_t(<span class="keyword">const</span> std::string&amp; s, <span class="keywordtype">size_t</span> base = 10): length(1),
+<a name="l00061"></a>00061 negative(false), changed(false) { from_string(s, base); }
+<a name="l00062"></a>00062 raw_integer_t(<span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <span class="keywordtype">size_t</span> bits = 0): length(1),
+<a name="l00063"></a>00063 negative(false), changed(false) { from_binary(b, bits); }
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 BOOST_XINT_RAWINT&amp; operator=(<span class="keyword">const</span> BOOST_XINT_RAWINT&amp; <span class="keyword">set</span>) { length =
+<a name="l00066"></a>00066 <span class="keyword">set</span>.length; negative = <span class="keyword">set</span>.negative; data = <span class="keyword">set</span>.data; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 digit_t *digits(<span class="keywordtype">size_t</span> resize, realloc::strategy strategy = realloc::copy);
+<a name="l00069"></a>00069 <span class="keyword">const</span> digit_t *digits()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.digits(); }
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 digit_t get_digit(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (i &lt; max_length() ? digits()[i] :
+<a name="l00072"></a>00072 0); }
+<a name="l00073"></a>00073 digit_t operator[](<span class="keywordtype">size_t</span> i) { <span class="keywordflow">return</span> digits()[i]; }
+<a name="l00074"></a>00074 digit_t operator[](<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> get_digit(i); }
+<a name="l00075"></a>00075 <span class="keywordtype">size_t</span> max_length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.max_length(); }
+<a name="l00076"></a>00076 <span class="keywordtype">bool</span> same_storage(<span class="keyword">const</span> BOOST_XINT_RAWINT n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span>
+<a name="l00077"></a>00077 data.same_storage(n.data); }
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keywordtype">int</span> sign()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> negative ? -1 : is_zero() ? 0 : 1; }
+<a name="l00080"></a>00080 <span class="keywordtype">int</span> sign(<span class="keywordtype">bool</span> allow_signed_zero)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (!allow_signed_zero &amp;&amp;
+<a name="l00081"></a>00081 is_zero() ? 0 : negative ? -1 : 1); }
+<a name="l00082"></a>00082 <span class="keywordtype">bool</span> is_zero()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (length == 1 &amp;&amp; digits()[0] == 0); }
+<a name="l00083"></a>00083 <span class="keywordtype">bool</span> is_odd()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (digits()[0] &amp; 0x01) != 0; }
+<a name="l00084"></a>00084 <span class="keywordtype">bool</span> is_even()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (digits()[0] &amp; 0x01) == 0; }
+<a name="l00085"></a>00085 <span class="keywordtype">size_t</span> hex_digits()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(*<span class="keyword">this</span>) + 3) / 4; }
+<a name="l00086"></a>00086 raw_integer_t <a class="code" href="namespaceboost_1_1xint.html#a5a98564162f30f3117a871a617af9523" title="Returns the absolute value of an integer.">abs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> raw_integer_t(*<span class="keyword">this</span>, <span class="keyword">false</span>); }
+<a name="l00087"></a>00087 raw_integer_t negate()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> raw_integer_t(*<span class="keyword">this</span>, !negative); }
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keywordtype">int</span> n) { set_signed(n); }
+<a name="l00090"></a>00090 <span class="keywordtype">void</span> set_signed(boost::intmax_t n, <span class="keywordtype">size_t</span> prealloc = 0);
+<a name="l00091"></a>00091 <span class="keywordtype">void</span> set_unsigned(boost::uintmax_t n, <span class="keywordtype">bool</span> neg = <span class="keyword">false</span>, <span class="keywordtype">size_t</span> prealloc =
+<a name="l00092"></a>00092 0);
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keywordtype">bool</span> is_nan()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_nan(); }
+<a name="l00095"></a>00095 <span class="keywordtype">void</span> make_nan() { data.make_nan(); }
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="keywordtype">bool</span> is_unique()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.is_unique(); }
+<a name="l00098"></a>00098 <span class="keywordtype">void</span> make_unique() { <span class="keywordflow">if</span> (!is_unique()) data.resize_and_uniquify(length); }
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keywordtype">void</span> trim(<span class="keywordtype">bool</span> allow_negative_zero = <span class="keyword">false</span>);
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 raw_integer_t&amp; operator++(); <span class="comment">// Preincrement</span>
+<a name="l00103"></a>00103 raw_integer_t&amp; operator--(); <span class="comment">// Predecrement</span>
+<a name="l00104"></a>00104 raw_integer_t operator++(<span class="keywordtype">int</span>); <span class="comment">// Postincrement</span>
+<a name="l00105"></a>00105 raw_integer_t operator--(<span class="keywordtype">int</span>); <span class="comment">// Postdecrement</span>
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keywordtype">bool</span> operator!()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_zero(); }
+<a name="l00108"></a>00108 raw_integer_t <a class="code" href="namespaceboost_1_1xint.html#acda2a7a7d63582732505cc7128096f27" title="Calculate the difference between two integers.">operator-</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> BOOST_XINT_RAWINT(*<span class="keyword">this</span>,
+<a name="l00109"></a>00109 !negative, <span class="keyword">true</span>); }
+<a name="l00110"></a>00110 raw_integer_t&amp; <a class="code" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915" title="Calculate the sum of two integers.">operator+</a>() { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00111"></a>00111 <span class="keyword">const</span> raw_integer_t&amp; <a class="code" href="namespaceboost_1_1xint.html#a88b3b7bccb96dd8b0cd9d9f853025915" title="Calculate the sum of two integers.">operator+</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00112"></a>00112 raw_integer_t operator~() <span class="keyword">const</span>; <span class="comment">// For fixed-size types only!</span>
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 raw_integer_t&amp; operator+=(<span class="keyword">const</span> raw_integer_t b);
+<a name="l00115"></a>00115 raw_integer_t&amp; operator-=(<span class="keyword">const</span> raw_integer_t b);
+<a name="l00116"></a>00116 raw_integer_t&amp; operator*=(<span class="keyword">const</span> raw_integer_t b);
+<a name="l00117"></a>00117 raw_integer_t&amp; operator/=(<span class="keyword">const</span> raw_integer_t b);
+<a name="l00118"></a>00118 raw_integer_t&amp; operator%=(<span class="keyword">const</span> raw_integer_t b);
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 raw_integer_t&amp; operator&amp;=(<span class="keyword">const</span> raw_integer_t n);
+<a name="l00121"></a>00121 raw_integer_t&amp; operator|=(<span class="keyword">const</span> raw_integer_t n);
+<a name="l00122"></a>00122 raw_integer_t&amp; operator^=(<span class="keyword">const</span> raw_integer_t n);
+<a name="l00123"></a>00123 raw_integer_t&amp; operator&lt;&lt;=(<span class="keywordtype">size_t</span> shift);
+<a name="l00124"></a>00124 raw_integer_t&amp; operator&gt;&gt;=(<span class="keywordtype">size_t</span> shift);
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="keywordtype">void</span> from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> base = 10);
+<a name="l00127"></a>00127 <span class="keywordtype">void</span> from_string(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">char</span> **endptr, <span class="keywordtype">size_t</span> base = 10);
+<a name="l00128"></a>00128 <span class="keywordtype">void</span> from_string(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base = 10);
+<a name="l00129"></a>00129 <span class="keywordtype">void</span> from_binary(<a class="code" href="namespaceboost_1_1xint.html#aae3128529370506165793f2771834e58" title="The format for the binary representations of integers.">xint::binary_t</a> b, <span class="keywordtype">size_t</span> bits = 0);
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">template</span> &lt;<span class="keyword">class</span> GenType&gt;
+<a name="l00132"></a>00132 <span class="keyword">static</span> raw_integer_t random_by_size(GenType&amp; gen, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> bits, <span class="keywordtype">bool</span>
+<a name="l00133"></a>00133 high_bit_on = <span class="keyword">false</span>, <span class="keywordtype">bool</span> low_bit_on = <span class="keyword">false</span>, <span class="keywordtype">bool</span> can_be_negative =
+<a name="l00134"></a>00134 <span class="keyword">false</span>);
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keyword">template</span> &lt;<span class="keyword">class</span> GenType&gt;
+<a name="l00137"></a>00137 <span class="keyword">static</span> raw_integer_t random_prime(GenType&amp; gen, <span class="keywordtype">size_t</span> size_in_bits,
+<a name="l00138"></a>00138 <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547" title="A callback function takes no parameters and returns a bool.">callback_t</a> callback = <a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696" title="An empty callback_t, used as a default parameter for some functions.">no_callback</a>);
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keywordtype">void</span> _swap(BOOST_XINT_RAWINT&amp; i2);
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <span class="keyword">private</span>:
+<a name="l00143"></a>00143 <span class="keywordtype">bool</span> changed;
+<a name="l00144"></a>00144 datatype data;
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="keyword">template</span> &lt;bit<span class="keywordtype">size_t</span> B, <span class="keywordtype">bool</span> S, <span class="keyword">class</span> A&gt;
+<a name="l00147"></a>00147 <span class="keyword">friend</span> <span class="keyword">class </span>raw_integer_t;
+<a name="l00148"></a>00148 };
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 BOOST_XINT_RAWINT_TPL
+<a name="l00151"></a>00151 digit_t *BOOST_XINT_RAWINT::digits(<span class="keywordtype">size_t</span> resize, realloc::strategy strategy) {
+<a name="l00152"></a>00152 data.resize_and_uniquify(resize, strategy);
+<a name="l00153"></a>00153 <span class="keywordflow">if</span> (resize == 0 || resize &gt; data.max_length()) resize = data.max_length();
+<a name="l00154"></a>00154 <span class="keywordflow">if</span> (strategy != realloc::copy) {
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (length &lt; resize) {
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (strategy == realloc::extend) {
+<a name="l00157"></a>00157 digit_t *d = data.digits(), *p = d + length, *pe = d + resize;
+<a name="l00158"></a>00158 <span class="keywordflow">while</span> (p != pe) *p++ = 0;
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 length = resize;
+<a name="l00161"></a>00161 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (length &gt; data.max_length()) length = data.max_length();
+<a name="l00162"></a>00162 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (length &gt; data.max_length()) length = data.max_length();
+<a name="l00163"></a>00163 changed = <span class="keyword">true</span>;
+<a name="l00164"></a>00164 <span class="keywordflow">return</span> data.digits();
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 BOOST_XINT_RAWINT_TPL
+<a name="l00168"></a>00168 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::set_signed(boost::intmax_t n, <span class="keywordtype">size_t</span> prealloc) {
+<a name="l00169"></a>00169 <span class="keywordflow">if</span> (n &gt;= 0) {
+<a name="l00170"></a>00170 <span class="keywordflow">if</span> (n &lt;= digit_mask) {
+<a name="l00171"></a>00171 length = 1;
+<a name="l00172"></a>00172 negative = <span class="keyword">false</span>;
+<a name="l00173"></a>00173 <span class="keywordflow">if</span> (prealloc != 0) {
+<a name="l00174"></a>00174 digits(prealloc, realloc::zero)[0] = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(n);
+<a name="l00175"></a>00175 } <span class="keywordflow">else</span> {
+<a name="l00176"></a>00176 digits(1, realloc::ignore)[0] = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(n);
+<a name="l00177"></a>00177 }
+<a name="l00178"></a>00178 trim();
+<a name="l00179"></a>00179 } <span class="keywordflow">else</span> set_unsigned(n, <span class="keyword">false</span>, prealloc);
+<a name="l00180"></a>00180 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n == (std::numeric_limits&lt;boost::intmax_t&gt;::min)()) {
+<a name="l00181"></a>00181 <span class="comment">// Have to treat the minimum number carefully, because -n is not</span>
+<a name="l00182"></a>00182 <span class="comment">// what you&#39;d think it is.</span>
+<a name="l00183"></a>00183 set_unsigned(-(n + 1), <span class="keyword">true</span>, prealloc);
+<a name="l00184"></a>00184 --*<span class="keyword">this</span>;
+<a name="l00185"></a>00185 } <span class="keywordflow">else</span> set_unsigned(-n, <span class="keyword">true</span>, prealloc);
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 BOOST_XINT_RAWINT_TPL
+<a name="l00189"></a>00189 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::set_unsigned(boost::uintmax_t n, <span class="keywordtype">bool</span> neg, <span class="keywordtype">size_t</span>
+<a name="l00190"></a>00190 prealloc)
+<a name="l00191"></a>00191 {
+<a name="l00192"></a>00192 <span class="keywordflow">if</span> (n &lt;= digit_mask) {
+<a name="l00193"></a>00193 length = 1;
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (prealloc != 0) {
+<a name="l00195"></a>00195 digits(prealloc, realloc::zero)[0] = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(n);
+<a name="l00196"></a>00196 } <span class="keywordflow">else</span> {
+<a name="l00197"></a>00197 digits(1, realloc::ignore)[0] = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(n);
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199 } <span class="keywordflow">else</span> {
+<a name="l00200"></a>00200 digit_t *d = digits((std::max)(digits_in_uintmax, prealloc),
+<a name="l00201"></a>00201 realloc::ignore), *i = d, *ie = i + max_length();
+<a name="l00202"></a>00202 <span class="keywordflow">while</span> (n != 0 &amp;&amp; i != ie) {
+<a name="l00203"></a>00203 *i++ = <span class="keyword">static_cast&lt;</span>digit_t<span class="keyword">&gt;</span>(n);
+<a name="l00204"></a>00204 n &gt;&gt;= bits_per_digit;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 length = (i - d);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 negative = neg;
+<a name="l00209"></a>00209 trim();
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211
+<a name="l00212"></a>00212 BOOST_XINT_RAWINT_TPL
+<a name="l00213"></a>00213 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::trim(<span class="keywordtype">bool</span> allow_negative_zero) {
+<a name="l00214"></a>00214 assert(length &lt;= max_length());
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="keywordtype">bool</span> zero = <span class="keyword">false</span>;
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (changed) {
+<a name="l00218"></a>00218 data.trim();
+<a name="l00219"></a>00219 <span class="keywordflow">if</span> (length &gt; 1) {
+<a name="l00220"></a>00220 digit_t *d = data.digits(), *i = d + length - 1;
+<a name="l00221"></a>00221 <span class="keywordflow">if</span> (*i == 0) {
+<a name="l00222"></a>00222 <span class="keywordflow">do</span> { --i; } <span class="keywordflow">while</span> (i &gt; d &amp;&amp; *i == 0);
+<a name="l00223"></a>00223 length = size_t(i - d) + 1;
+<a name="l00224"></a>00224 <span class="keywordflow">if</span> (i == d &amp;&amp; *i == 0) zero = <span class="keyword">true</span>;
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (data.digits()[0] == 0) zero = <span class="keyword">true</span>;
+<a name="l00227"></a>00227 changed = <span class="keyword">false</span>;
+<a name="l00228"></a>00228 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (length == 1 &amp;&amp; data.digits()[0] == 0) zero = <span class="keyword">true</span>;
+<a name="l00229"></a>00229 <span class="keywordflow">if</span> (zero &amp;&amp; !allow_negative_zero) negative = <span class="keyword">false</span>;
+<a name="l00230"></a>00230 }
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 BOOST_XINT_RAWINT_TPL
+<a name="l00233"></a>00233 <span class="keywordtype">void</span> BOOST_XINT_RAWINT::_swap(BOOST_XINT_RAWINT&amp; i2) {
+<a name="l00234"></a>00234 <span class="keyword">using</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">std::swap</a>;
+<a name="l00235"></a>00235 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(length, i2.length);
+<a name="l00236"></a>00236 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(negative, i2.negative);
+<a name="l00237"></a>00237 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(changed, i2.changed);
+<a name="l00238"></a>00238 <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(data, i2.data);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240
+<a name="l00242"></a>00242 <span class="comment">// Free functions</span>
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 BOOST_XINT_RAWINT_TPL
+<a name="l00245"></a>00245 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a1a857d5cc4b15822d3dcaf70ec15b4e5">swap</a>(BOOST_XINT_RAWINT&amp; i1, BOOST_XINT_RAWINT&amp; i2) {
+<a name="l00246"></a>00246 i1._swap(i2);
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> charT, <span class="keyword">typename</span> traits, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class </span>\
+<a name="l00250"></a>00250 Alloc&gt;
+<a name="l00251"></a>00251 <span class="keyword">inline</span> std::basic_ostream&lt;charT,traits&gt;&amp; <a class="code" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">operator&lt;&lt;</a>(std::basic_ostream&lt;charT,
+<a name="l00252"></a>00252 traits&gt;&amp; out, <span class="keyword">const</span> BOOST_XINT_RAWINT n)
+<a name="l00253"></a>00253 {
+<a name="l00254"></a>00254 <span class="keywordtype">int</span> base=((out.flags() &amp; std::ios::hex) ? 16
+<a name="l00255"></a>00255 : (out.flags() &amp; std::ios::oct) ? 8
+<a name="l00256"></a>00256 : 10);
+<a name="l00257"></a>00257 <span class="keywordtype">bool</span> upperCase=(out.flags() &amp; std::ios::uppercase ? <span class="keyword">true</span> : <span class="keyword">false</span>);
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 <span class="keywordtype">int</span> nsign = (n.is_zero() ? 0 : n.negative ? -1 : 1);
+<a name="l00260"></a>00260 <span class="keywordflow">if</span> ((out.flags() &amp; std::ios::showpos) &amp;&amp; nsign &gt;= 0) out &lt;&lt; <span class="stringliteral">&quot;+&quot;</span>;
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 <span class="keywordflow">if</span> (out.flags() &amp; std::ios::showbase) {
+<a name="l00263"></a>00263 <span class="keywordflow">if</span> (nsign &lt; 0) out &lt;&lt; <span class="stringliteral">&quot;-&quot;</span>;
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265 <span class="keywordflow">if</span> (base == 16 &amp;&amp; upperCase) out &lt;&lt; <span class="stringliteral">&quot;0X&quot;</span>;
+<a name="l00266"></a>00266 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base == 16) out &lt;&lt; <span class="stringliteral">&quot;0x&quot;</span>;
+<a name="l00267"></a>00267 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base == 8) out &lt;&lt; <span class="stringliteral">&quot;0&quot;</span>;
+<a name="l00268"></a>00268
+<a name="l00269"></a>00269 out &lt;&lt; <a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2" title="Creates a string representation of the specified integer.">to_string</a>(n.abs(), base, upperCase);
+<a name="l00270"></a>00270 } <span class="keywordflow">else</span> {
+<a name="l00271"></a>00271 out &lt;&lt; <a class="code" href="namespaceboost_1_1xint.html#a34f1da34b7c169828bf55154f3cbccf2" title="Creates a string representation of the specified integer.">to_string</a>(n, base, upperCase);
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 <span class="keywordflow">return</span> out;
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> charT, <span class="keyword">typename</span> traits, <a class="code" href="namespaceboost_1_1xint.html#ab256530d9916860983abdb6f0c6fad63" title="This makes it easier to tell when an item is measured in bits.">bitsize_t</a> Bits, <span class="keywordtype">bool</span> Secure, <span class="keyword">class </span>\
+<a name="l00277"></a>00277 Alloc&gt;
+<a name="l00278"></a>00278 <span class="keyword">inline</span> std::basic_istream&lt;charT,traits&gt;&amp; <a class="code" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">operator&gt;&gt;</a>(std::basic_istream&lt;charT,
+<a name="l00279"></a>00279 traits&gt;&amp; in, BOOST_XINT_RAWINT&amp; n)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 <span class="keywordtype">int</span> hex=(in.flags() &amp; std::ios::hex) ? 1 : 0;
+<a name="l00282"></a>00282 <span class="keywordtype">int</span> dec=(in.flags() &amp; std::ios::dec) ? 1 : 0;
+<a name="l00283"></a>00283 <span class="keywordtype">int</span> oct=(in.flags() &amp; std::ios::oct) ? 1 : 0;
+<a name="l00284"></a>00284 <span class="keywordtype">int</span> count=hex+dec+oct;
+<a name="l00285"></a>00285
+<a name="l00286"></a>00286 <span class="keywordtype">size_t</span> base=<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>;
+<a name="l00287"></a>00287 <span class="keywordflow">if</span> (count == 1) {
+<a name="l00288"></a>00288 <span class="keywordflow">if</span> (hex) base = 16;
+<a name="l00289"></a>00289 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (oct) base = 8;
+<a name="l00290"></a>00290 <span class="keywordflow">else</span> base = 10;
+<a name="l00291"></a>00291 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count &gt; 1) base = 10;
+<a name="l00292"></a>00292 <span class="comment">// else auto-base</span>
+<a name="l00293"></a>00293
+<a name="l00294"></a>00294 std::string s;
+<a name="l00295"></a>00295 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">&#39;+&#39;</span>) {
+<a name="l00296"></a>00296 in.ignore();
+<a name="l00297"></a>00297 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">&#39;-&#39;</span>) {
+<a name="l00298"></a>00298 in.ignore();
+<a name="l00299"></a>00299 s.push_back(<span class="charliteral">&#39;-&#39;</span>);
+<a name="l00300"></a>00300 }
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398" title="A value that can be used for the &amp;#39;base&amp;#39; parameter of the string-to-integer...">autobase</a>) {
+<a name="l00303"></a>00303 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">&#39;0&#39;</span>) {
+<a name="l00304"></a>00304 in.ignore();
+<a name="l00305"></a>00305 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00306"></a>00306 <span class="keywordflow">if</span> (c==<span class="charliteral">&#39;x&#39;</span> || c==<span class="charliteral">&#39;X&#39;</span>) {
+<a name="l00307"></a>00307 in.ignore();
+<a name="l00308"></a>00308 base=16;
+<a name="l00309"></a>00309 } <span class="keywordflow">else</span> base=8;
+<a name="l00310"></a>00310 } <span class="keywordflow">else</span> base=10;
+<a name="l00311"></a>00311 }
+<a name="l00312"></a>00312
+<a name="l00313"></a>00313 <span class="keywordflow">while</span> (in) {
+<a name="l00314"></a>00314 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00315"></a>00315 <span class="keywordflow">if</span> ((base==8 &amp;&amp; (c&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;7&#39;</span>)) ||
+<a name="l00316"></a>00316 (base==10 &amp;&amp; (c&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;9&#39;</span>)) ||
+<a name="l00317"></a>00317 (base==16 &amp;&amp; ((c&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;9&#39;</span>) || (c&gt;=<span class="charliteral">&#39;a&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;f&#39;</span>) ||
+<a name="l00318"></a>00318 (c&gt;=<span class="charliteral">&#39;A&#39;</span> &amp;&amp; c&lt;=<span class="charliteral">&#39;F&#39;</span>))))
+<a name="l00319"></a>00319 {
+<a name="l00320"></a>00320 in.ignore();
+<a name="l00321"></a>00321 s.push_back(<span class="keywordtype">char</span>(c));
+<a name="l00322"></a>00322 } <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324
+<a name="l00325"></a>00325 <span class="keywordflow">try</span> {
+<a name="l00326"></a>00326 n.from_string(s, base);
+<a name="l00327"></a>00327 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00328"></a>00328 <span class="comment">// Catch invalid strings</span>
+<a name="l00329"></a>00329 in.setstate(std::ios::failbit);
+<a name="l00330"></a>00330 }
+<a name="l00331"></a>00331
+<a name="l00332"></a>00332 <span class="keywordflow">return</span> in;
+<a name="l00333"></a>00333 }
+<a name="l00334"></a>00334
+<a name="l00336"></a>00336 } <span class="comment">// namespace detail</span>
+<a name="l00337"></a>00337 } <span class="comment">// namespace xint</span>
+<a name="l00338"></a>00338 } <span class="comment">// namespace boost</span>
+<a name="l00339"></a>00339
+<a name="l00340"></a>00340 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_RAW_INTEGER_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/roots_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/roots_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/roots.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>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>detail/roots.cpp File Reference</h1>
-<p>Contains the square-root function definition, and any future root-related ones.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the square-root function definition, and any future root-related ones. </p>
-<p>This file will be included by the library itself when needed. </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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/roots_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/roots_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,88 +0,0 @@
-<!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: detail/roots.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>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>detail/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>
-<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">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00026"></a>00026 <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="l00032"></a>00032 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a3f266530ae26fd9553a7b965fa1db2ea">sqrt</a>(data_t&amp; target, data_t n) {
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (n.is_zero()) { target.set(0); <span class="keywordflow">return</span>; }
-<a name="l00034"></a>00034 <span class="keywordflow">if</span> (n.negative) <span class="keywordflow">throw</span> exceptions::cannot_represent(<span class="stringliteral">&quot;library cannot &quot;</span>
-<a name="l00035"></a>00035 <span class="stringliteral">&quot;represent imaginary values (tried to take sqrt of negative number)&quot;</span>);
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="comment">// A naive implementation using pure integers can result in an endless loop,</span>
-<a name="l00038"></a>00038 <span class="comment">// cycling between two numbers that are approximately correct (try</span>
-<a name="l00039"></a>00039 <span class="comment">// sqrt(23)). To deal with that, we multiply everything by an even power of</span>
-<a name="l00040"></a>00040 <span class="comment">// two.</span>
-<a name="l00041"></a>00041 <span class="keyword">const</span> <span class="keywordtype">size_t</span> extra_bits = 1;
-<a name="l00042"></a>00042 n &lt;&lt;= (extra_bits * 2);
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="comment">// Initial guess is half the length of n, in bits</span>
-<a name="l00045"></a>00045 target.beginmod();
-<a name="l00046"></a>00046 target.set(0);
-<a name="l00047"></a>00047 <a class="code" href="namespaceboost_1_1xint.html#a677abb914051570846048717ff0a7172">setbit</a>(target, <a class="code" href="namespaceboost_1_1xint.html#a9d9b4f302607bcf96bd2ab2c3145f453">log2</a>(n) / 2);
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="comment">// Now refine it until we&#39;re as close as we can get.</span>
-<a name="l00050"></a>00050 <span class="keywordflow">while</span> (1) {
-<a name="l00051"></a>00051 data_t guess((target + (n / target)) &gt;&gt; 1);
-<a name="l00052"></a>00052 <span class="keywordflow">if</span> ((target &gt;&gt; extra_bits) == (guess &gt;&gt; extra_bits)) <span class="keywordflow">break</span>;
-<a name="l00053"></a>00053 target.duplicate_data(guess);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <span class="comment">// Remove half of the added bits.</span>
-<a name="l00057"></a>00057 target &gt;&gt;= extra_bits;
-<a name="l00058"></a>00058 target.endmod();
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 } <span class="comment">// namespace detail</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="l00065"></a>00065 <span class="comment"></span>
-<a name="l00066"></a>00066 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/roots_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/roots_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/roots_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/roots.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/roots.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/roots.cpp File Reference</h1>
+<h1>detail/roots.hpp File Reference</h1>
 <p>Contains the square-root function definition, and any future root-related ones.
 <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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the square-root function definition, and any future root-related ones. </p>
 <p>This file will be included by the library itself when needed. </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="roots_8hpp_source.html">roots.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/roots_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/roots_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,85 @@
+<!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: detail/roots.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>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>detail/roots.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="l00021"></a>00021 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_ROOTS_HPP</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_ROOTS_HPP</span>
+<a name="l00023"></a>00023 <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>detail {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 BOOST_XINT_RAWINT_TPL
+<a name="l00030"></a>00030 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#adb652fa006fd8ed34993ea86cf317cb2" title="Calculate the square root of an integer.">square_root</a>(BOOST_XINT_RAWINT n) {
+<a name="l00031"></a>00031 <span class="keywordflow">if</span> (n.is_zero()) <span class="keywordflow">return</span> 0;
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (n.negative) <span class="keywordflow">throw</span> exceptions::cannot_represent(<span class="stringliteral">&quot;cannot represent &quot;</span>
+<a name="l00033"></a>00033 <span class="stringliteral">&quot;imaginary values (tried to take square_root of negative number)&quot;</span>);
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="comment">// A naive implementation using pure integers can result in an endless loop,</span>
+<a name="l00036"></a>00036 <span class="comment">// cycling between two numbers that are approximately correct (try</span>
+<a name="l00037"></a>00037 <span class="comment">// sqrt(23)). To deal with that, we multiply everything by an even power of</span>
+<a name="l00038"></a>00038 <span class="comment">// two.</span>
+<a name="l00039"></a>00039 <span class="keyword">const</span> <span class="keywordtype">size_t</span> extra_bits = 1;
+<a name="l00040"></a>00040 n &lt;&lt;= (extra_bits * 2);
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="comment">// Initial guess is half the length of n, in bits</span>
+<a name="l00043"></a>00043 BOOST_XINT_RAWINT target;
+<a name="l00044"></a>00044 <a class="code" href="namespaceboost_1_1xint.html#ac16087b6d58edabc3b67c94e63e22921" title="Sets a specific bit in an integer to one.">setbit</a>(target, <a class="code" href="namespaceboost_1_1xint.html#ab6cef2e4e1b3c3b841f6c1a085952f18" title="Get the log2 value of an integer.">log2</a>(n) / 2);
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="comment">// Now refine it until we&#39;re as close as we can get.</span>
+<a name="l00047"></a>00047 <span class="keywordflow">while</span> (1) {
+<a name="l00048"></a>00048 BOOST_XINT_RAWINT guess((target + (n / target)) &gt;&gt; 1);
+<a name="l00049"></a>00049 <span class="keywordflow">if</span> ((target &gt;&gt; extra_bits) == (guess &gt;&gt; extra_bits)) <span class="keywordflow">break</span>;
+<a name="l00050"></a>00050 target = guess;
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="comment">// Remove half of the added bits.</span>
+<a name="l00054"></a>00054 target &gt;&gt;= extra_bits;
+<a name="l00055"></a>00055 <span class="keywordflow">return</span> target;
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 } <span class="comment">// namespace detail</span>
+<a name="l00059"></a>00059 } <span class="comment">// namespace xint</span>
+<a name="l00060"></a>00060 } <span class="comment">// namespace boost</span>
+<a name="l00062"></a>00062 <span class="comment"></span>
+<a name="l00063"></a>00063 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_ROOTS_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>

Deleted: sandbox/xint/libs/xint/doc/shift_8cpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/shift_8cpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,45 +0,0 @@
-<!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: detail/shift.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>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>detail/shift.cpp File Reference</h1>
-<p>Contains the bit-shifting function definitions.
-More...</p>
-
-<p>Go to the source code of this file.</p>
-<table border="0" cellpadding="0" cellspacing="0">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the bit-shifting function definitions. </p>
-<p>This file will be included by the library itself when needed. </p>
-
-<p>Definition in file <a class="el" href="shift_8cpp_source.html">shift.cpp</a>.</p>
-</div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
-</body>
-</html>

Deleted: sandbox/xint/libs/xint/doc/shift_8cpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/shift_8cpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
+++ (empty file)
@@ -1,135 +0,0 @@
-<!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: detail/shift.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>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>detail/shift.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="l00020"></a>00020 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#if defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"> #include &quot;<a class="code" href="internals_8hpp.html" title="Contains the internal definitions required for all XInt types.">internals.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB)</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<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 <span class="keyword">namespace </span>detail {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator&lt;&lt;=(<span class="keywordtype">size_t</span> byBits) {
-<a name="l00032"></a>00032 <span class="keywordflow">if</span> (byBits == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="comment">// bits/dchunks is distance to move</span>
-<a name="l00035"></a>00035 <span class="keywordtype">size_t</span> dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit;
-<a name="l00036"></a>00036 <span class="keywordtype">size_t</span> anslen = length + dchunks + (bits != 0 ? 1 : 0);
-<a name="l00037"></a>00037 beginmod(anslen);
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="comment">// nlen is one greater than top source byte to move</span>
-<a name="l00040"></a>00040 <span class="keywordtype">size_t</span> nlen = (std::min)(length, anslen - dchunks - (bits != 0 ? 1 : 0));
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 digit_t *dstart = digits();
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (bits != 0 &amp;&amp; dchunks + 1 &lt; anslen) {
-<a name="l00044"></a>00044 <span class="comment">// Handle both bits and dchunks in one pass</span>
-<a name="l00045"></a>00045 <span class="keyword">const</span> digit_t *s = dstart + nlen - 1;
-<a name="l00046"></a>00046 digit_t *t = dstart + nlen + dchunks, *te = dstart + max_length();
-<a name="l00047"></a>00047 length = (std::min&lt;size_t&gt;)(t - dstart + 1, max_length());
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keywordflow">while</span> (t &gt;= te &amp;&amp; s &gt; dstart) { --t; --s; }
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (t &lt; te) *t-- = *s &gt;&gt; (bits_per_digit - bits); <span class="keywordflow">else</span> --t;
-<a name="l00051"></a>00051 <span class="keywordflow">while</span> (s &gt; dstart) {
-<a name="l00052"></a>00052 *t = (*s-- &lt;&lt; bits);
-<a name="l00053"></a>00053 *t-- |= (*s &gt;&gt; (bits_per_digit - bits));
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055 *t-- = (*s &lt;&lt; bits);
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="keywordflow">while</span> (t &gt;= dstart) *t-- = 0;
-<a name="l00058"></a>00058 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dchunks != 0 &amp;&amp; dchunks &lt; anslen) {
-<a name="l00059"></a>00059 length = anslen;
-<a name="l00060"></a>00060 memmove(dstart + dchunks, dstart, <span class="keyword">sizeof</span>(digit_t) * nlen);
-<a name="l00061"></a>00061 memset(dstart, 0, dchunks * <span class="keyword">sizeof</span>(digit_t));
-<a name="l00062"></a>00062 } <span class="keywordflow">else</span> {
-<a name="l00063"></a>00063 <span class="keyword">set</span>(0);
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 endmod();
-<a name="l00067"></a>00067 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t&amp; data_t::operator&gt;&gt;=(<span class="keywordtype">size_t</span> byBits) {
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (byBits == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <span class="keywordtype">size_t</span> dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit,
-<a name="l00074"></a>00074 bits2 = bits_per_digit - bits;
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 beginmod();
-<a name="l00077"></a>00077 digit_t *tgt = digits();
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (dchunks &lt; length) {
-<a name="l00080"></a>00080 <span class="keywordflow">if</span> (bits != 0) {
-<a name="l00081"></a>00081 <span class="comment">// Handle both bits and dchunks in one pass</span>
-<a name="l00082"></a>00082 <span class="keyword">const</span> digit_t *s = tgt + dchunks, *se = tgt + length - 1;
-<a name="l00083"></a>00083 digit_t *t = tgt;
-<a name="l00084"></a>00084 <span class="keywordflow">while</span> (s != se) {
-<a name="l00085"></a>00085 *t = (*s++ &gt;&gt; bits);
-<a name="l00086"></a>00086 *t++ |= (*s &lt;&lt; bits2);
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088 *t++ = (*s &gt;&gt; bits);
-<a name="l00089"></a>00089 length = (t - tgt);
-<a name="l00090"></a>00090 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dchunks != 0) {
-<a name="l00091"></a>00091 memmove(tgt, tgt + dchunks, <span class="keyword">sizeof</span>(digit_t) * (length - dchunks));
-<a name="l00092"></a>00092 length -= dchunks;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 } <span class="keywordflow">else</span> <span class="keyword">set</span>(0);
-<a name="l00095"></a>00095 endmod();
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a21f7b0cbf5d79162f157c107873db431">operator&lt;&lt;</a>(data_t n, <span class="keywordtype">size_t</span> bits) {
-<a name="l00100"></a>00100 <span class="keywordflow">return</span> (n &lt;&lt;= bits);
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <a class="code" href="internals_8hpp.html#ad98e63b2824264e53b562c9a833ffeab">BOOST_XINT_INLINE</a> data_t <a class="code" href="namespaceboost_1_1xint.html#a177570efda84175d3ea979894f63e5b8">operator&gt;&gt;</a>(data_t n, <span class="keywordtype">size_t</span> bits) {
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> (n &gt;&gt;= bits);
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 } <span class="comment">// namespace detail</span>
-<a name="l00108"></a>00108 } <span class="comment">// namespace xint</span>
-<a name="l00109"></a>00109 } <span class="comment">// namespace boost</span>
-<a name="l00111"></a>00111 <span class="comment"></span>
-<a name="l00112"></a>00112 <span class="preprocessor">#endif // defined(BOOST_XINT_COMPILED_LIB) || defined(BOOST_XINT_FROM_HEADER)</span>
-</pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
-<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/libs/xint/doc/shift_8hpp.html (from r62397, /sandbox/xint/libs/xint/doc/shift_8cpp.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/shift_8cpp.html (original)
+++ sandbox/xint/libs/xint/doc/shift_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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: detail/shift.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: detail/shift.hpp File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -25,20 +25,20 @@
   </div>
 </div>
 <div class="contents">
-<h1>detail/shift.cpp File Reference</h1>
+<h1>detail/shift.hpp File Reference</h1>
 <p>Contains the bit-shifting function definitions.
 <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">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the bit-shifting function definitions. </p>
 <p>This file will be included by the library itself when needed. </p>
 
-<p>Definition in file <a class="el" href="shift_8cpp_source.html">shift.cpp</a>.</p>
+<p>Definition in file <a class="el" href="shift_8hpp_source.html">shift.hpp</a>.</p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/shift_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/libs/xint/doc/shift_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -0,0 +1,133 @@
+<!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: detail/shift.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>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>detail/shift.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_SHIFT_HPP</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_SHIFT_HPP</span>
+<a name="l00022"></a>00022 <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>detail {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 BOOST_XINT_RAWINT_TPL
+<a name="l00029"></a>00029 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator&lt;&lt;=(<span class="keywordtype">size_t</span> byBits) {
+<a name="l00030"></a>00030 <span class="keywordflow">if</span> (byBits == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="comment">// bits/dchunks is distance to move</span>
+<a name="l00033"></a>00033 <span class="keywordtype">size_t</span> dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit;
+<a name="l00034"></a>00034 <span class="keywordtype">size_t</span> anslen = length + dchunks + (bits != 0 ? 1 : 0);
+<a name="l00035"></a>00035 digit_t *dstart = digits(anslen);
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="comment">// nlen is one greater than top source byte to move</span>
+<a name="l00038"></a>00038 <span class="keywordtype">size_t</span> nlen = (std::min)(length, anslen - dchunks - (bits != 0 ? 1 : 0));
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (bits != 0 &amp;&amp; dchunks + 1 &lt; anslen) {
+<a name="l00041"></a>00041 <span class="comment">// Handle both bits and dchunks in one pass</span>
+<a name="l00042"></a>00042 <span class="keyword">const</span> digit_t *s = dstart + nlen - 1;
+<a name="l00043"></a>00043 digit_t *t = dstart + nlen + dchunks, *te = dstart + max_length();
+<a name="l00044"></a>00044 length = (std::min&lt;size_t&gt;)(t - dstart + 1, max_length());
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keywordflow">while</span> (t &gt;= te &amp;&amp; s &gt; dstart) { --t; --s; }
+<a name="l00047"></a>00047 <span class="keywordflow">if</span> (t &lt; te) *t-- = *s &gt;&gt; (bits_per_digit - bits); <span class="keywordflow">else</span> --t;
+<a name="l00048"></a>00048 <span class="keywordflow">while</span> (s &gt; dstart) {
+<a name="l00049"></a>00049 *t = (*s-- &lt;&lt; bits);
+<a name="l00050"></a>00050 *t-- |= (*s &gt;&gt; (bits_per_digit - bits));
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 *t-- = (*s &lt;&lt; bits);
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keywordflow">while</span> (t &gt;= dstart) *t-- = 0;
+<a name="l00055"></a>00055 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dchunks != 0 &amp;&amp; dchunks &lt; anslen) {
+<a name="l00056"></a>00056 length = anslen;
+<a name="l00057"></a>00057 memmove(dstart + dchunks, dstart, <span class="keyword">sizeof</span>(digit_t) * nlen);
+<a name="l00058"></a>00058 memset(dstart, 0, dchunks * <span class="keyword">sizeof</span>(digit_t));
+<a name="l00059"></a>00059 } <span class="keywordflow">else</span> {
+<a name="l00060"></a>00060 <span class="keyword">set</span>(0);
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 trim();
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 BOOST_XINT_RAWINT_TPL
+<a name="l00068"></a>00068 BOOST_XINT_RAWINT&amp; BOOST_XINT_RAWINT::operator&gt;&gt;=(<span class="keywordtype">size_t</span> byBits) {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (byBits == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> dchunks = byBits / bits_per_digit, bits = byBits % bits_per_digit,
+<a name="l00072"></a>00072 bits2 = bits_per_digit - bits;
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 digit_t *tgt = digits(0);
+<a name="l00075"></a>00075 <span class="keywordflow">if</span> (dchunks &lt; length) {
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (bits != 0) {
+<a name="l00077"></a>00077 <span class="comment">// Handle both bits and dchunks in one pass</span>
+<a name="l00078"></a>00078 <span class="keyword">const</span> digit_t *s = tgt + dchunks, *se = tgt + length - 1;
+<a name="l00079"></a>00079 digit_t *t = tgt;
+<a name="l00080"></a>00080 <span class="keywordflow">while</span> (s != se) {
+<a name="l00081"></a>00081 *t = (*s++ &gt;&gt; bits);
+<a name="l00082"></a>00082 *t++ |= (*s &lt;&lt; bits2);
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084 *t++ = (*s &gt;&gt; bits);
+<a name="l00085"></a>00085 length = (t - tgt);
+<a name="l00086"></a>00086 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dchunks != 0) {
+<a name="l00087"></a>00087 memmove(tgt, tgt + dchunks, <span class="keyword">sizeof</span>(digit_t) * (length - dchunks));
+<a name="l00088"></a>00088 length -= dchunks;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 } <span class="keywordflow">else</span> <span class="keyword">set</span>(0);
+<a name="l00091"></a>00091 trim();
+<a name="l00092"></a>00092 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00093"></a>00093 }
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 BOOST_XINT_RAWINT_TPL
+<a name="l00096"></a>00096 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#a678851ea0cb31cb4ef66bc8389d369d3">operator&lt;&lt;</a>(BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> bits) {
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> (n &lt;&lt;= bits);
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 BOOST_XINT_RAWINT_TPL
+<a name="l00101"></a>00101 BOOST_XINT_RAWINT <a class="code" href="namespaceboost_1_1xint.html#ad5bc89da790a0843ba90a88cbc7856a6">operator&gt;&gt;</a>(BOOST_XINT_RAWINT n, <span class="keywordtype">size_t</span> bits) {
+<a name="l00102"></a>00102 <span class="keywordflow">return</span> (n &gt;&gt;= bits);
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 } <span class="comment">// namespace detail</span>
+<a name="l00106"></a>00106 } <span class="comment">// namespace xint</span>
+<a name="l00107"></a>00107 } <span class="comment">// namespace boost</span>
+<a name="l00109"></a>00109 <span class="comment"></span>
+<a name="l00110"></a>00110 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_SHIFT_HPP</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
+<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/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::fixedlength&lt; Bits &gt; Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,33 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength.html">fixedlength</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::fixedlength&lt; Bits &gt; Struct Template Reference</h1><!-- doxytag: class="boost::xint::options::fixedlength" --><!-- doxytag: inherits="boost::xint::options::fixedlength_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::fixedlength&lt; Bits &gt;:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1fixedlength.png" usemap="#boost::xint::options::fixedlength&lt; Bits &gt;_map" alt=""/>
+ <map id="boost::xint::options::fixedlength&lt; Bits &gt;_map" name="boost::xint::options::fixedlength&lt; Bits &gt;_map">
+<area href="structboost_1_1xint_1_1options_1_1fixedlength__base.html" alt="boost::xint::options::fixedlength_base" shape="rect" coords="0,0,224,24"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
+<h3>template&lt;bitsize_t Bits&gt;<br/>
+ struct boost::xint::options::fixedlength&lt; Bits &gt;</h3>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00043">43</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength.png
==============================================================================
Binary file. No diff available.

Copied: sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength__base.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength__base.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::fixedlength_base Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,30 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1fixedlength__base.html">fixedlength_base</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::fixedlength_base Struct Reference</h1><!-- doxytag: class="boost::xint::options::fixedlength_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::fixedlength_base:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1fixedlength__base.png" usemap="#boost::xint::options::fixedlength_base_map" alt=""/>
+ <map id="boost::xint::options::fixedlength_base_map" name="boost::xint::options::fixedlength_base_map">
+<area href="structboost_1_1xint_1_1options_1_1fixedlength.html" alt="boost::xint::options::fixedlength&lt; Bits &gt;" shape="rect" coords="0,56,224,80"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00038">38</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1fixedlength__base.png
==============================================================================
Binary file. No diff available.

Copied: sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::nothrow&lt; Value &gt; Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,33 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1nothrow.html">nothrow</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::nothrow&lt; Value &gt; Struct Template Reference</h1><!-- doxytag: class="boost::xint::options::nothrow" --><!-- doxytag: inherits="boost::xint::options::nothrow_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::nothrow&lt; Value &gt;:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1nothrow.png" usemap="#boost::xint::options::nothrow&lt; Value &gt;_map" alt=""/>
+ <map id="boost::xint::options::nothrow&lt; Value &gt;_map" name="boost::xint::options::nothrow&lt; Value &gt;_map">
+<area href="structboost_1_1xint_1_1options_1_1nothrow__base.html" alt="boost::xint::options::nothrow_base" shape="rect" coords="0,0,221,24"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
+<h3>template&lt;bool Value&gt;<br/>
+ struct boost::xint::options::nothrow&lt; Value &gt;</h3>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00049">49</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow.png
==============================================================================
Binary file. No diff available.

Copied: sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow__base.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow__base.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::nothrow_base Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,30 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1nothrow__base.html">nothrow_base</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::nothrow_base Struct Reference</h1><!-- doxytag: class="boost::xint::options::nothrow_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::nothrow_base:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1nothrow__base.png" usemap="#boost::xint::options::nothrow_base_map" alt=""/>
+ <map id="boost::xint::options::nothrow_base_map" name="boost::xint::options::nothrow_base_map">
+<area href="structboost_1_1xint_1_1options_1_1nothrow.html" alt="boost::xint::options::nothrow&lt; Value &gt;" shape="rect" coords="0,56,221,80"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00041">41</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1nothrow__base.png
==============================================================================
Binary file. No diff available.

Copied: sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::secure&lt; Value &gt; Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,33 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1secure.html">secure</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::secure&lt; Value &gt; Struct Template Reference</h1><!-- doxytag: class="boost::xint::options::secure" --><!-- doxytag: inherits="boost::xint::options::secure_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::secure&lt; Value &gt;:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1secure.png" usemap="#boost::xint::options::secure&lt; Value &gt;_map" alt=""/>
+ <map id="boost::xint::options::secure&lt; Value &gt;_map" name="boost::xint::options::secure&lt; Value &gt;_map">
+<area href="structboost_1_1xint_1_1options_1_1secure__base.html" alt="boost::xint::options::secure_base" shape="rect" coords="0,0,215,24"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
+<h3>template&lt;bool Value&gt;<br/>
+ struct boost::xint::options::secure&lt; Value &gt;</h3>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00047">47</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure.png
==============================================================================
Binary file. No diff available.

Copied: sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure__base.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure__base.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::secure_base Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,30 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1secure__base.html">secure_base</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::secure_base Struct Reference</h1><!-- doxytag: class="boost::xint::options::secure_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::secure_base:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1secure__base.png" usemap="#boost::xint::options::secure_base_map" alt=""/>
+ <map id="boost::xint::options::secure_base_map" name="boost::xint::options::secure_base_map">
+<area href="structboost_1_1xint_1_1options_1_1secure.html" alt="boost::xint::options::secure&lt; Value &gt;" shape="rect" coords="0,56,215,80"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00040">40</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1secure__base.png
==============================================================================
Binary file. No diff available.

Copied: sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::threadsafe&lt; Value &gt; Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,33 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe.html">threadsafe</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::threadsafe&lt; Value &gt; Struct Template Reference</h1><!-- doxytag: class="boost::xint::options::threadsafe" --><!-- doxytag: inherits="boost::xint::options::threadsafe_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::threadsafe&lt; Value &gt;:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1threadsafe.png" usemap="#boost::xint::options::threadsafe&lt; Value &gt;_map" alt=""/>
+ <map id="boost::xint::options::threadsafe&lt; Value &gt;_map" name="boost::xint::options::threadsafe&lt; Value &gt;_map">
+<area href="structboost_1_1xint_1_1options_1_1threadsafe__base.html" alt="boost::xint::options::threadsafe_base" shape="rect" coords="0,0,236,24"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
+<h3>template&lt;bool Value&gt;<br/>
+ struct boost::xint::options::threadsafe&lt; Value &gt;</h3>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00045">45</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe.png
==============================================================================
Binary file. No diff available.

Copied: sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe__base.html (from r62397, /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html)
==============================================================================
--- /sandbox/xint/libs/xint/doc/classboost_1_1xint_1_1any__integer.html (original)
+++ sandbox/xint/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe__base.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 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::any_integer Class Reference</title>
+<title>The Extended Integer (XInt) Library: boost::xint::options::threadsafe_base Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -24,36 +24,30 @@
       <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_1any__integer.html">any_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="namespaceboost_1_1xint_1_1options.html">options</a>::<a class="el" href="structboost_1_1xint_1_1options_1_1threadsafe__base.html">threadsafe_base</a>
   </div>
 </div>
 <div class="contents">
-<h1>boost::xint::any_integer Class Reference</h1><!-- doxytag: class="boost::xint::any_integer" -->
-<p>A base class for all integer types.
-More...</p>
-<div class="dynheader">
-Inheritance diagram for boost::xint::any_integer:</div>
+<h1>boost::xint::options::threadsafe_base Struct Reference</h1><!-- doxytag: class="boost::xint::options::threadsafe_base" --><div class="dynheader">
+Inheritance diagram for boost::xint::options::threadsafe_base:</div>
 <div class="dynsection">
  <div class="center">
- <img src="classboost_1_1xint_1_1any__integer.png" usemap="#boost::xint::any_integer_map" alt=""/>
- <map id="boost::xint::any_integer_map" name="boost::xint::any_integer_map">
-<area href="classboost_1_1xint_1_1fixed__integer.html" alt="boost::xint::fixed_integer&lt;&gt;" shape="rect" coords="0,56,188,80"/>
-<area href="classboost_1_1xint_1_1integer__t.html" alt="boost::xint::integer_t&lt;&gt;" shape="rect" coords="198,56,386,80"/>
-<area href="classboost_1_1xint_1_1nothrow__integer__t.html" alt="boost::xint::nothrow_integer_t&lt;&gt;" shape="rect" coords="396,56,584,80"/>
+ <img src="structboost_1_1xint_1_1options_1_1threadsafe__base.png" usemap="#boost::xint::options::threadsafe_base_map" alt=""/>
+ <map id="boost::xint::options::threadsafe_base_map" name="boost::xint::options::threadsafe_base_map">
+<area href="structboost_1_1xint_1_1options_1_1threadsafe.html" alt="boost::xint::options::threadsafe&lt; Value &gt;" shape="rect" coords="0,56,236,80"/>
 </map>
  </div>
 </div>
 <table border="0" cellpadding="0" cellspacing="0">
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A base class for all integer types. </p>
 
-<p>Definition at line <a class="el" href="internals_8hpp_source.html#l00609">609</a> of file <a class="el" href="internals_8hpp_source.html">internals.hpp</a>.</p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>detail/<a class="el" href="internals_8hpp_source.html">internals.hpp</a></li>
+<p>Definition at line <a class="el" href="options_8hpp_source.html#l00039">39</a> of file <a class="el" href="options_8hpp_source.html">options.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>detail/<a class="el" href="options_8hpp_source.html">options.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/structboost_1_1xint_1_1options_1_1threadsafe__base.png
==============================================================================
Binary file. No diff available.

Modified: sandbox/xint/libs/xint/doc/testing.html
==============================================================================
--- sandbox/xint/libs/xint/doc/testing.html (original)
+++ sandbox/xint/libs/xint/doc/testing.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -23,10 +23,10 @@
 <div class="contents">
 
 
-<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>
+<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>libs/xint/test</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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/testing_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/testing_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/testing_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/threadsafe.html
==============================================================================
--- sandbox/xint/libs/xint/doc/threadsafe.html (original)
+++ sandbox/xint/libs/xint/doc/threadsafe.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -2,12 +2,12 @@
 <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: The \c Threadsafe Template Parameter</title>
+<title>The Extended Integer (XInt) Library: The \c threadsafe Template Parameter</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 -->
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
@@ -23,11 +23,11 @@
 <div class="contents">
 
 
-<h1><a class="anchor" id="threadsafe">The <code>Threadsafe</code> Template Parameter </a></h1><p>The <code>Threadsafe</code> parameter, on the integer_t, nothrow_integer_t, and fixed_integer templates, controls the copy-on-write behavior of the program. When set to <code>false</code>, identical integer objects are allowed to share storage, which is more efficient for both CPU power and memory, but which is generally not safe for multithreaded programs.</p>
+<h1><a class="anchor" id="threadsafe">The <code>threadsafe</code> Template Parameter </a></h1><p>The <code>threadsafe</code> parameter on the integer_t template controls the copy-on-write behavior of the program. When set to <code>false</code>, identical integer objects are allowed to share storage, which is more efficient for both CPU power and memory, but which is generally unsafe for multithreaded programs.</p>
 <p>That's a simplification though. The only problem multithreaded programs have with copy-on-write is that one thread might change an object while another is reading from it. Since the copy-on-write behavior is entirely internal to the class, no other code can tell when it's safe to make changes to an object. This is only a problem when more than one thread can access a specific object. So long as an integer object is only accessed from the thread that it's created in, there's no danger.</p>
-<p>If you want the speed of copy-on-write (which can be noticeable if you're dealing with very large numbers), but need to use integer objects from multiple threads when one or more might alter them, you can use the <code>force_thread_safety</code> parameter on the object's copy constructor to make a duplicate of an object with its own unique storage, even if the <code>Threadsafe</code> template parameter is <code>false</code>. You'll only need to do that when crossing thread boundaries. </p>
+<p>If you want the speed of copy-on-write (which can be noticeable if you're dealing with very large numbers), but need to use integer objects from multiple threads when one or more might alter them, you can use the <code>force_thread_safety</code> parameter on the object's copy constructor to make a duplicate of an object with its own unique storage, even if the <code>threadsafe</code> template parameter is <code>false</code>. You'll only need to do that when the integer object is crossing thread boundaries. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/threadsafe_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/threadsafe_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/threadsafe_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/xint_8hpp.html
==============================================================================
--- sandbox/xint/libs/xint/doc/xint_8hpp.html (original)
+++ sandbox/xint/libs/xint/doc/xint_8hpp.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -37,7 +37,7 @@
 
 <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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/xint_8hpp_source.html
==============================================================================
--- sandbox/xint/libs/xint/doc/xint_8hpp_source.html (original)
+++ sandbox/xint/libs/xint/doc/xint_8hpp_source.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -39,15 +39,13 @@
 <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 &quot;<a class="code" href="integer_8hpp.html" title="Declares the arbitrary-length integer type.">integer.hpp</a>&quot;</span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="nothrow__integer_8hpp.html" title="Declares the xint::nothrow_integer class.">nothrow_integer.hpp</a>&quot;</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;<a class="code" href="fixed__integer_8hpp.html" title="Declares the fixed-size integer type.">fixed_integer.hpp</a>&quot;</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;<a class="code" href="random_8hpp.html" title="Declares items relating to random numbers.">random.hpp</a>&quot;</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include &quot;<a class="code" href="exceptions_8hpp.html" title="The exception namespace.">exceptions.hpp</a>&quot;</span>
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_HPP</span>
+<a name="l00021"></a>00021 <span class="comment">// Everything is presently included by including integer.hpp. This file is</span>
+<a name="l00022"></a>00022 <span class="comment">// provided for future expansion.</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;<a class="code" href="integer_8hpp.html" title="Declares the arbitrary-length integer type.">integer.hpp</a>&quot;</span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_HPP</span>
 </pre></div></div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/zero.html
==============================================================================
--- sandbox/xint/libs/xint/doc/zero.html (original)
+++ sandbox/xint/libs/xint/doc/zero.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -30,7 +30,7 @@
 </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__t.html#aa278c48753019fe3deaa623eecdb16b3">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 is the only function that will ever return a negative zero. </p>
 </div>
-<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:08 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/doc/zero_8dox.html
==============================================================================
--- sandbox/xint/libs/xint/doc/zero_8dox.html (original)
+++ sandbox/xint/libs/xint/doc/zero_8dox.html 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -28,7 +28,7 @@
 <h1>/home/chad/projects/xint/libs/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 Thu Jun 3 00:00:36 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Jun 12 11:43:07 2010 for The Extended Integer (XInt) Library by&nbsp;
 <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/libs/xint/example/exceptions.cpp
==============================================================================
--- sandbox/xint/libs/xint/example/exceptions.cpp (original)
+++ sandbox/xint/libs/xint/example/exceptions.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -1,5 +1,5 @@
 
-#include <boost/xint/xint.hpp>
+#include <boost/xint/integer.hpp>
 #include <ostream>
 
 int main() {

Modified: sandbox/xint/libs/xint/example/fibonacci.cpp
==============================================================================
--- sandbox/xint/libs/xint/example/fibonacci.cpp (original)
+++ sandbox/xint/libs/xint/example/fibonacci.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -1,5 +1,5 @@
 #include <iostream>
-#include <boost/xint/xint.hpp>
+#include <boost/xint/integer.hpp>
 
 int main() {
     using namespace boost::xint;

Modified: sandbox/xint/libs/xint/example/genprime.cpp
==============================================================================
--- sandbox/xint/libs/xint/example/genprime.cpp (original)
+++ sandbox/xint/libs/xint/example/genprime.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -1,5 +1,5 @@
 #include <iostream>
-#include <boost/xint/xint.hpp>
+#include <boost/xint/integer.hpp>
 
 bool callback() {
     std::cout << '.' << std::flush;
@@ -12,7 +12,7 @@
     using namespace boost;
     using namespace xint;
 
- const unsigned int bits=512;
+ const unsigned int bits = 512;
 
     try {
         // Use the system's strong random number generator, via the XInt-

Modified: sandbox/xint/libs/xint/test/Jamfile
==============================================================================
--- sandbox/xint/libs/xint/test/Jamfile (original)
+++ sandbox/xint/libs/xint/test/Jamfile 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -1,8 +1,6 @@
 project xint/test
     : requirements
         <toolset>gcc:<cflags>-fno-strict-aliasing
-
- <library>../build//boost_xint
         <library>/boost/test//boost_unit_test_framework
     ;
 

Modified: sandbox/xint/libs/xint/test/test_add.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_add.cpp (original)
+++ sandbox/xint/libs/xint/test/test_add.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,8 +12,6 @@
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/fixed_integer.hpp>
-#include <boost/xint/random.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -28,12 +26,13 @@
 using std::endl;
 using std::dec;
 using std::hex;
+namespace xopts = boost::xint::options;
 
 namespace {
 
 void _test(int section, int test, integer n, integer m) {
- integer answer(m+n);
- if (answer-m != n || answer-n != m) {
+ integer answer(m + n);
+ if (answer - m != n || answer - n != m) {
         std::ostringstream out;
         out << "testAddSubtract, section " << section << ", " << test << endl;
 
@@ -142,16 +141,17 @@
     BOOST_CHECK_EQUAL(++negative_one, 0);
 
     integer max1(detail::digit_mask);
- BOOST_CHECK_EQUAL(++max1, detail::digit_overflowbit);
+ BOOST_CHECK_EQUAL(++max1, integer(detail::digit_overflowbit));
 }
 
 BOOST_AUTO_TEST_CASE(test_increment_fixed) {
- fixed_integer<detail::bits_per_digit> one(1), zero(0), negative_one(-1);
+ typedef integer_t<xopts::fixedlength<detail::bits_per_digit> > T;
+ T one(1), zero(0), negative_one(-1);
     BOOST_CHECK_EQUAL(++one, 2);
     BOOST_CHECK_EQUAL(++zero, 1);
     BOOST_CHECK_EQUAL(++negative_one, 0);
 
- fixed_integer<detail::bits_per_digit> max1(detail::digit_mask);
+ T max1(detail::digit_mask);
     BOOST_CHECK_EQUAL(++max1, 0);
 }
 
@@ -167,7 +167,7 @@
 }
 
 BOOST_AUTO_TEST_CASE(test_decrement_fixed) {
- typedef fixed_integer<detail::bits_per_digit> T;
+ typedef integer_t<xopts::fixedlength<detail::bits_per_digit> > T;
     T one(1), zero(0), negative_one(-1);
     BOOST_CHECK_EQUAL(--one, 0);
     BOOST_CHECK_EQUAL(--zero, -1);

Modified: sandbox/xint/libs/xint/test/test_bit_manipulations.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_bit_manipulations.cpp (original)
+++ sandbox/xint/libs/xint/test/test_bit_manipulations.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,7 +12,6 @@
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/fixed_integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -26,6 +25,7 @@
 namespace xint {
 
 using std::hex;
+using namespace boost::xint::options;
 
 BOOST_AUTO_TEST_CASE(test_unfixed_bit_shifting) {
     const std::string nSrc="1a2b3c4d5e6f7f6e5d4c3b2a1a2b3c4d5e6f7f6e5d4c3b2a1";
@@ -84,7 +84,8 @@
 
 BOOST_AUTO_TEST_CASE(test_fixed_bit_shifting) {
     const std::string nSrc="1a2b3c4d5e6f7f6e5d4c3b2a1";
- fixed_integer<100> n(nSrc, 16), n2;
+ typedef integer_t<fixedlength<100> > integer100;
+ integer100 n(nSrc, 16), n2;
 
     // If this fails, abort the rest of the test.
     BOOST_REQUIRE_EQUAL(to_string(n, 16), nSrc);
@@ -152,7 +153,8 @@
     BOOST_CHECK_EQUAL(lowestbit(n, 0), 4);
     BOOST_CHECK_EQUAL(highestbit(n, 0), 117);
 
- fixed_integer<12> nn(0xABC), mm(0x123);
+ typedef integer_t<fixedlength<12> > integer12;
+ integer12 nn(0xABC), mm(0x123);
     BOOST_CHECK_EQUAL(mm | nn, 0xBBF);
     BOOST_CHECK_EQUAL(mm ^ nn, 0xB9F);
     BOOST_CHECK_EQUAL(mm & nn, 0x20);

Modified: sandbox/xint/libs/xint/test/test_compare.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_compare.cpp (original)
+++ sandbox/xint/libs/xint/test/test_compare.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -16,7 +16,6 @@
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/fixed_integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -26,6 +25,10 @@
 namespace boost {
 namespace xint {
 
+using namespace boost::xint::options;
+typedef integer_t<fixedlength<8> > integer8;
+typedef integer_t<fixedlength<12> > integer12;
+
 BOOST_AUTO_TEST_CASE(test_compare_zero) {
     integer zero(0), one(1), negative_one(-1);
     BOOST_CHECK_EQUAL(zero, zero);
@@ -57,16 +60,16 @@
 }
 
 BOOST_AUTO_TEST_CASE(test_compare_fixed_overflow) {
- BOOST_CHECK_GT(fixed_integer<8>(255), 256);
- BOOST_CHECK_LT(fixed_integer<8>(-255), -256);
- BOOST_CHECK_LT(256, fixed_integer<8>(255));
- BOOST_CHECK_GT(-256, fixed_integer<8>(-255));
+ BOOST_CHECK_GT(integer8(255), 256);
+ BOOST_CHECK_LT(integer8(-255), -256);
+ BOOST_CHECK_LT(256, integer8(255));
+ BOOST_CHECK_GT(-256, integer8(-255));
 }
 
 BOOST_AUTO_TEST_CASE(test_compare_fixed_different_sizes) {
- fixed_integer<12> i1(0x890);
- fixed_integer<8> i2(0xA0);
- BOOST_CHECK_GT(i1, fixed_integer<12>(i2));
+ integer12 i1(0x890);
+ integer8 i2(0xA0);
+ BOOST_CHECK_GT(i1, integer12(i2));
 }
 
 } // namespace xint

Modified: sandbox/xint/libs/xint/test/test_convert.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_convert.cpp (original)
+++ sandbox/xint/libs/xint/test/test_convert.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,8 +12,6 @@
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/nothrow_integer.hpp>
-#include <boost/xint/fixed_integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -27,6 +25,7 @@
 #include <boost/assign/list_of.hpp>
 
 using std::endl;
+namespace xopts = boost::xint::options;
 
 namespace boost {
 namespace xint {
@@ -43,13 +42,13 @@
 
     // Make sure that the number is greater than one digit's worth of data, and
     // that it has at least one leading zero in base 16.
- detail::digit_t mask=(detail::doubledigit_t(0x0F) << (detail::bits_per_digit
- - 4));
+ detail::digit_t mask = (detail::doubledigit_t(0x0F) <<
+ (detail::bits_per_digit - 4));
     BOOST_REQUIRE_GT(n._get_length(), size_t(1));
     BOOST_REQUIRE_EQUAL(n._get_digit(n._get_length()-1) & mask, 0);
 
- for (int base=2; base<=36; ++base) {
- std::string s=to_string(n, base);
+ for (int base = 2; base <= 36; ++base) {
+ std::string s = to_string(n, base);
         integer nn(s, base);
         if (nn != n) {
             std::ostringstream out;
@@ -59,7 +58,7 @@
         }
 
         // Shouldn't be any extraneous leading zeros
- if (s[0]=='0') {
+ if (s[0] == '0') {
             std::ostringstream out;
             out << "testConvert 2, " << base << ": " << s << endl;
             BOOST_ERROR(out.str());
@@ -76,13 +75,13 @@
     }
 
     // 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();
+ 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), exceptions::invalid_base);
 
     boost::int32_t nSrc = 1234567890;
- n=nSrc;
+ n = nSrc;
     boost::int32_t nTgt = to<boost::int32_t>(n);
     BOOST_CHECK_EQUAL(nTgt, nSrc);
 
@@ -95,7 +94,7 @@
         nothrow_integer test1 = nothrow_integer::nan();
         std::ostringstream outstream;
         outstream << test1;
- BOOST_CHECK_EQUAL(outstream.str(), nothrow_integer::_nan_text());
+ BOOST_CHECK_EQUAL(outstream.str(), nan_text);
 
         std::istringstream instream;
         instream.str(outstream.str());
@@ -121,7 +120,8 @@
     integer n2 = integer(nbin);
     BOOST_CHECK_EQUAL(n1, n2);
 
- fixed_integer<8> n3 = fixed_integer<8>(nbin);
+ typedef integer_t<xopts::fixedlength<8> > integer8;
+ integer8 n3 = integer8(nbin);
     BOOST_CHECK_EQUAL(n3, 0xb1);
 
     nbin = to_binary(n1, 5);

Modified: sandbox/xint/libs/xint/test/test_fixed.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_fixed.cpp (original)
+++ sandbox/xint/libs/xint/test/test_fixed.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,12 +12,10 @@
 */
 
 /*! \file
- \brief Contains tests for the fixed_integer type's initializations.
+ \brief Contains tests for the integer_t type's initializations.
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/nothrow_integer.hpp>
-#include <boost/xint/fixed_integer.hpp>
 
 #include <iomanip>
 
@@ -33,70 +31,49 @@
 namespace boost {
 namespace xint {
 
-BOOST_AUTO_TEST_CASE(test_numeric_limits) {
- BOOST_CHECK_EQUAL(std::numeric_limits<fixed_integer<8> >::digits10,
- std::numeric_limits<boost::uint8_t>::digits10);
- BOOST_CHECK_EQUAL(std::numeric_limits<fixed_integer<16> >::digits10,
- std::numeric_limits<boost::uint16_t>::digits10);
- BOOST_CHECK_EQUAL(std::numeric_limits<fixed_integer<32> >::digits10,
- std::numeric_limits<boost::uint32_t>::digits10);
-
- const size_t maxbits = std::numeric_limits<boost::uintmax_t>::digits;
- BOOST_CHECK_EQUAL(std::numeric_limits<fixed_integer<maxbits> >::digits10,
- std::numeric_limits<boost::uintmax_t>::digits10);
-
- const size_t bits = detail::bits_per_digit + (detail::bits_per_digit / 2);
- typedef fixed_integer<bits> T; // Digit-and-a-half
- const size_t digits10 = std::numeric_limits<T>::digits10;
-
- T n(1);
- for (size_t i = 0; i < digits10; ++i) n *= 10;
-
- T n2(n * 10);
- integer check(n);
- check *= 10;
-
- BOOST_CHECK_NE(integer(n2), check); // n2 should be truncated to a smaller number
-}
+using namespace boost::xint::options;
+typedef integer_t<fixedlength<8> > integer8;
+typedef integer_t<fixedlength<12> > integer12;
+typedef integer_t<fixedlength<100> > integer100;
 
 BOOST_AUTO_TEST_CASE(test_digit_mask) {
- // See whether the mask is correct at the boundaries.
- {
- const size_t bits = detail::bits_per_digit - 1;
- typedef fixed_integer<bits> T;
- detail::doubledigit_t t1 = (detail::doubledigit_t(1) << bits) - 1;
- T t(detail::doubledigit_t(0) - 1);
- detail::doubledigit_t t2 = to<detail::doubledigit_t>(t);
- BOOST_CHECK_EQUAL(t1, t2);
- }
-
- {
- const size_t bits = detail::bits_per_digit;
- typedef fixed_integer<bits> T;
- detail::doubledigit_t t1 = (detail::doubledigit_t(1) << bits) - 1;
- T t(detail::doubledigit_t(0) - 1);
- detail::doubledigit_t t2 = to<detail::doubledigit_t>(t);
- BOOST_CHECK_EQUAL(t1, t2);
- }
-
- {
- const size_t bits = detail::bits_per_digit + 1;
- typedef fixed_integer<bits> T;
- detail::doubledigit_t t1 = (detail::doubledigit_t(1) << bits) - 1;
- T t(detail::doubledigit_t(0) - 1);
- detail::doubledigit_t t2 = to<detail::doubledigit_t>(t);
- BOOST_CHECK_EQUAL(t1, t2);
- }
+ // See whether the mask is correct at the boundaries.
+ {
+ const size_t bits = detail::bits_per_digit - 1;
+ typedef integer_t<fixedlength<bits> > T;
+ detail::doubledigit_t t1 = (detail::doubledigit_t(1) << bits) - 1;
+ T t(detail::doubledigit_t(0) - 1);
+ detail::doubledigit_t t2 = to<detail::doubledigit_t>(t);
+ BOOST_CHECK_EQUAL(t1, t2);
+ }
+
+ {
+ const size_t bits = detail::bits_per_digit;
+ typedef integer_t<fixedlength<bits> > T;
+ detail::doubledigit_t t1 = (detail::doubledigit_t(1) << bits) - 1;
+ T t(detail::doubledigit_t(0) - 1);
+ detail::doubledigit_t t2 = to<detail::doubledigit_t>(t);
+ BOOST_CHECK_EQUAL(t1, t2);
+ }
+
+ {
+ const size_t bits = detail::bits_per_digit + 1;
+ typedef integer_t<fixedlength<bits> > T;
+ detail::doubledigit_t t1 = (detail::doubledigit_t(1) << bits) - 1;
+ T t(detail::doubledigit_t(0) - 1);
+ detail::doubledigit_t t2 = to<detail::doubledigit_t>(t);
+ BOOST_CHECK_EQUAL(t1, t2);
+ }
 }
 
 BOOST_AUTO_TEST_CASE(test_fixed_from_nan) {
- typedef fixed_integer<12> T;
+ typedef integer12 T;
     BOOST_CHECK_THROW(T i(nothrow_integer::nan()), exceptions::not_a_number);
 }
 
 BOOST_AUTO_TEST_CASE(test_fixed_from_string) {
     integer src("0x12345678901234567890", autobase);
- typedef fixed_integer<12> T;
+ typedef integer12 T;
     T i(src);
     BOOST_CHECK_EQUAL(i, 0x890);
 }
@@ -106,9 +83,8 @@
     const std::string trimmed("0x6789012345678901234567890");
     integer src(original, autobase);
 
- typedef fixed_integer<100> T;
+ typedef integer100 T;
     T i(src);
- BOOST_CHECK(i._is_fixed());
 
     output_test_stream output;
     output << hex << showbase << i;
@@ -120,8 +96,8 @@
 
 BOOST_AUTO_TEST_CASE(test_fixed_from_fixed) {
     const std::string original("0x123456789012345678901234567890");
- typedef fixed_integer<12> T12;
- typedef fixed_integer<100> T100;
+ typedef integer12 T12;
+ typedef integer100 T100;
 
     T100 original_int(original, autobase);
     T12 smaller(original_int);
@@ -133,14 +109,13 @@
 }
 
 BOOST_AUTO_TEST_CASE(test_integer_from_fixed) {
- fixed_integer<12> n(0x890);
+ integer12 n(0x890);
     integer i(n);
     BOOST_CHECK_EQUAL(i, 0x890);
- BOOST_CHECK(!i._is_fixed());
 }
 
 BOOST_AUTO_TEST_CASE(test_unary_operators) {
- fixed_integer<8> zero(0), one(1);
+ integer8 zero(0), one(1);
     BOOST_CHECK_EQUAL(!zero, true);
     BOOST_CHECK_EQUAL(!one, false);
 
@@ -148,15 +123,15 @@
     BOOST_CHECK_EQUAL(-one, -1);
 
     const size_t bits = detail::bits_per_digit + (detail::bits_per_digit / 2);
- typedef fixed_integer<bits> T; // Digit-and-a-half
- boost::uintmax_t src=0x12345678;
+ typedef integer_t<fixedlength<bits> > T; // Digit-and-a-half
+ boost::uintmax_t src = 0x12345678;
     T t(src);
     BOOST_CHECK_EQUAL(~t, T(~src));
 }
 
 BOOST_AUTO_TEST_CASE(test_fixed_add_subtract) {
     const size_t bits = detail::bits_per_digit + (detail::bits_per_digit / 2);
- typedef fixed_integer<bits> T; // Digit-and-a-half
+ typedef integer_t<fixedlength<bits> > T; // Digit-and-a-half
 
     T n1(detail::digit_mask), n2;
     n2 = n1;
@@ -168,7 +143,7 @@
     integer check = (integer(n1) + integer(n2)) & (integer::pow2(bits) - 1);
     BOOST_CHECK_EQUAL(integer(n3), check);
 
- typedef fixed_integer<8> T8;
+ typedef integer8 T8;
     T8 n4 = T8(-255) - 2;
     BOOST_CHECK_EQUAL(n4, -1);
 

Modified: sandbox/xint/libs/xint/test/test_main.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_main.cpp (original)
+++ sandbox/xint/libs/xint/test/test_main.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -17,12 +17,11 @@
     writing them or in production.
 */
 
-#include <boost/xint/xint.hpp>
-
 //#define CUSTOM_TEST
 //#define PERFORMANCE_TEST
 
 #if defined PERFORMANCE_TEST
+ #include <boost/xint/xint.hpp>
     #include <iostream>
     #include <iomanip>
 
@@ -87,11 +86,19 @@
 #elif defined CUSTOM_TEST
     #include <iostream>
     #include <iomanip>
+ #include <boost/xint/integer.hpp>
 
     // For running one-off tests
     int main() {
         using namespace std;
         using namespace boost::xint;
+ namespace xopts = boost::xint::options;
+
+ typedef integer_t<std::allocator<detail::digit_t>,
+ xopts::threadsafe<false>, xopts::fixedlength<12>,
+ xopts::secure<true> >::type T;
+ T::type t(0xFFFF);
+ cout << hex << t << endl;
     }
 #else
     #define BOOST_TEST_MAIN

Modified: sandbox/xint/libs/xint/test/test_misc.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_misc.cpp (original)
+++ sandbox/xint/libs/xint/test/test_misc.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -15,7 +15,7 @@
     \brief Contains tests that don't fit elsewhere.
 */
 
-#include <boost/xint/xint.hpp>
+#include <boost/xint/integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -25,10 +25,16 @@
 namespace boost {
 namespace xint {
 
+using namespace boost::xint::options;
+typedef integer_t<fixedlength<8> > integer8;
+typedef integer_t<fixedlength<16> > integer16;
+typedef integer_t<fixedlength<32> > integer32;
+
 BOOST_AUTO_TEST_CASE(test_log2) {
     // Check the detail::log2 template functions, unsigned and signed
     unsigned int u = (1 << (std::numeric_limits<unsigned int>::digits - 1));
- BOOST_CHECK_EQUAL(detail::log2(u), std::numeric_limits<unsigned int>::digits);
+ BOOST_CHECK_EQUAL(detail::log2(u), std::numeric_limits<unsigned
+ int>::digits);
     int s = (1 << (std::numeric_limits<int>::digits - 1));
     BOOST_CHECK_EQUAL(detail::log2(s), std::numeric_limits<int>::digits);
 
@@ -48,12 +54,12 @@
     integer n("47c45018f2f6e19dfbf4190c66d2bd306010261f", 16),
             m("2b6a501cd0b26e1dfd70918455621257ac2c697a", 16);
     BOOST_CHECK_EQUAL(gcd(n, m), 1);
- BOOST_CHECK_EQUAL(gcd(n*127, m*127), 127);
+ BOOST_CHECK_EQUAL(gcd(n * 127, m * 127), 127);
 }
 
 BOOST_AUTO_TEST_CASE(test_lcm) {
     integer n(1307), m(1663), q(3571); // Arbitrarily-selected prime numbers
- BOOST_CHECK_EQUAL(lcm(n*q, m*q), n*m*q);
+ BOOST_CHECK_EQUAL(lcm(n * q, m * q), n * m * q);
 }
 
 BOOST_AUTO_TEST_CASE(test_is_prime) {
@@ -64,5 +70,60 @@
     BOOST_CHECK(is_prime(integer("6404588797")));
 }
 
+BOOST_AUTO_TEST_CASE(test_numeric_limits) {
+ BOOST_CHECK_EQUAL(std::numeric_limits<integer>::digits, 0);
+ BOOST_CHECK_EQUAL(std::numeric_limits<integer>::digits10, 0);
+
+ // Fixed-length integers
+
+ BOOST_CHECK_EQUAL(std::numeric_limits<integer8>::digits,
+ std::numeric_limits<boost::uint8_t>::digits);
+ BOOST_CHECK_EQUAL(std::numeric_limits<integer8>::digits10,
+ std::numeric_limits<boost::uint8_t>::digits10);
+
+ BOOST_CHECK_EQUAL(std::numeric_limits<integer16>::digits10,
+ std::numeric_limits<boost::uint16_t>::digits10);
+ BOOST_CHECK_EQUAL(std::numeric_limits<integer32>::digits10,
+ std::numeric_limits<boost::uint32_t>::digits10);
+
+ const size_t maxbits = std::numeric_limits<boost::uintmax_t>::digits;
+ BOOST_CHECK_EQUAL(std::numeric_limits<integer_t<fixedlength<maxbits>
+ > >::digits10, std::numeric_limits<boost::uintmax_t>::digits10);
+
+ {
+ const size_t bits = detail::bits_per_digit + (detail::bits_per_digit /
+ 2);
+ typedef integer_t<fixedlength<bits> > T; // Digit-and-a-half
+ const size_t digits10 = std::numeric_limits<T>::digits10;
+
+ T n(1);
+ for (size_t i = 0; i < digits10; ++i) n *= 10;
+
+ T n2(n * 10);
+ integer check(n);
+ check *= 10;
+
+ // n2 should be truncated to a smaller number
+ BOOST_CHECK_NE(integer(n2), check);
+ }
+}
+
+BOOST_AUTO_TEST_CASE(test_throwing_nan) {
+ BOOST_CHECK_THROW(integer::nan(), exceptions::not_a_number);
+}
+
+BOOST_AUTO_TEST_CASE(test_nonfixed_bitwise_not) {
+ integer n;
+ BOOST_CHECK_THROW(~n, exceptions::too_big);
+}
+
+BOOST_AUTO_TEST_CASE(test_random_by_size) {
+ default_random_generator gen;
+ integer n = integer::random_by_size(gen, 512, true);
+ BOOST_CHECK_EQUAL(log2(n), 512);
+ n = integer::random_by_size(gen, 512, true, true);
+ BOOST_CHECK_EQUAL(log2(n), 512);
+}
+
 } // namespace xint
 } // namespace boost

Modified: sandbox/xint/libs/xint/test/test_monty.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_monty.cpp (original)
+++ sandbox/xint/libs/xint/test/test_monty.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -13,7 +13,6 @@
 
 #include <boost/xint/integer.hpp>
 #include <boost/xint/random.hpp>
-#include <boost/xint/detail/monty.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -52,8 +51,7 @@
 }
 
 void _test2(size_t section, size_t test, integer b, integer r, integer modulus) {
- integer mResult;
- montgomeryPowerMod(mResult._data(), (b % modulus)._data(), r._data(),
+ integer mResult = montgomeryPowerMod((b % modulus)._data(), r._data(),
         modulus._data());
     integer cResult = powmod(b % modulus, r, modulus, true);
     if (mResult != cResult) {

Modified: sandbox/xint/libs/xint/test/test_multiply.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_multiply.cpp (original)
+++ sandbox/xint/libs/xint/test/test_multiply.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -13,8 +13,6 @@
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/random.hpp>
-#include <boost/xint/fixed_integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -27,27 +25,28 @@
 namespace xint {
 
 using std::endl;
+namespace xopts = boost::xint::options;
 
 namespace {
 
 void _test(size_t section, size_t 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);
+ integer result(m * n), zero;
+ if (m.sign() == 0 || n.sign() == 0) BOOST_CHECK_EQUAL(result, zero);
     else {
- if (result/m != n || result/n != m) {
+ if (result / m != n || result / n != m) {
             std::ostringstream out;
             out << "testMultiply, section " << section << ", " << test << endl;
             out << "n = " << to_string(n, 16) << endl;
             out << "m = " << to_string(m, 16) << endl;
             out << "r = " << to_string(result, 16) << endl << endl;
 
- out << "r / m = " << to_string(result/m, 16)
- << (result/m == n ? " (good)" : " (should be n, isn't)")
+ out << "r / m = " << to_string(result / m, 16)
+ << (result / m == n ? " (good)" : " (should be n, isn't)")
                 << endl;
- out << "r / n = " << to_string(result/n, 16)
- << (result/n == m ? " (good)" : " (should be m, isn't)")
+ out << "r / n = " << to_string(result / n, 16)
+ << (result / n == m ? " (good)" : " (should be m, isn't)")
                 << endl;
             BOOST_ERROR(out.str());
         }
@@ -58,22 +57,22 @@
 
 BOOST_AUTO_TEST_CASE(test_multiply) {
     {
- integer n=integer("-2b6a501cd0b26e1dfd70918455621257ac2c697a", 16);
- integer m=integer( "27d70f185be4970d48045055e62371c532eb8332", 16);
- integer expected=integer("-6C1AB0D083D36569FB112CE738CA2E9D78B0A93D381FA9AB41AA72ECE7512F4F310307B01A407D4", 16);
+ integer n = integer("-2b6a501cd0b26e1dfd70918455621257ac2c697a", 16);
+ integer m = integer( "27d70f185be4970d48045055e62371c532eb8332", 16);
+ integer expected = integer("-6C1AB0D083D36569FB112CE738CA2E9D78B0A93D381FA9AB41AA72ECE7512F4F310307B01A407D4", 16);
         _test(0, 1, n, m);
 
         // These caused a problem while trying to backport the new division
         // algorithm into an alternate version.
- n=integer("-41e0348d52a1be49b7da339137639cde", 16);
- m=integer("c3a1d54a63e80d5a8b851a01d244ea61", 16);
- expected=integer("-32576CEB63105D373FE83F8B3C8A0B68ADAD386F3B668C694D7ADCA8D1195C1E", 16);
+ n = integer("-41e0348d52a1be49b7da339137639cde", 16);
+ m = integer("c3a1d54a63e80d5a8b851a01d244ea61", 16);
+ expected = integer("-32576CEB63105D373FE83F8B3C8A0B68ADAD386F3B668C694D7ADCA8D1195C1E", 16);
         BOOST_CHECK_EQUAL(n*m, expected);
 
         // 'm' contains a full digit of zeros, which caused problems with an
         // earlier implementation.
- n=integer("300493435053701420844513300446198902283");
- m=integer("-10530911911644352242410713382920651977");
+ n = integer("300493435053701420844513300446198902283");
+ m = integer("-10530911911644352242410713382920651977");
         _test(0, 3, n, m);
     }
 
@@ -106,7 +105,7 @@
 
 BOOST_AUTO_TEST_CASE(test_fixed_multiply) {
     const size_t bits = detail::bits_per_digit + (detail::bits_per_digit / 2);
- typedef fixed_integer<bits> T; // Digit-and-a-half
+ typedef integer_t<xopts::fixedlength<bits> > T; // Digit-and-a-half
 
     T n; n = ~n;
     T a = n * n;

Modified: sandbox/xint/libs/xint/test/test_nothrow.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_nothrow.cpp (original)
+++ sandbox/xint/libs/xint/test/test_nothrow.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -15,7 +15,7 @@
     \brief Contains tests for the nothrow_integer type.
 */
 
-#include <boost/xint/nothrow_integer.hpp>
+#include <boost/xint/integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -25,15 +25,16 @@
 namespace boost {
 namespace xint {
 
+using namespace boost::xint::options;
+
 BOOST_AUTO_TEST_CASE(test_nothrow_init) {
     nothrow_integer n1(5), n2(n1);
     BOOST_CHECK_EQUAL(n1, 5);
     BOOST_CHECK_EQUAL(n2, 5);
 
- // Test the any_integer constructor from a different type of
- // nothrow_integer's Not-a-Number value.
- nothrow_integer n3(nothrow_integer_t<std::allocator<detail::digit_t>, false,
- true>::nan());
+ // Test the copy constructor from a different type of nothrow_integer's
+ // Not-a-Number value.
+ nothrow_integer n3(integer_t<fixedlength<12>, nothrow<true> >::nan());
     BOOST_CHECK(n3.is_nan());
 }
 

Modified: sandbox/xint/libs/xint/test/test_powers.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_powers.cpp (original)
+++ sandbox/xint/libs/xint/test/test_powers.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,7 +12,6 @@
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/fixed_integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -22,8 +21,8 @@
 namespace boost {
 namespace xint {
 
-//using namespace detail;
 using detail::bits_per_digit;
+using namespace boost::xint::options;
 
 BOOST_AUTO_TEST_CASE(test_square) {
     {
@@ -72,7 +71,7 @@
     }
 
     {
- fixed_integer<8> n(-235), n2(pow(n, 2)), n3(pow(n, 3));
+ integer_t<fixedlength<8> > n(-235), n2(pow(n, 2)), n3(pow(n, 3));
         BOOST_CHECK_EQUAL(n2, 0xb9);
         BOOST_CHECK_EQUAL(n3, -0xd3);
     }
@@ -82,15 +81,16 @@
     integer i1 = integer::factorial(20);
     BOOST_CHECK_EQUAL(i1, integer("21C3677C82B40000", 16));
 
- fixed_integer<12> i2 = fixed_integer<12>::factorial(8);
+ typedef integer_t<fixedlength<12> > integer12;
+ integer12 i2 = integer12::factorial(8);
     BOOST_CHECK_EQUAL(i2, 0xd80);
 }
 
-BOOST_AUTO_TEST_CASE(test_sqrt) {
+BOOST_AUTO_TEST_CASE(test_square_root) {
     integer n(1), i(1);
     while (n < 30) {
         integer target = square(n + 1);
- while (i < target) { BOOST_CHECK_EQUAL(sqrt(i), n); ++i; }
+ while (i < target) { BOOST_CHECK_EQUAL(square_root(i), n); ++i; }
         ++n;
     }
 }

Modified: sandbox/xint/libs/xint/test/test_streams.cpp
==============================================================================
--- sandbox/xint/libs/xint/test/test_streams.cpp (original)
+++ sandbox/xint/libs/xint/test/test_streams.cpp 2010-06-12 11:54:07 EDT (Sat, 12 Jun 2010)
@@ -12,7 +12,6 @@
 */
 
 #include <boost/xint/integer.hpp>
-#include <boost/xint/nothrow_integer.hpp>
 
 #ifndef BOOST_XINT_SINGLE_TEST_PROGRAM
     #define BOOST_TEST_MAIN
@@ -28,7 +27,9 @@
 
 namespace {
 
-bool testStreamOut(std::string name, std::stringstream& str, const integer& n, std::string expected) {
+bool testStreamOut(std::string name, std::stringstream& str, const integer& n,
+ std::string expected)
+{
     str.str(std::string());
     str << n;
     if (str.str() != expected) {
@@ -37,7 +38,9 @@
     } else return true;
 }
 
-bool testStreamIn(std::string name, std::stringstream& str, std::string value, const integer& expected) {
+bool testStreamIn(std::string name, std::stringstream& str, std::string value,
+ const integer& expected)
+{
     integer test;
 
     str.clear(); // Reset any error states on the stream
@@ -153,8 +156,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);
     }
 
@@ -163,7 +166,7 @@
         str.clear();
 
         str << nothrow_integer::nan();
- std::string temp=str.str();
+ std::string temp = str.str();
 
         nothrow_integer test;
         str.str(temp);
@@ -172,7 +175,7 @@
         if (!str) BOOST_ERROR("testStream: isNaN set stream error signal, "
             "shouldn't have");
     } catch (std::exception& e) {
- std::string err=std::string("testStreams: erroneous input stream "
+ std::string err = std::string("testStreams: erroneous input stream "
             "exception '")+e.what()+"'";
         BOOST_ERROR(err);
     }


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