Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r61143 - in sandbox/xint: boost/xint doc doc/dox src test
From: chad.thecomfychair_at_[hidden]
Date: 2010-04-07 20:40:58


Author: chadnelson
Date: 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
New Revision: 61143
URL: http://svn.boost.org/trac/boost/changeset/61143

Log:
Added xint::core namespace, made xint::not_a_number and xint::overflow_error blockable.

Also got rid of not-a-number integer constructor, in favor of an integer::nan function.
Added:
   sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1integer.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1invalid__base-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1invalid__base.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1not__a__number-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1not__a__number.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1overflow__error-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1overflow__error.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1too__big-members.html (contents, props changed)
   sandbox/xint/doc/classboost_1_1xint_1_1too__big.html (contents, props changed)
   sandbox/xint/doc/dox/r_core.dox (contents, props changed)
   sandbox/xint/doc/dox/r_exception_blocking.dox (contents, props changed)
   sandbox/xint/doc/namespaceboost.html
      - copied, changed from r61110, /sandbox/xint/doc/namespaces.html
   sandbox/xint/doc/namespaceboost_1_1xint.html (contents, props changed)
   sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html (contents, props changed)
   sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html (contents, props changed)
   sandbox/xint/doc/r__core_8dox.html
      - copied, changed from r61110, /sandbox/xint/doc/random_8dox.html
   sandbox/xint/doc/r__exception__blocking_8dox.html
      - copied, changed from r61110, /sandbox/xint/doc/copyonwrite_8dox.html
   sandbox/xint/doc/r_core.html (contents, props changed)
   sandbox/xint/doc/r_exception_blocking.html
      - copied, changed from r61110, /sandbox/xint/doc/r_shared_ptr.html
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.gif (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.gif (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html (contents, props changed)
   sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html (contents, props changed)
Text files modified:
   sandbox/xint/boost/xint/xint.hpp | 446 ++++++++++++++----
   sandbox/xint/boost/xint/xint_monty.hpp | 2
   sandbox/xint/doc/acknowledgements.html | 2
   sandbox/xint/doc/acknowledgements_8dox.html | 2
   sandbox/xint/doc/annotated.html | 3
   sandbox/xint/doc/bit__manipulations_8cpp.html | 20
   sandbox/xint/doc/bit__manipulations_8cpp_source.html | 371 +++++++++-----
   sandbox/xint/doc/classes.html | 8
   sandbox/xint/doc/compare_8cpp.html | 32
   sandbox/xint/doc/compare_8cpp_source.html | 143 +++-
   sandbox/xint/doc/convert_8cpp.html | 13
   sandbox/xint/doc/convert_8cpp_source.html | 326 +++++++------
   sandbox/xint/doc/copyonwrite_8dox.html | 2
   sandbox/xint/doc/cow.html | 2
   sandbox/xint/doc/data__t_8cpp.html | 4
   sandbox/xint/doc/data__t_8cpp_source.html | 2
   sandbox/xint/doc/dependencies.html | 2
   sandbox/xint/doc/dependencies_8dox.html | 2
   sandbox/xint/doc/dox/exceptions.dox | 4
   sandbox/xint/doc/dox/nan.dox | 16
   sandbox/xint/doc/dox/rationale.dox | 4
   sandbox/xint/doc/ex__fibonacci_8dox.html | 2
   sandbox/xint/doc/ex_fibonacci.html | 2
   sandbox/xint/doc/exception__blocker_8cpp.html | 4
   sandbox/xint/doc/exception__blocker_8cpp_source.html | 2
   sandbox/xint/doc/exceptions.html | 4
   sandbox/xint/doc/exceptions_8dox.html | 2
   sandbox/xint/doc/files.html | 2
   sandbox/xint/doc/functions.html | 85 ++
   sandbox/xint/doc/functions_func.html | 85 ++
   sandbox/xint/doc/functions_type.html | 2
   sandbox/xint/doc/functions_vars.html | 5
   sandbox/xint/doc/gcd_8cpp.html | 12
   sandbox/xint/doc/gcd_8cpp_source.html | 139 +++--
   sandbox/xint/doc/globals.html | 2
   sandbox/xint/doc/globals_defs.html | 2
   sandbox/xint/doc/globals_vars.html | 2
   sandbox/xint/doc/hierarchy.html | 3
   sandbox/xint/doc/history.html | 2
   sandbox/xint/doc/history_8dox.html | 2
   sandbox/xint/doc/index.html | 2
   sandbox/xint/doc/index_8dox.html | 2
   sandbox/xint/doc/integer_8cpp.html | 9
   sandbox/xint/doc/integer_8cpp_source.html | 685 +++++++++++++++++++--------
   sandbox/xint/doc/misc_8cpp.html | 10
   sandbox/xint/doc/misc_8cpp_source.html | 41 +
   sandbox/xint/doc/modular_8cpp.html | 13
   sandbox/xint/doc/modular_8cpp_source.html | 156 +++--
   sandbox/xint/doc/monty_8cpp.html | 37
   sandbox/xint/doc/monty_8cpp_source.html | 471 +++++++++---------
   sandbox/xint/doc/namespaceboost.html | 17
   sandbox/xint/doc/namespacemembers.html | 156 ++++-
   sandbox/xint/doc/namespacemembers_func.html | 150 ++++-
   sandbox/xint/doc/namespacemembers_type.html | 2
   sandbox/xint/doc/namespacemembers_vars.html | 2
   sandbox/xint/doc/namespaces.html | 5
   sandbox/xint/doc/nan.html | 8
   sandbox/xint/doc/nan_8dox.html | 2
   sandbox/xint/doc/operators_8cpp.html | 19
   sandbox/xint/doc/operators_8cpp_source.html | 42 +
   sandbox/xint/doc/pages.html | 2
   sandbox/xint/doc/powers_8cpp.html | 13
   sandbox/xint/doc/powers_8cpp_source.html | 228 +++++----
   sandbox/xint/doc/primes.html | 4
   sandbox/xint/doc/primes_8cpp.html | 11
   sandbox/xint/doc/primes_8cpp_source.html | 223 ++++----
   sandbox/xint/doc/primes_8dox.html | 2
   sandbox/xint/doc/primitives_8cpp.html | 16
   sandbox/xint/doc/primitives_8cpp_source.html | 511 +++++++++++---------
   sandbox/xint/doc/r__core_8dox.html | 6
   sandbox/xint/doc/r__cow_8dox.html | 2
   sandbox/xint/doc/r__default__necessary_8dox.html | 2
   sandbox/xint/doc/r__exception__blocking_8dox.html | 6
   sandbox/xint/doc/r__insecure__default_8dox.html | 2
   sandbox/xint/doc/r__interface_8dox.html | 2
   sandbox/xint/doc/r__interface__design__only_8dox.html | 2
   sandbox/xint/doc/r__nan_8dox.html | 2
   sandbox/xint/doc/r__negzero_8dox.html | 2
   sandbox/xint/doc/r__random_8dox.html | 2
   sandbox/xint/doc/r__shared__ptr_8dox.html | 2
   sandbox/xint/doc/r_cow.html | 2
   sandbox/xint/doc/r_default_necessary.html | 2
   sandbox/xint/doc/r_exception_blocking.html | 8
   sandbox/xint/doc/r_insecure_default.html | 2
   sandbox/xint/doc/r_interface.html | 2
   sandbox/xint/doc/r_interface_design_only.html | 2
   sandbox/xint/doc/r_nan.html | 2
   sandbox/xint/doc/r_negzero.html | 2
   sandbox/xint/doc/r_random.html | 2
   sandbox/xint/doc/r_shared_ptr.html | 2
   sandbox/xint/doc/random.html | 2
   sandbox/xint/doc/random_8cpp.html | 10
   sandbox/xint/doc/random_8cpp_source.html | 84 +-
   sandbox/xint/doc/random_8dox.html | 2
   sandbox/xint/doc/rationale.html | 6
   sandbox/xint/doc/rationale_8dox.html | 2
   sandbox/xint/doc/roots_8cpp.html | 10
   sandbox/xint/doc/roots_8cpp_source.html | 58 +-
   sandbox/xint/doc/securemode.html | 2
   sandbox/xint/doc/securemode_8dox.html | 2
   sandbox/xint/doc/testing.html | 2
   sandbox/xint/doc/testing_8dox.html | 2
   sandbox/xint/doc/threadsafe.html | 2
   sandbox/xint/doc/threadsafe_8dox.html | 2
   sandbox/xint/doc/todo.html | 2
   sandbox/xint/doc/xint_8hpp.html | 93 +++
   sandbox/xint/doc/xint_8hpp_source.html | 984 ++++++++++++++++++++++++---------------
   sandbox/xint/doc/xint__data__t_8hpp.html | 4
   sandbox/xint/doc/xint__data__t_8hpp_source.html | 2
   sandbox/xint/doc/xint__monty_8hpp.html | 33
   sandbox/xint/doc/xint__monty_8hpp_source.html | 30
   sandbox/xint/doc/xint__test_8hpp.html | 4
   sandbox/xint/doc/xint__test_8hpp_source.html | 2
   sandbox/xint/src/bit_manipulations.cpp | 263 +++++++---
   sandbox/xint/src/compare.cpp | 95 +++
   sandbox/xint/src/convert.cpp | 219 ++++---
   sandbox/xint/src/gcd.cpp | 99 ++-
   sandbox/xint/src/integer.cpp | 449 ++++++++++++++---
   sandbox/xint/src/misc.cpp | 29
   sandbox/xint/src/modular.cpp | 120 +++-
   sandbox/xint/src/monty.cpp | 13
   sandbox/xint/src/operators.cpp | 12
   sandbox/xint/src/powers.cpp | 100 ++-
   sandbox/xint/src/primes.cpp | 90 ++-
   sandbox/xint/src/primitives.cpp | 185 ++++--
   sandbox/xint/src/random.cpp | 54 +
   sandbox/xint/src/roots.cpp | 40
   sandbox/xint/test/test_monty.cpp | 2
   sandbox/xint/test/test_streams.cpp | 2
   129 files changed, 4968 insertions(+), 2804 deletions(-)

Modified: sandbox/xint/boost/xint/xint.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint.hpp (original)
+++ sandbox/xint/boost/xint/xint.hpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -36,7 +36,7 @@
 #include <boost/random/variate_generator.hpp>
 
 namespace boost {
-//! \brief All of the functions in the XInt library are within this namespace.
+//! \brief All of the commonly-used functions are within this namespace.
 namespace xint {
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -123,7 +123,101 @@
 //! @see xint::from_string
 const size_t autobase=(std::numeric_limits<size_t>::max)();
 
-class not_a_number;
+class integer;
+
+/*! \brief Contains the core integer type and core functions.
+
+The types and functions in the xint::core namespace operate exactly like those
+of the same names in the xint namespace, except that they ignore any
+exception-blocking and do not support the Not-a-Number value. If you attempt to
+assign a Not-a-Number to a core::integer, it will throw an xint::not_a_number
+exception.
+
+These functions are not documented separately; see the corresponding classes and
+functions in the xint::integer namespace for documentation on them.
+*/
+namespace core {
+
+//! \brief The core integer class.
+class integer {
+ public:
+
+ //! \name Constructors & Destructors
+ //!@{
+ integer();
+ integer(const integer& b);
+ explicit integer(const ::boost::xint::integer& b);
+ template <typename T> integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type* = 0,
+ typename boost::enable_if<boost::is_signed<T> >::type* = 0);
+ template <typename T> integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type* = 0,
+ typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+ explicit integer(const std::string& str, size_t base=10);
+ ~integer();
+ //!@}
+
+ //! \name Mathematical and Bitwise Operators
+ //@{
+ integer& operator=(const integer &c);
+
+ integer& operator+=(const integer& b);
+ integer& operator-=(const integer& b);
+ integer& operator*=(const integer& b);
+ integer& operator/=(const integer& b);
+ integer& operator%=(const integer& b);
+
+ integer& operator++(); //!< \details Preincrement operator
+ integer& operator--(); //!< \details Predecrement operator
+ integer operator++(int); //!< \details Postincrement operator -- not recommended, inefficient
+ integer operator--(int); //!< \details Postdecrement operator -- not recommended, inefficient
+
+ integer& operator&=(const integer& n);
+ integer& operator|=(const integer& n);
+ integer& operator^=(const integer& n);
+ integer operator<<(size_t shift) const;
+ integer operator>>(size_t shift) const;
+ integer& operator<<=(size_t shift);
+ integer& operator>>=(size_t shift);
+ //@}
+
+ //! \name Preconstructed integers
+ //@{
+ static const integer& zero();
+ static const integer& one();
+ //@}
+
+ //! \name Miscellaneous Functions
+ //!@{
+ bool odd() const;
+ bool even() const;
+ int sign() const;
+
+ size_t hex_digits() const;
+ //!@}
+
+ //! \name Internal Functions
+ //@{
+ detail::data_t *_get_data() { return data; }
+ const detail::data_t *_get_data() const { return data; }
+ detail::digit_t _get_digit(size_t index) const;
+ detail::digit_t _get_digit(size_t index, bool) const; //!< \overload
+ size_t _get_length() const;
+ void _set_negative(bool negative);
+ void _make_unique();
+ //@}
+
+ protected: /////////////////////////////////////////////////////////////////
+ void _init(detail::digit_t init=0);
+ void _init(const integer &c); //!< \overload
+ void _init(boost::uintmax_t n); //!< \overload
+ void _attach();
+ void _detach();
+
+ detail::data_t *data;
+};
+
+} // namespace core
 
 ////////////////////////////////////////////////////////////////////////////////
 // The integer class
@@ -146,6 +240,7 @@
     //!@{
     integer();
     integer(const integer& b);
+ integer(const core::integer& b);
     template <typename T> integer(const T& n,
         typename boost::enable_if<boost::is_integral<T> >::type* = 0,
         typename boost::enable_if<boost::is_signed<T> >::type* = 0);
@@ -153,8 +248,6 @@
         typename boost::enable_if<boost::is_integral<T> >::type* = 0,
         typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
     explicit integer(const std::string& str, size_t base=10);
- explicit integer(const not_a_number&);
- ~integer();
     //!@}
 
     /*! \name Mathematical and Bitwise Operators
@@ -187,6 +280,16 @@
     integer& operator>>=(size_t shift);
     //@}
 
+ //! \name Miscellaneous Functions
+ //!@{
+ bool odd() const;
+ bool even() const;
+ int sign() const;
+ bool is_nan() const;
+
+ size_t hex_digits() const;
+ //!@}
+
     /*! \name Preconstructed integers
 
         These return preconstructed integers with the values named by the
@@ -197,18 +300,9 @@
     //@{
     static const integer& zero();
     static const integer& one();
+ static const integer& nan();
     //@}
 
- //! \name Miscellaneous Functions
- //!@{
- bool odd() const;
- bool even() const;
- int sign() const;
- bool is_nan() const; //!< \returns true if integer is Not-a-Number.
-
- size_t hex_digits() const; //!< \returns the number of hex digits to show the integer.
- //!@}
-
     /*! \name Internal Functions
         \brief These functions allow access to the internals of the %integer.
                They are intended for internal use only.
@@ -221,10 +315,9 @@
     size_t _get_length() const;
     void _set_negative(bool negative);
     void _make_unique();
- void _throw_if_nan() const;
     //@}
 
- private: ///////////////////////////////////////////////////////////////////
+ private: /////////////////////////////////////////////////////////////////
     void _init(detail::digit_t init=0);
     void _init(const integer &c); //!< \overload
     void _init(boost::uintmax_t n); //!< \overload
@@ -288,6 +381,17 @@
 integer divide(const integer& dividend, const integer& divisor);
 std::pair<integer, integer> divide_r(const integer& dividend, const integer&
     divisor);
+
+namespace core {
+integer abs(const integer& n);
+integer negate(const integer& n);
+integer add(const integer& n, const integer& addend);
+integer subtract(const integer& n, const integer& subtrahend);
+integer multiply(const integer& n, const integer& multiplicand);
+integer divide(const integer& dividend, const integer& divisor);
+std::pair<integer, integer> divide_r(const integer& dividend, const integer&
+ divisor);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -299,6 +403,14 @@
 integer pow2(size_t exponent);
 integer factorial(size_t n);
 integer sqrt(const integer& n);
+
+namespace core {
+integer sqr(const integer& n);
+integer pow(const integer& n, const integer& exponent);
+integer pow2(size_t exponent);
+integer factorial(size_t n);
+integer sqrt(const integer& n);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -310,6 +422,14 @@
 integer from_string(const std::string& str, size_t base=10);
 std::string to_binary(const integer& n);
 integer from_binary(const std::string& s);
+
+namespace core {
+template <typename T> T to(const integer& n);
+std::string to_string(const integer& n, size_t base=10, bool upperCase=false);
+integer from_string(const std::string& str, size_t base=10);
+std::string to_binary(const integer& n);
+integer from_binary(const std::string& s);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -327,6 +447,20 @@
 integer shift(const integer& n, int byBits);
 integer shift_left(const integer& n, size_t byBits);
 integer shift_right(const integer& n, size_t byBits);
+
+namespace core {
+bool getbit(const integer& n, size_t bit);
+void setbit(integer& n, size_t bit);
+void clearbit(integer& n, size_t bit);
+size_t lowestbit(const integer& n, size_t valueIfZero=0);
+size_t highestbit(const integer& n, size_t valueIfZero=0);
+integer bitwise_and(const integer& n1, const integer& n2);
+integer bitwise_or (const integer& n1, const integer& n2);
+integer bitwise_xor(const integer& n1, const integer& n2);
+integer shift(const integer& n, int byBits);
+integer shift_left(const integer& n, size_t byBits);
+integer shift_right(const integer& n, size_t byBits);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -343,6 +477,15 @@
 integer powmod(const integer& n, const integer& exponent, const integer&
     modulus, bool noMontgomery=false);
 integer invmod(const integer& n, const integer& modulus);
+
+namespace core {
+integer mod(const integer& n, const integer& modBy);
+integer mulmod(const integer& n, const integer& by, const integer& modulus);
+integer sqrmod(const integer& n, const integer& modulus);
+integer powmod(const integer& n, const integer& exponent, const integer&
+ modulus, bool noMontgomery=false);
+integer invmod(const integer& n, const integer& modulus);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -352,6 +495,11 @@
 template <typename T> void set_random_generator(T *gen);
 integer random_by_size(size_t sizeInBits, bool highBitOn=false, bool
     lowBitOn=false, bool canBeNegative=false);
+
+namespace core {
+integer random_by_size(size_t sizeInBits, bool highBitOn=false, bool
+ lowBitOn=false, bool canBeNegative=false);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -360,6 +508,11 @@
 //!@{
 int is_prime(const integer& n, callback_t callback=no_callback);
 integer random_prime(size_t sizeInBits, callback_t callback=no_callback);
+
+namespace core {
+int is_prime(const integer& n, callback_t callback=no_callback);
+integer random_prime(size_t sizeInBits, callback_t callback=no_callback);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -387,6 +540,27 @@
 integer operator&(const integer& n1, const integer& n2);
 integer operator|(const integer& n1, const integer& n2);
 integer operator^(const integer& n1, const integer& n2);
+
+namespace core {
+bool operator!(const integer& n1);
+bool operator<(const integer& n1, const integer& n2);
+bool operator>(const integer& n1, const integer& n2);
+bool operator<=(const integer& n1, const integer& n2);
+bool operator>=(const integer& n1, const integer& n2);
+bool operator==(const integer& n1, const integer& n2);
+bool operator!=(const integer& n1, const integer& n2);
+
+const integer& operator+(const integer& a);
+integer operator-(const integer& a);
+integer operator+(const integer& n1, const integer& n2);
+integer operator-(const integer& n1, const integer& n2);
+integer operator*(const integer& n1, const integer& n2);
+integer operator/(const integer& n1, const integer& n2);
+integer operator%(const integer& n1, const integer& n2);
+integer operator&(const integer& n1, const integer& n2);
+integer operator|(const integer& n1, const integer& n2);
+integer operator^(const integer& n1, const integer& n2);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -395,10 +569,18 @@
 //!@{
 bool opt_secure_mode();
 bool opt_thread_safe();
+
 int compare(const integer &n1, const integer &n2, bool ignoresign=false);
 size_t log2(const integer& n);
 integer gcd(const integer& num1, const integer& num2);
 integer lcm(const integer& num1, const integer& num2);
+
+namespace core {
+int compare(const integer &n1, const integer &n2, bool ignoresign=false);
+size_t log2(const integer& n);
+integer gcd(const integer& num1, const integer& num2);
+integer lcm(const integer& num1, const integer& num2);
+} // namespace core
 //!@}
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -470,17 +652,11 @@
 
     Derived from \c std::runtime_error.
 
- \note Cannot (presently) be blocked.
-
     \remarks
     Most library functions will throw an xint::not_a_number exception if you try
     to use a \link nan Not-a-Number value \endlink in them.
 
     \par
- An object of type xint::not_a_number can also be fed to an integer
- constructor to deliberately produce a Not-a-Number value.
-
- \par
     See this page for details on Not-a-Number.
 */
 class not_a_number: public std::runtime_error {
@@ -494,6 +670,12 @@
     Derived from \c std::runtime_error.
 
     \note Cannot be blocked.
+
+ \remarks
+ Thrown by the xint::strong_random_generator class's constructor, if the
+ system does not provide a cryptographically-secure random generator. Also
+ thrown if the generator fails when asked to provide a random value, though
+ this should be vanishingly rare.
 */
 class no_strong_random: public std::runtime_error {
     public:
@@ -506,13 +688,8 @@
 
     Derived from \c std::overflow_error.
 
- \note Cannot (presently) be blocked.
-
     \remarks
- Thrown by the xint::strong_random_generator class's constructor, if the
- system does not provide a cryptographically-secure random generator. Also
- thrown if the generator fails when asked to provide a random value, though
- this should be vanishingly rare.
+ Thrown when the library can't get enough memory to represent a number.
 */
 class overflow_error: public std::overflow_error {
     public:
@@ -525,19 +702,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Template function definitions
 
-/*!
- Constructs a new integer object with the value of the built-in signed
- %integer passed to it.
-
- \param[in] n A number of type \c T.
- \tparam T The type of \c n.
-
- You can ignore the \c enable_if parameters, they are there only to tell the
- compiler what types it applies to.
-
- \overload
-*/
-
+namespace core {
 template <typename T> integer::integer(const T& n,
     typename boost::enable_if<boost::is_integral<T> >::type*,
     typename boost::enable_if<boost::is_signed<T> >::type*)
@@ -557,42 +722,74 @@
         _set_negative(true);
     }
 }
+} // namespace core
+
+namespace core {
+template <typename T> integer::integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_unsigned<T> >::type*)
+{
+ if (static_cast<T>(n & detail::digit_mask) == n)
+ _init(detail::digit_t(n));
+ else _init(boost::uintmax_t(n));
+}
+} // namespace core
 
 /*!
- Constructs a new integer object with the value of the built-in unsigned
+ Constructs a new integer object with the value of the built-in signed
     %integer passed to it.
 
     \param[in] n A number of type \c T.
     \tparam T The type of \c n.
 
- You can ignore the \c enable_if parameters, they are there only to tell the
- compiler what types it applies to.
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
 
     \overload
 */
-
 template <typename T> integer::integer(const T& n,
     typename boost::enable_if<boost::is_integral<T> >::type*,
- typename boost::enable_if<boost::is_unsigned<T> >::type*)
+ typename boost::enable_if<boost::is_signed<T> >::type*)
 {
- if (static_cast<T>(n & detail::digit_mask) == n)
- _init(detail::digit_t(n));
- else _init(boost::uintmax_t(n));
+ data=0;
+ try {
+ *this=integer(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ delete data;
+ data=0;
+ }
 }
 
-/*! \brief Efficiently converts from an xint::integer to a built-in %integer
- type.
+/*!
+ Constructs a new integer object with the value of the built-in unsigned
+ %integer passed to it.
 
-\param[in] n The integer to convert.
-\tparam T The type to convert it to.
+ \param[in] n A number of type \c T.
+ \tparam T The type of \c n.
 
-\returns The numeric value of \c n, converted to the specified type.
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
 
-\exception xint::too_big if \c n would not fit into the specified type.
+ \overload
 */
+template <typename T> integer::integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_unsigned<T> >::type*)
+{
+ data=0;
+ try {
+ *this=integer(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ delete data;
+ data=0;
+ }
+}
+
+namespace core {
 template <typename T>
 T to(const integer& n) {
- n._throw_if_nan();
     if (n < (std::numeric_limits<T>::min)()
         || n > (std::numeric_limits<T>::max)())
             throw too_big("value out of range for requested conversion");
@@ -605,6 +802,29 @@
     if (n.sign() < 0) rval *= -1;
     return rval;
 }
+} // namespace core
+
+/*! \brief Efficiently converts from an xint::integer to a built-in %integer
+ type.
+
+\param[in] n The integer to convert.
+\tparam T The type to convert it to.
+
+\returns The numeric value of \c n, converted to the specified type.
+
+\exception xint::too_big if \c n would not fit into the specified type.
+
+\note If exceptions are blocked, returns T(0) instead of throwing.
+*/
+template <typename T>
+T to(const integer& n) {
+ try {
+ return to<T>(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
 
 /*! \brief Change the random generator that the library uses.
 
@@ -627,39 +847,38 @@
 
 //! \name Stream input/output functions
 //!@{
+namespace core {
 template <typename charT, typename traits>
 inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
- traits>& out, const xint::integer& n)
+ traits>& out, const integer& n)
 {
- if (n.is_nan()) {
- out << detail::nan_text;
+ int base=((out.flags() & std::ios::hex) ? 16
+ : (out.flags() & std::ios::oct) ? 8
+ : 10);
+ bool upperCase=(out.flags() & std::ios::uppercase ? true : false);
+
+ int nsign=n.sign();
+ if ((out.flags() & std::ios::showpos) && nsign >= 0) out << "+";
+
+ if (out.flags() & std::ios::showbase) {
+ if (nsign < 0) out << "-";
+
+ if (base==16 && upperCase) out << "0X";
+ else if (base==16) out << "0x";
+ else if (base==8) out << "0";
+
+ out << to_string(abs(n), base, upperCase);
     } else {
- int base=((out.flags() & std::ios::hex) ? 16
- : (out.flags() & std::ios::oct) ? 8
- : 10);
- bool upperCase=(out.flags() & std::ios::uppercase ? true : false);
-
- int nsign=n.sign();
- if ((out.flags() & std::ios::showpos) && nsign >= 0) out << "+";
-
- if (out.flags() & std::ios::showbase) {
- if (nsign < 0) out << "-";
-
- if (base==16 && upperCase) out << "0X";
- else if (base==16) out << "0x";
- else if (base==8) out << "0";
-
- out << xint::to_string(abs(n), base, upperCase);
- } else {
- out << xint::to_string(n, base, upperCase);
- }
+ out << to_string(n, base, upperCase);
     }
     return out;
 }
+} // namespace core
 
+namespace core {
 template <typename charT, typename traits>
 inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
- traits>& in, xint::integer& n)
+ traits>& in, integer& n)
 {
     int hex=(in.flags() & std::ios::hex) ? 1 : 0;
     int dec=(in.flags() & std::ios::dec) ? 1 : 0;
@@ -693,6 +912,50 @@
         } else base=10;
     }
 
+ while (in) {
+ int c=in.peek();
+ if ((base==8 && (c>='0' && c<='7')) ||
+ (base==10 && (c>='0' && c<='9')) ||
+ (base==16 && ((c>='0' && c<='9') || (c>='a' && c<='f') ||
+ (c>='A' && c<='F'))))
+ {
+ in.ignore();
+ s.push_back(char(c));
+ } else break;
+ }
+
+ token allow=allow_exceptions();
+ try {
+ integer testValue=from_string(s, base);
+ n=testValue;
+ } catch (std::exception&) {
+ // Catch invalid strings
+ in.setstate(std::ios::failbit);
+ }
+
+ return in;
+}
+} // namespace core
+//!@}
+
+//! \name Stream input/output functions
+//!@{
+template <typename charT, typename traits>
+inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
+ traits>& out, const integer& n)
+{
+ if (n.is_nan()) {
+ out << detail::nan_text;
+ return out;
+ } else {
+ return core::operator<<(out, core::integer(n));
+ }
+}
+
+template <typename charT, typename traits>
+inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
+ traits>& in, integer& n)
+{
     if (in.peek()=='#') {
         // Must be either #NaN# or an error
         char buffer[6];
@@ -700,29 +963,12 @@
         buffer[size]=0;
         std::string str(buffer);
 
- if (str==detail::nan_text) n=integer(not_a_number());
+ if (str==detail::nan_text) n=integer::nan();
         else in.setstate(std::ios::failbit);
     } else {
- while (in) {
- int c=in.peek();
- if ((base==8 && (c>='0' && c<='7')) ||
- (base==10 && (c>='0' && c<='9')) ||
- (base==16 && ((c>='0' && c<='9') || (c>='a' && c<='f') ||
- (c>='A' && c<='F'))))
- {
- in.ignore();
- s.push_back(char(c));
- } else break;
- }
-
- token allow=allow_exceptions();
- try {
- xint::integer testValue=xint::from_string(s, base);
- n=testValue;
- } catch (xint::invalid_digit&) {
- // Catch invalid strings
- in.setstate(std::ios::failbit);
- }
+ core::integer nn;
+ core::operator>>(in, nn);
+ if (in) n=nn;
     }
 
     return in;

Modified: sandbox/xint/boost/xint/xint_monty.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint_monty.hpp (original)
+++ sandbox/xint/boost/xint/xint_monty.hpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -23,6 +23,7 @@
 
 namespace boost {
 namespace xint {
+namespace core {
 
 //! \name Montgomery Reduction functions
 //!@{
@@ -35,6 +36,7 @@
 integer montgomeryPowerMod(const integer& x, const integer& e, const integer& m);
 //!@}
 
+} // namespace core
 } // namespace xint
 } // namespace boost
 

Modified: sandbox/xint/doc/acknowledgements.html
==============================================================================
--- sandbox/xint/doc/acknowledgements.html (original)
+++ sandbox/xint/doc/acknowledgements.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -54,7 +54,7 @@
 </ul>
 <p>If I've forgotten anyone, please let me know and I'll correct the oversight. </p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/acknowledgements_8dox.html
==============================================================================
--- sandbox/xint/doc/acknowledgements_8dox.html (original)
+++ sandbox/xint/doc/acknowledgements_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
 <h1>/home/chad/projects/xint/doc/dox/acknowledgements.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/annotated.html
==============================================================================
--- sandbox/xint/doc/annotated.html (original)
+++ sandbox/xint/doc/annotated.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -32,6 +32,7 @@
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">boost::xint::cannot_represent</a></td><td class="indexvalue">Exception class </td></tr>
   <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td class="indexvalue">Holds the internal details of an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a> </td></tr>
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">boost::xint::divide_by_zero</a></td><td class="indexvalue">Exception class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td class="indexvalue">The <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> class </td></tr>
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td class="indexvalue">The extended integer class </td></tr>
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></td><td class="indexvalue">Exception class </td></tr>
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a></td><td class="indexvalue">Exception class </td></tr>
@@ -46,7 +47,7 @@
   <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1too__big.html">boost::xint::too_big</a></td><td class="indexvalue">Exception class </td></tr>
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/bit__manipulations_8cpp.html
==============================================================================
--- sandbox/xint/doc/bit__manipulations_8cpp.html (original)
+++ sandbox/xint/doc/bit__manipulations_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -38,10 +38,26 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core::getbit</a> (const integer &amp;n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core::setbit</a> (integer &amp;n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core::clearbit</a> (integer &amp;n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core::lowestbit</a> (const integer &amp;n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core::highestbit</a> (const integer &amp;n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core::bitwise_and</a> (const integer &amp;n1, const integer &amp;n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core::bitwise_or</a> (const integer &amp;n1, const integer &amp;n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core::bitwise_xor</a> (const integer &amp;n1, const integer &amp;n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core::shift</a> (const integer &amp;n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core::shift_left</a> (const integer &amp;n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core::shift_right</a> (const integer &amp;n, size_t byBits)</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>
 <br/><br/></div></td></tr>
@@ -73,7 +89,7 @@
 
 <p>Definition in file <a class="el" href="bit__manipulations_8cpp_source.html">bit_manipulations.cpp</a>.</p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/bit__manipulations_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/bit__manipulations_8cpp_source.html (original)
+++ sandbox/xint/doc/bit__manipulations_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -45,158 +45,243 @@
 <a name="l00023"></a>00023
 <a name="l00024"></a>00024 <span class="keyword">using namespace </span>detail;
 <a name="l00025"></a>00025
-<a name="l00034"></a>00034 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00035"></a>00035 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00036"></a>00036 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00037"></a>00037 <span class="keywordflow">if</span> (index &lt; n.<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>()) {
-<a name="l00038"></a>00038 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) &lt;&lt; (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00039"></a>00039 <span class="keywordflow">return</span> ((n.<a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(index) &amp; mask) != 0);
-<a name="l00040"></a>00040 } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00041"></a>00041 }
+<a name="l00026"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html">00026</a> <span class="keyword">namespace </span>core {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00029"></a>00029 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00030"></a>00030 <span class="keywordflow">if</span> (index &lt; n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>()) {
+<a name="l00031"></a>00031 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) &lt;&lt; (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00032"></a>00032 <span class="keywordflow">return</span> ((n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">_get_digit</a>(index) &amp; mask) != 0);
+<a name="l00033"></a>00033 } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">setbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00037"></a>00037 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00038"></a>00038 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (index &gt;= n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>()) ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(index+1);
 <a name="l00042"></a>00042
-<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00051"></a>00051 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00052"></a>00052 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00053"></a>00053 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (index &gt;= n.<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>()) ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(index+1);
+<a name="l00043"></a>00043 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) &lt;&lt; (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00044"></a>00044 ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] |= mask;
+<a name="l00045"></a>00045 ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00049"></a>00049 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00050"></a>00050 <span class="keywordflow">if</span> (index &lt; n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>()) {
+<a name="l00051"></a>00051 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00052"></a>00052 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) &lt;&lt; (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00053"></a>00053 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] &amp;= ~mask;
+<a name="l00054"></a>00054 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 }
 <a name="l00057"></a>00057
-<a name="l00058"></a>00058 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) &lt;&lt; (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00059"></a>00059 ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] |= mask;
-<a name="l00060"></a>00060 ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> bit) {
-<a name="l00071"></a>00071 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00072"></a>00072 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (index &lt; n.<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>()) {
-<a name="l00074"></a>00074 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00075"></a>00075 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) &lt;&lt; (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00076"></a>00076 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] &amp;= ~mask;
-<a name="l00077"></a>00077 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00090"></a>00090 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00058"></a>00058 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00062"></a>00062 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *pe=p+ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00063"></a>00063 <span class="keywordflow">while</span> (p!=pe &amp;&amp; *p==0) ++p;
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keywordtype">size_t</span> index=(p - ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>);
+<a name="l00066"></a>00066 <span class="keywordtype">size_t</span> r=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * index);
+<a name="l00067"></a>00067 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> digit=*p;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keywordflow">while</span> ((digit &amp; 0x01)==0) {
+<a name="l00070"></a>00070 digit&gt;&gt;=1;
+<a name="l00071"></a>00071 ++r;
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <span class="keywordflow">return</span> r;
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(n)-1);
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n2) {
+<a name="l00083"></a>00083 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00084"></a>00084 <span class="keywordflow">if</span> (smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt; larger-&gt;mLength) std::swap(smaller, larger);
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
+<a name="l00087"></a>00087 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00088"></a>00088 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, *s2=larger-&gt;digits;
+<a name="l00091"></a>00091 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
 <a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00094"></a>00094 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *pe=p+ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00095"></a>00095 <span class="keywordflow">while</span> (p!=pe &amp;&amp; *p==0) ++p;
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keywordtype">size_t</span> index=(p - ndata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>);
-<a name="l00098"></a>00098 <span class="keywordtype">size_t</span> r=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * index);
-<a name="l00099"></a>00099 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> digit=*p;
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="keywordflow">while</span> ((digit &amp; 0x01)==0) {
-<a name="l00102"></a>00102 digit&gt;&gt;=1;
-<a name="l00103"></a>00103 ++r;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> r;
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00118"></a>00118 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> valueIfZero) {
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(n)-1);
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00129"></a>00129 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n2) {
-<a name="l00130"></a>00130 n1.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00131"></a>00131 n2.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
+<a name="l00093"></a>00093 <span class="keywordflow">while</span> (s1 &lt; s1e) *t++ = *s1++ &amp; *s2++;
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> r;
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">bitwise_or</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n2) {
+<a name="l00100"></a>00100 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt; larger-&gt;mLength) std::swap(smaller, larger);
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
+<a name="l00104"></a>00104 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00105"></a>00105 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger-&gt;mLength);
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00108"></a>00108 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger-&gt;digits, *s2e=s2+larger-&gt;mLength;
+<a name="l00109"></a>00109 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keywordflow">while</span> (s1&lt;s1e) *t++ = *s1++ | *s2++;
+<a name="l00112"></a>00112 <span class="keywordflow">while</span> (s2&lt;s2e) *t++ = *s2++;
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00115"></a>00115 <span class="keywordflow">return</span> r;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n2) {
+<a name="l00119"></a>00119 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt; larger-&gt;mLength) std::swap(smaller, larger);
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
+<a name="l00123"></a>00123 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00124"></a>00124 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger-&gt;mLength);
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00127"></a>00127 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger-&gt;digits, *s2e=s2+larger-&gt;mLength;
+<a name="l00128"></a>00128 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keywordflow">while</span> (s1&lt;s1e) *t++ = *s1++ ^ *s2++;
+<a name="l00131"></a>00131 <span class="keywordflow">while</span> (s2&lt;s2e) *t++ = *s2++;
 <a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00134"></a>00134 <span class="keywordflow">if</span> (smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt; larger-&gt;mLength) std::swap(smaller, larger);
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> r;
-<a name="l00137"></a>00137 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00138"></a>00138 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, *s2=larger-&gt;digits;
-<a name="l00141"></a>00141 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="keywordflow">while</span> (s1 &lt; s1e) *t++ = *s1++ &amp; *s2++;
+<a name="l00133"></a>00133 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> r;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">int</span> byBits) {
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (byBits &gt; 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">shift_left</a>(n, byBits);
+<a name="l00139"></a>00139 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">shift_right</a>(n, -byBits);
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00143"></a>00143 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
 <a name="l00144"></a>00144
-<a name="l00145"></a>00145 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> r;
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00155"></a>00155 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n2) {
-<a name="l00156"></a>00156 n1.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00157"></a>00157 n2.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00160"></a>00160 <span class="keywordflow">if</span> (smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt; larger-&gt;mLength) std::swap(smaller, larger);
+<a name="l00145"></a>00145 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> nn(n);
+<a name="l00146"></a>00146 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00147"></a>00147 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(byBits);
+<a name="l00148"></a>00148 <span class="keywordflow">return</span> nn;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> nn(n);
+<a name="l00155"></a>00155 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00156"></a>00156 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(byBits);
+<a name="l00157"></a>00157 <span class="keywordflow">return</span> nn;
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 } <span class="comment">// namespace core</span>
 <a name="l00161"></a>00161
-<a name="l00162"></a>00162 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> r;
-<a name="l00163"></a>00163 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00164"></a>00164 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger-&gt;mLength);
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00167"></a>00167 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger-&gt;digits, *s2e=s2+larger-&gt;mLength;
-<a name="l00168"></a>00168 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="keywordflow">while</span> (s1&lt;s1e) *t++ = *s1++ | *s2++;
-<a name="l00171"></a>00171 <span class="keywordflow">while</span> (s2&lt;s2e) *t++ = *s2++;
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> r;
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00184"></a>00184 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n2) {
-<a name="l00185"></a>00185 n1.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00186"></a>00186 n2.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00189"></a>00189 <span class="keywordflow">if</span> (smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt; larger-&gt;mLength) std::swap(smaller, larger);
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> r;
-<a name="l00192"></a>00192 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00193"></a>00193 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger-&gt;mLength);
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00196"></a>00196 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger-&gt;digits, *s2e=s2+larger-&gt;mLength;
-<a name="l00197"></a>00197 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="keywordflow">while</span> (s1&lt;s1e) *t++ = *s1++ ^ *s2++;
-<a name="l00200"></a>00200 <span class="keywordflow">while</span> (s2&lt;s2e) *t++ = *s2++;
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00203"></a>00203 <span class="keywordflow">return</span> r;
-<a name="l00204"></a>00204 }
-<a name="l00205"></a>00205
-<a name="l00214"></a>00214 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">int</span> byBits) {
-<a name="l00215"></a>00215 <span class="keywordflow">if</span> (byBits &gt; 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
-<a name="l00216"></a>00216 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(n, -byBits);
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218
-<a name="l00226"></a>00226 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> byBits) {
-<a name="l00227"></a>00227 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> nn(n);
-<a name="l00232"></a>00232 nn.<a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00233"></a>00233 nn.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(byBits);
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> nn;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00244"></a>00244 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> byBits) {
-<a name="l00245"></a>00245 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00246"></a>00246
-<a name="l00247"></a>00247 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> nn(n);
-<a name="l00250"></a>00250 nn.<a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00251"></a>00251 nn.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>()-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(byBits);
-<a name="l00252"></a>00252 <span class="keywordflow">return</span> nn;
+<a name="l00172"></a>00172 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00173"></a>00173 <span class="keywordflow">try</span> {
+<a name="l00174"></a>00174 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), bit);
+<a name="l00175"></a>00175 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00177"></a>00177 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00188"></a>00188 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(integer&amp; n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00189"></a>00189 <span class="keywordflow">try</span> {
+<a name="l00190"></a>00190 core::integer nn(n);
+<a name="l00191"></a>00191 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(nn, bit);
+<a name="l00192"></a>00192 n=integer(nn);
+<a name="l00193"></a>00193 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 }
+<a name="l00197"></a>00197
+<a name="l00205"></a>00205 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(integer&amp; n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00206"></a>00206 <span class="keywordflow">try</span> {
+<a name="l00207"></a>00207 core::integer nn(n);
+<a name="l00208"></a>00208 <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(nn, bit);
+<a name="l00209"></a>00209 n=integer(nn);
+<a name="l00210"></a>00210 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214
+<a name="l00226"></a>00226 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00227"></a>00227 <span class="keywordflow">try</span> {
+<a name="l00228"></a>00228 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(core::integer(n), valueIfZero);
+<a name="l00229"></a>00229 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00230"></a>00230 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00231"></a>00231 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233 }
+<a name="l00234"></a>00234
+<a name="l00246"></a>00246 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00247"></a>00247 <span class="keywordflow">try</span> {
+<a name="l00248"></a>00248 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(core::integer(n), valueIfZero);
+<a name="l00249"></a>00249 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00250"></a>00250 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00251"></a>00251 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00252"></a>00252 }
 <a name="l00253"></a>00253 }
 <a name="l00254"></a>00254
-<a name="l00255"></a>00255 } <span class="comment">// namespace xint</span>
-<a name="l00256"></a>00256 } <span class="comment">// namespace boost</span>
+<a name="l00261"></a>00261 integer <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> integer&amp; n1, <span class="keyword">const</span> integer&amp; n2) {
+<a name="l00262"></a>00262 <span class="keywordflow">try</span> {
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(core::integer(n1), core::integer(n2)));
+<a name="l00264"></a>00264 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00265"></a>00265 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00266"></a>00266 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00267"></a>00267 }
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269
+<a name="l00276"></a>00276 integer <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(<span class="keyword">const</span> integer&amp; n1, <span class="keyword">const</span> integer&amp; n2) {
+<a name="l00277"></a>00277 <span class="keywordflow">try</span> {
+<a name="l00278"></a>00278 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(core::integer(n1), core::integer(n2)));
+<a name="l00279"></a>00279 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00280"></a>00280 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00281"></a>00281 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00282"></a>00282 }
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284
+<a name="l00292"></a>00292 integer <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> integer&amp; n1, <span class="keyword">const</span> integer&amp; n2) {
+<a name="l00293"></a>00293 <span class="keywordflow">try</span> {
+<a name="l00294"></a>00294 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(core::integer(n1), core::integer(n2)));
+<a name="l00295"></a>00295 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00296"></a>00296 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00297"></a>00297 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00298"></a>00298 }
+<a name="l00299"></a>00299 }
+<a name="l00300"></a>00300
+<a name="l00309"></a>00309 integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">int</span> byBits) {
+<a name="l00310"></a>00310 <span class="keywordflow">if</span> (byBits &gt; 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
+<a name="l00311"></a>00311 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(n, -byBits);
+<a name="l00312"></a>00312 }
+<a name="l00313"></a>00313
+<a name="l00321"></a>00321 integer <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00322"></a>00322 <span class="keywordflow">try</span> {
+<a name="l00323"></a>00323 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(core::integer(n), byBits));
+<a name="l00324"></a>00324 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00325"></a>00325 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00326"></a>00326 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00327"></a>00327 }
+<a name="l00328"></a>00328 }
+<a name="l00329"></a>00329
+<a name="l00337"></a>00337 integer <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00338"></a>00338 <span class="keywordflow">try</span> {
+<a name="l00339"></a>00339 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(core::integer(n), byBits));
+<a name="l00340"></a>00340 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00341"></a>00341 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00342"></a>00342 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00343"></a>00343 }
+<a name="l00344"></a>00344 }
+<a name="l00345"></a>00345
+<a name="l00346"></a>00346 } <span class="comment">// namespace xint</span>
+<a name="l00347"></a>00347 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Added: sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::cannot_represent Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1cannot__represent.html">boost::xint::cannot_represent</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">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_1cannot__represent.html">boost::xint::cannot_represent</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,77 @@
+<!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::cannot_represent Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1cannot__represent.html">cannot_represent</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::cannot_represent Class Reference</h1><!-- doxytag: class="boost::xint::cannot_represent" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">cannot_represent</a> (const std::string &amp;what=&quot;cannot represent the requested value&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00635">635</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a940b731d15c77c43abef5d6053fd5d75"></a><!-- doxytag: member="boost::xint::cannot_represent::cannot_represent" ref="a940b731d15c77c43abef5d6053fd5d75" args="(const std::string &amp;what=&quot;cannot represent the requested value&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::cannot_represent::cannot_represent </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;cannot&nbsp;represent&nbsp;the&nbsp;requested&nbsp;value&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00637">637</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,79 @@
+<!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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::core::integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">_detach</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5f004409e37511908168a4ee9961c6a1">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aca9d6394bb912c96137f7129e7a0813a">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(detail::digit_t init=0)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a>(const integer &amp;c)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(bool negative)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a></td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">integer</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a151c3360e342e84de651143d1cfba86f">integer</a>(const ::boost::xint::integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">integer</a>(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">integer</a>(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">integer</a>(const std::string &amp;str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">operator%=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">operator&amp;=</a>(const integer &amp;n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab04d9f5bfe1d4b9d10acf4cf3f8a6115">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab30e34305c00e55f9ea0012085c49c9d">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">operator/=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">operator&lt;&lt;</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">operator&lt;&lt;=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a>(const integer &amp;c)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">operator&gt;&gt;</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator&gt;&gt;=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a>(const integer &amp;n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a>(const integer &amp;n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">~integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,1019 @@
+<!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::core::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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1core.html">core</a>::<a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::core::integer Class Reference</h1><!-- doxytag: class="boost::xint::core::integer" -->
+<p>The <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Constructors &amp; Destructors</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpab1e74c734dea693114ec1f1cb9434ad"></a> </p>
+<br/><br/></div></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_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a> ()</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_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">integer</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;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_1core_1_1integer.html#a151c3360e342e84de651143d1cfba86f">integer</a> (const ::<a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> &amp;b)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename T &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_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">integer</a> (const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *=0)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename T &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_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">integer</a> (const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *=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_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">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_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">~integer</a> ()</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>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab04d9f5bfe1d4b9d10acf4cf3f8a6115">operator++</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab30e34305c00e55f9ea0012085c49c9d">operator--</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">operator&amp;=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">operator&lt;&lt;</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">operator&gt;&gt;</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">operator&lt;&lt;=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator&gt;&gt;=</a> (size_t shift)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf5be5219a55995e13d6b8d7bf99ed653"></a> </p>
+<br/><br/></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_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">odd</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_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">even</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_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a> () const </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_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">hex_digits</a> () const </td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5f004409e37511908168a4ee9961c6a1">_get_data</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">_get_digit</a> (size_t index) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aca9d6394bb912c96137f7129e7a0813a">_get_digit</a> (size_t index, bool) const </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_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a> () const </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_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a> (bool negative)</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_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a> ()</td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbc92fcddffc2f3092779f92fe2501e4a"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a> ()</td></tr>
+<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;c)</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_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a> (boost::uintmax_t n)</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_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a> ()</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_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">_detach</a> ()</td></tr>
+<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> class. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00142">142</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a4e99025a3cdbf0777f90effe05e97625"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="a4e99025a3cdbf0777f90effe05e97625" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</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_8cpp_source.html#l00036">36</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa8a21b616c6c6f78f3c49686f897b067"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="aa8a21b616c6c6f78f3c49686f897b067" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00040">40</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a151c3360e342e84de651143d1cfba86f"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="a151c3360e342e84de651143d1cfba86f" args="(const ::boost::xint::integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const ::<a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [explicit]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00044">44</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afb6b73128973a835a261546f0a7fa0e7"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="afb6b73128973a835a261546f0a7fa0e7" args="(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T &amp;&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; T &gt; &gt;::type *&nbsp;</td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *&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>Definition at line <a class="el" href="xint_8hpp_source.html#l00706">706</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a570690c9233ceb8d73dccb9af052f12b"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="a570690c9233ceb8d73dccb9af052f12b" args="(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T &amp;&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; T &gt; &gt;::type *&nbsp;</td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *&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>Definition at line <a class="el" href="xint_8hpp_source.html#l00728">728</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa5b9d9f104ce714700b4a3a40eefb80f"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="aa5b9d9f104ce714700b4a3a40eefb80f" args="(const std::string &amp;str, size_t base=10)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</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> [explicit]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00058">58</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a38cca795dabe23e124640fec8b46bdf5"></a><!-- doxytag: member="boost::xint::core::integer::~integer" ref="a38cca795dabe23e124640fec8b46bdf5" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::~integer </td>
+ <td>(</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_8cpp_source.html#l00062">62</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a36b2dd01107d790e21121f9a90972e77"></a><!-- doxytag: member="boost::xint::core::integer::_attach" ref="a36b2dd01107d790e21121f9a90972e77" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_attach </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00103">103</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad03731b064ba24811f506e793b75c9e7"></a><!-- doxytag: member="boost::xint::core::integer::_detach" ref="ad03731b064ba24811f506e793b75c9e7" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_detach </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00107">107</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5f004409e37511908168a4ee9961c6a1"></a><!-- doxytag: member="boost::xint::core::integer::_get_data" ref="a5f004409e37511908168a4ee9961c6a1" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a>* boost::xint::core::integer::_get_data </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="xint_8hpp_source.html#l00202">202</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab0f5826f4653322ed8ff31a74bade0d4"></a><!-- doxytag: member="boost::xint::core::integer::_get_data" ref="ab0f5826f4653322ed8ff31a74bade0d4" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a>* boost::xint::core::integer::_get_data </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="xint_8hpp_source.html#l00201">201</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aca9d6394bb912c96137f7129e7a0813a"></a><!-- doxytag: member="boost::xint::core::integer::_get_digit" ref="aca9d6394bb912c96137f7129e7a0813a" args="(size_t index, bool) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> boost::xint::core::integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>index</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00233">233</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a78bf0cc9214b8f0b1217d4b815a06827"></a><!-- doxytag: member="boost::xint::core::integer::_get_digit" ref="a78bf0cc9214b8f0b1217d4b815a06827" args="(size_t index) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> boost::xint::core::integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>index</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00229">229</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a61ca83a82f49f63b3de8729cc9857f0c"></a><!-- doxytag: member="boost::xint::core::integer::_get_length" ref="a61ca83a82f49f63b3de8729cc9857f0c" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::core::integer::_get_length </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00238">238</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a275c6dc7e675e5395ab16d92c9851429"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="a275c6dc7e675e5395ab16d92c9851429" args="(boost::uintmax_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_init </td>
+ <td>(</td>
+ <td class="paramtype">boost::uintmax_t&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00084">84</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab02f3ddc3b8bd2f892f8a072427076b4"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="ab02f3ddc3b8bd2f892f8a072427076b4" args="(const integer &amp;c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_init </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>c</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00075">75</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0a8f95e339c5c30a23313a4af6a40b51"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="a0a8f95e339c5c30a23313a4af6a40b51" args="(detail::digit_t init=0)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_init </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>&nbsp;</td>
+ <td class="paramname"> <em>init</em> = <code>0</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00066">66</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1f1b1c19c7c3ec22972124abdbd08cc1"></a><!-- doxytag: member="boost::xint::core::integer::_make_unique" ref="a1f1b1c19c7c3ec22972124abdbd08cc1" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_make_unique </td>
+ <td>(</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_8cpp_source.html#l00112">112</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a66b8657cfa608ce2fd95bfad869e09b3"></a><!-- doxytag: member="boost::xint::core::integer::_set_negative" ref="a66b8657cfa608ce2fd95bfad869e09b3" args="(bool negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_set_negative </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>negative</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00125">125</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a61bef2a0575b9f331ca32686e489c9d3"></a><!-- doxytag: member="boost::xint::core::integer::even" ref="a61bef2a0575b9f331ca32686e489c9d3" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::integer::even </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00137">137</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a615f128085bba5e711c24be546449f43"></a><!-- doxytag: member="boost::xint::core::integer::hex_digits" ref="a615f128085bba5e711c24be546449f43" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::core::integer::hex_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00146">146</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9eacfa2b1eea176019597ea25023e40e"></a><!-- doxytag: member="boost::xint::core::integer::odd" ref="a9eacfa2b1eea176019597ea25023e40e" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::integer::odd </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00133">133</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afcf74b546cda2690025c75325365a0fe"></a><!-- doxytag: member="boost::xint::core::integer::one" ref="afcf74b546cda2690025c75325365a0fe" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::one </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00224">224</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a182855c5d54a78bad4fde3e807d2cce1"></a><!-- doxytag: member="boost::xint::core::integer::operator%=" ref="a182855c5d54a78bad4fde3e807d2cce1" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator%= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00190">190</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a00b096912c273f06aa0c0ea1284573d3"></a><!-- doxytag: member="boost::xint::core::integer::operator&amp;=" ref="a00b096912c273f06aa0c0ea1284573d3" args="(const integer &amp;n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator&amp;= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00199">199</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6eb52f1f84758e968ae7ae684436a9bb"></a><!-- doxytag: member="boost::xint::core::integer::operator*=" ref="a6eb52f1f84758e968ae7ae684436a9bb" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator*= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00188">188</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab04d9f5bfe1d4b9d10acf4cf3f8a6115"></a><!-- doxytag: member="boost::xint::core::integer::operator++" ref="ab04d9f5bfe1d4b9d10acf4cf3f8a6115" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator++ </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postincrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00194">194</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa7e03bb3c9fe87c3205759d4ade6f714"></a><!-- doxytag: member="boost::xint::core::integer::operator++" ref="aa7e03bb3c9fe87c3205759d4ade6f714" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator++ </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Preincrement operator </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00192">192</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afa137efa8b9fde22a3758ba020b819b7"></a><!-- doxytag: member="boost::xint::core::integer::operator+=" ref="afa137efa8b9fde22a3758ba020b819b7" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator+= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00151">151</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab30e34305c00e55f9ea0012085c49c9d"></a><!-- doxytag: member="boost::xint::core::integer::operator&#45;&#45;" ref="ab30e34305c00e55f9ea0012085c49c9d" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator-- </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postdecrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00195">195</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af66a56ff7fcc62ed0d82a7f3205951fe"></a><!-- doxytag: member="boost::xint::core::integer::operator&#45;&#45;" ref="af66a56ff7fcc62ed0d82a7f3205951fe" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator-- </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Predecrement operator </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00193">193</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aab4918c70e19e08e650e827b2c89e83f"></a><!-- doxytag: member="boost::xint::core::integer::operator&#45;=" ref="aab4918c70e19e08e650e827b2c89e83f" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator-= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00165">165</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a62d24cd0e4f033f7e44d0eadcaffec21"></a><!-- doxytag: member="boost::xint::core::integer::operator/=" ref="a62d24cd0e4f033f7e44d0eadcaffec21" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator/= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00189">189</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a659279c9657ce38ef02c7290025cff5c"></a><!-- doxytag: member="boost::xint::core::integer::operator&lt;&lt;" ref="a659279c9657ce38ef02c7290025cff5c" args="(size_t shift) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00197">197</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afde4e3672f01fd2fd4bf6091ca4e0547"></a><!-- doxytag: member="boost::xint::core::integer::operator&lt;&lt;=" ref="afde4e3672f01fd2fd4bf6091ca4e0547" args="(size_t shift)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator&lt;&lt;= </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00203">203</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a25202c72bffb37f2f7342633f0435fed"></a><!-- doxytag: member="boost::xint::core::integer::operator=" ref="a25202c72bffb37f2f7342633f0435fed" args="(const integer &amp;c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>c</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00177">177</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a792aecee632de9b1a8822bc414bd2c64"></a><!-- doxytag: member="boost::xint::core::integer::operator&gt;&gt;" ref="a792aecee632de9b1a8822bc414bd2c64" args="(size_t shift) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::integer::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00198">198</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aac72a9392108a0f684e7f502bef3d8fe"></a><!-- doxytag: member="boost::xint::core::integer::operator&gt;&gt;=" ref="aac72a9392108a0f684e7f502bef3d8fe" args="(size_t shift)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator&gt;&gt;= </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00211">211</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6c572b5a2976a88f0b214b0732a6d689"></a><!-- doxytag: member="boost::xint::core::integer::operator^=" ref="a6c572b5a2976a88f0b214b0732a6d689" args="(const integer &amp;n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator^= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00201">201</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6778bfda930127b6f203cbb7967373b5"></a><!-- doxytag: member="boost::xint::core::integer::operator|=" ref="a6778bfda930127b6f203cbb7967373b5" args="(const integer &amp;n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::operator|= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00200">200</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abbb37de330e3a50ac3df337e5c0eb1c9"></a><!-- doxytag: member="boost::xint::core::integer::sign" ref="abbb37de330e3a50ac3df337e5c0eb1c9" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::core::integer::sign </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00141">141</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5c4fdf4a0fd9cefd3f72b38413e32e9a"></a><!-- doxytag: member="boost::xint::core::integer::zero" ref="a5c4fdf4a0fd9cefd3f72b38413e32e9a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &amp; boost::xint::core::integer::zero </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00219">219</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="a8abb914b0ac16a933a0f7792dc56a0fc"></a><!-- doxytag: member="boost::xint::core::integer::data" ref="a8abb914b0ac16a933a0f7792dc56a0fc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a>* <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">boost::xint::core::integer::data</a><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00217">217</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="integer_8cpp_source.html">integer.cpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::divide_by_zero Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">boost::xint::divide_by_zero</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">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_1divide__by__zero.html">boost::xint::divide_by_zero</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,77 @@
+<!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::divide_by_zero Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">divide_by_zero</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::divide_by_zero Class Reference</h1><!-- doxytag: class="boost::xint::divide_by_zero" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">divide_by_zero</a> (const std::string &amp;what=&quot;divide by zero error&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00625">625</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a67f133dc2856d38d2664f3c8d8c73fe4"></a><!-- doxytag: member="boost::xint::divide_by_zero::divide_by_zero" ref="a67f133dc2856d38d2664f3c8d8c73fe4" args="(const std::string &amp;what=&quot;divide by zero error&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::divide_by_zero::divide_by_zero </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;divide&nbsp;by&nbsp;zero&nbsp;error&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00627">627</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,74 @@
+<!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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9b98d94930ac6e0c4a6add69f622e6e2">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">_set_negative</a>(bool negative)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">integer</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a7fa5fba071118f89b965a221e7cb9c95">integer</a>(const core::integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#acf287891cafa7f5b20f5e56476fa1fc6">integer</a>(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">integer</a>(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">integer</a>(const std::string &amp;str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5">is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">nan</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">operator&amp;=</a>(const integer &amp;n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a>(const integer &amp;b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator&lt;&lt;</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">operator&lt;&lt;=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a>(const integer &amp;c)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">operator&gt;&gt;</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">operator&gt;&gt;=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a>(const integer &amp;n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a>(const integer &amp;n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">sign</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [static]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1integer.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1integer.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,1019 @@
+<!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::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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::integer Class Reference</h1><!-- doxytag: class="boost::xint::integer" -->
+<p>The extended integer class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Constructors &amp; Destructors</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpab1e74c734dea693114ec1f1cb9434ad"></a> </p>
+<br/><br/></div></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.html#a33ad2603be1c3ae3823523265f7ee600">integer</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with an initial value of zero. <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.html#afc2ddd14b40ab91640d10b134d2b7141">integer</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a copy of an existing <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. <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.html#a7fa5fba071118f89b965a221e7cb9c95">integer</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">core::integer</a> &amp;b)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> from a <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>. <br/></td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename T &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.html#acf287891cafa7f5b20f5e56476fa1fc6">integer</a> (const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *=0)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template&lt;typename T &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.html#a9941bbf92bcfa48233110c451e676f64">integer</a> (const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *=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.html#a179df60f5dc32f98b9f564ec20aff5a8">integer</a> (const std::string &amp;str, size_t base=10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> from a string representation. <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 <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> type doesn't have a fixed maximum size, there is no logical way to implement it. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">operator++</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">operator--</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">operator&amp;=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator&lt;&lt;</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">operator&gt;&gt;</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">operator&lt;&lt;=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">operator&gt;&gt;=</a> (size_t shift)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf5be5219a55995e13d6b8d7bf99ed653"></a> </p>
+<br/><br/></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.html#a5d17a8184d20e7829273f769550954c1">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">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">even</a> () const </td></tr>
+<tr><td class="mdescLeft">&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">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">sign</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests the sign of <code>*this</code>. <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.html#a65fb2696f8506a6db16b8fb422c98ff5">is_nan</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests <code>*this</code> for Not-a-Number. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">hex_digits</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells you roughly how large an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> is. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a>These functions allow access to the internals of the integer. They are intended for internal use only. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">_get_data</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a> (size_t index) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9b98d94930ac6e0c4a6add69f622e6e2">_get_digit</a> (size_t index, bool) const </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_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a> () const </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.html#ae19edd0d1ee7ecc2d7115b3d489fed55">_set_negative</a> (bool negative)</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.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a> ()</td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbc92fcddffc2f3092779f92fe2501e4a"></a> These return preconstructed integers with the values named by the functions. They are used internally, so that the most common values don't have to be constructed each time they're needed, but they are available to your own code as well. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">nan</a> ()</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The extended integer class. </p>
+<p>This class implements the main <code><a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a></code> type.</p>
+<p>There are only a few member functions; most of the functionality is implemented using standalone functions.</p>
+<p>Functions that start with an underscore (such as <code>_make_unique</code>) are intended for internal use only. They may change arbitrarily in future versions. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00236">236</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a33ad2603be1c3ae3823523265f7ee600"></a><!-- doxytag: member="boost::xint::integer::integer" ref="a33ad2603be1c3ae3823523265f7ee600" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a new <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with an initial value of zero. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00254">254</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afc2ddd14b40ab91640d10b134d2b7141"></a><!-- doxytag: member="boost::xint::integer::integer" ref="afc2ddd14b40ab91640d10b134d2b7141" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a copy of an existing <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. </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>b</em>&nbsp;</td><td>An existing <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. If passed a Not-a-Number, it will create another Not-a-Number.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00269">269</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7fa5fba071118f89b965a221e7cb9c95"></a><!-- doxytag: member="boost::xint::integer::integer" ref="a7fa5fba071118f89b965a221e7cb9c95" args="(const core::integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">core::integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> from a <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>. </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>b</em>&nbsp;</td><td>An existing <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00284">284</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acf287891cafa7f5b20f5e56476fa1fc6"></a><!-- doxytag: member="boost::xint::integer::integer" ref="acf287891cafa7f5b20f5e56476fa1fc6" args="(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T &amp;&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; T &gt; &gt;::type *&nbsp;</td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if&lt; boost::is_signed&lt; T &gt; &gt;::type *&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 <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> object with the value of the built-in signed integer passed to it.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>A number of type <code>T</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em>&nbsp;</td><td>The type of <code>n</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00750">750</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9941bbf92bcfa48233110c451e676f64"></a><!-- doxytag: member="boost::xint::integer::integer" ref="a9941bbf92bcfa48233110c451e676f64" args="(const T &amp;n, typename boost::enable_if&lt; boost::is_integral&lt; T &gt; &gt;::type *=0, typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T &amp;&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; T &gt; &gt;::type *&nbsp;</td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if&lt; boost::is_unsigned&lt; T &gt; &gt;::type *&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 <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> object with the value of the built-in unsigned integer passed to it.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>A number of type <code>T</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em>&nbsp;</td><td>The type of <code>n</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00776">776</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a179df60f5dc32f98b9f564ec20aff5a8"></a><!-- doxytag: member="boost::xint::integer::integer" ref="a179df60f5dc32f98b9f564ec20aff5a8" args="(const std::string &amp;str, size_t base=10)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </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> [explicit]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Create an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> from a string representation. </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>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 of the number, or <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::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">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em>&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 will convert a string representation of a number into an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. See the description of the <a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">xint::from_string</a> function for details on its behavior.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>This is the most common way to initialize values that are too large to fit into a native integral type.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00316">316</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a0e1746983d1ee61685a09a052278866e"></a><!-- doxytag: member="boost::xint::integer::_get_data" ref="a0e1746983d1ee61685a09a052278866e" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a>* boost::xint::integer::_get_data </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="xint_8hpp_source.html#l00312">312</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a638bbe92022faee60d3009b60cc1e556"></a><!-- doxytag: member="boost::xint::integer::_get_data" ref="a638bbe92022faee60d3009b60cc1e556" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a>* boost::xint::integer::_get_data </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="xint_8hpp_source.html#l00311">311</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9b98d94930ac6e0c4a6add69f622e6e2"></a><!-- doxytag: member="boost::xint::integer::_get_digit" ref="a9b98d94930ac6e0c4a6add69f622e6e2" args="(size_t index, bool) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> boost::xint::integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>index</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00492">492</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acb5a0571dc9544921e603c00a0c6c93a"></a><!-- doxytag: member="boost::xint::integer::_get_digit" ref="acb5a0571dc9544921e603c00a0c6c93a" args="(size_t index) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> boost::xint::integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>index</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00488">488</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad4a65fa154847321803888988d18d244"></a><!-- doxytag: member="boost::xint::integer::_get_length" ref="ad4a65fa154847321803888988d18d244" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::integer::_get_length </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00497">497</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a04331a88bb2a975a7349e0c04cb230de"></a><!-- doxytag: member="boost::xint::integer::_make_unique" ref="a04331a88bb2a975a7349e0c04cb230de" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::integer::_make_unique </td>
+ <td>(</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_8cpp_source.html#l00556">556</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae19edd0d1ee7ecc2d7115b3d489fed55"></a><!-- doxytag: member="boost::xint::integer::_set_negative" ref="ae19edd0d1ee7ecc2d7115b3d489fed55" args="(bool negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::integer::_set_negative </td>
+ <td>(</td>
+ <td class="paramtype">bool&nbsp;</td>
+ <td class="paramname"> <em>negative</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00572">572</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afa36410b307d227f66657ea6f2116bdb"></a><!-- doxytag: member="boost::xint::integer::even" ref="afa36410b307d227f66657ea6f2116bdb" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::integer::even </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests the lowest bit of <code>*this</code> to determine evenness. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00347">347</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af9206e301a190df90fa2e76a30238c6f"></a><!-- doxytag: member="boost::xint::integer::hex_digits" ref="af9206e301a190df90fa2e76a30238c6f" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::integer::hex_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tells you roughly how large an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> is. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The number of hexadecimal digits that would be required to encode <code>this</code>.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00378">378</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a65fb2696f8506a6db16b8fb422c98ff5"></a><!-- doxytag: member="boost::xint::integer::is_nan" ref="a65fb2696f8506a6db16b8fb422c98ff5" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::integer::is_nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests <code>*this</code> for Not-a-Number. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is Not-a-Number, otherwise <code>false</code>.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nan.html">The Not-a-Number Value</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00393">393</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a379808d01a0e66ac61f309f211c4fb44"></a><!-- doxytag: member="boost::xint::integer::nan" ref="a379808d01a0e66ac61f309f211c4fb44" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00478">478</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5d17a8184d20e7829273f769550954c1"></a><!-- doxytag: member="boost::xint::integer::odd" ref="a5d17a8184d20e7829273f769550954c1" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::integer::odd </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests the lowest bit of <code>*this</code> to determine oddness. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00333">333</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa332681715634b73118ffe76090a75d3"></a><!-- doxytag: member="boost::xint::integer::one" ref="aa332681715634b73118ffe76090a75d3" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::one </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00473">473</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1acfe3b61f26b7168fd103521f6deee9"></a><!-- doxytag: member="boost::xint::integer::operator%=" ref="a1acfe3b61f26b7168fd103521f6deee9" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator%= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00435">435</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a717edb41c50edbd4b601c38b1fc6a8b0"></a><!-- doxytag: member="boost::xint::integer::operator&amp;=" ref="a717edb41c50edbd4b601c38b1fc6a8b0" args="(const integer &amp;n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator&amp;= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00444">444</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3452b0a1af51a556bdcb6a3d087b44db"></a><!-- doxytag: member="boost::xint::integer::operator*=" ref="a3452b0a1af51a556bdcb6a3d087b44db" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator*= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00433">433</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acdb4dc0521b76fbb0e667905fddaaada"></a><!-- doxytag: member="boost::xint::integer::operator++" ref="acdb4dc0521b76fbb0e667905fddaaada" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator++ </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postincrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00439">439</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab15c60f8f28c2f520a26ab19e33c280c"></a><!-- doxytag: member="boost::xint::integer::operator++" ref="ab15c60f8f28c2f520a26ab19e33c280c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator++ </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Preincrement operator </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00437">437</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8ba263f6a5e51c15e3c51241d113c35e"></a><!-- doxytag: member="boost::xint::integer::operator+=" ref="a8ba263f6a5e51c15e3c51241d113c35e" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator+= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00397">397</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a628a1e9614bcb4d0916dd7869877807d"></a><!-- doxytag: member="boost::xint::integer::operator&#45;&#45;" ref="a628a1e9614bcb4d0916dd7869877807d" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator-- </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postdecrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00440">440</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa535f200d1d95306aae3d5f991df4e8f"></a><!-- doxytag: member="boost::xint::integer::operator&#45;&#45;" ref="aa535f200d1d95306aae3d5f991df4e8f" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator-- </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Predecrement operator </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00438">438</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a92f8f3cb4e080c43d889103e7606b7ba"></a><!-- doxytag: member="boost::xint::integer::operator&#45;=" ref="a92f8f3cb4e080c43d889103e7606b7ba" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator-= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00407">407</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9e630e1f2cf12d29ad01de9c44dc8e3c"></a><!-- doxytag: member="boost::xint::integer::operator/=" ref="a9e630e1f2cf12d29ad01de9c44dc8e3c" args="(const integer &amp;b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator/= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>b</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00434">434</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abc90075da0adaef0da2d0083e59af414"></a><!-- doxytag: member="boost::xint::integer::operator&lt;&lt;" ref="abc90075da0adaef0da2d0083e59af414" args="(size_t shift) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00442">442</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a33f0a1167639a60ac8ad8ef0f3d3f585"></a><!-- doxytag: member="boost::xint::integer::operator&lt;&lt;=" ref="a33f0a1167639a60ac8ad8ef0f3d3f585" args="(size_t shift)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator&lt;&lt;= </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00448">448</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9ae8cfa93f2e43cf0471266c54b06be2"></a><!-- doxytag: member="boost::xint::integer::operator=" ref="a9ae8cfa93f2e43cf0471266c54b06be2" args="(const integer &amp;c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>c</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00417">417</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a22af7cfcb28f97f4c8b78939265b46d6"></a><!-- doxytag: member="boost::xint::integer::operator&gt;&gt;" ref="a22af7cfcb28f97f4c8b78939265b46d6" args="(size_t shift) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::integer::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00443">443</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0ca39c4cb36160461fb9848cc9e7f2d4"></a><!-- doxytag: member="boost::xint::integer::operator&gt;&gt;=" ref="a0ca39c4cb36160461fb9848cc9e7f2d4" args="(size_t shift)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator&gt;&gt;= </td>
+ <td>(</td>
+ <td class="paramtype">size_t&nbsp;</td>
+ <td class="paramname"> <em>shift</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00458">458</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a40fdf2cd80d53e173aa5129fe02289c3"></a><!-- doxytag: member="boost::xint::integer::operator^=" ref="a40fdf2cd80d53e173aa5129fe02289c3" args="(const integer &amp;n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator^= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00446">446</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1fa48e6c6cefec7ae672156d27e79ec6"></a><!-- doxytag: member="boost::xint::integer::operator|=" ref="a1fa48e6c6cefec7ae672156d27e79ec6" args="(const integer &amp;n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::operator|= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>n</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00445">445</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aea1bfa7f915f8d2a1e493aedb22bdd12"></a><!-- doxytag: member="boost::xint::integer::sign" ref="aea1bfa7f915f8d2a1e493aedb22bdd12" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::integer::sign </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests the sign of <code>*this</code>. </p>
+<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="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00362">362</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5c08ebe10f3f6333328b35193edd53d0"></a><!-- doxytag: member="boost::xint::integer::zero" ref="a5c08ebe10f3f6333328b35193edd53d0" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &amp; boost::xint::integer::zero </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00468">468</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="integer_8cpp_source.html">integer.cpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1invalid__base-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__base-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::invalid_base Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">invalid_base</a>(const std::string &amp;what=&quot;invalid base&quot;)</td><td><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1invalid__base.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__base.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,77 @@
+<!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::invalid_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1invalid__base.html">invalid_base</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::invalid_base Class Reference</h1><!-- doxytag: class="boost::xint::invalid_base" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">invalid_base</a> (const std::string &amp;what=&quot;invalid base&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00595">595</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a73c7125da5b1425c27b9f20aa3845078"></a><!-- doxytag: member="boost::xint::invalid_base::invalid_base" ref="a73c7125da5b1425c27b9f20aa3845078" args="(const std::string &amp;what=&quot;invalid base&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::invalid_base::invalid_base </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;invalid&nbsp;base&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00597">597</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::invalid_digit Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">invalid_digit</a>(const std::string &amp;what=&quot;invalid digit&quot;)</td><td><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,77 @@
+<!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::invalid_digit Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::invalid_digit Class Reference</h1><!-- doxytag: class="boost::xint::invalid_digit" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">invalid_digit</a> (const std::string &amp;what=&quot;invalid digit&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::range_error</code>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00605">605</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a02be633b5225e22839b547c4b0e8d4ca"></a><!-- doxytag: member="boost::xint::invalid_digit::invalid_digit" ref="a02be633b5225e22839b547c4b0e8d4ca" args="(const std::string &amp;what=&quot;invalid digit&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::invalid_digit::invalid_digit </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;invalid&nbsp;digit&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00607">607</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::invalid_modulus Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">boost::xint::invalid_modulus</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">invalid_modulus</a>(const std::string &amp;what=&quot;invalid modulus&quot;)</td><td><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">boost::xint::invalid_modulus</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,77 @@
+<!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::invalid_modulus Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">invalid_modulus</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::invalid_modulus Class Reference</h1><!-- doxytag: class="boost::xint::invalid_modulus" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">invalid_modulus</a> (const std::string &amp;what=&quot;invalid modulus&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::invalid_argument</code>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00615">615</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="aab32f87b83c6d8deca7d3ce4e887e03b"></a><!-- doxytag: member="boost::xint::invalid_modulus::invalid_modulus" ref="aab32f87b83c6d8deca7d3ce4e887e03b" args="(const std::string &amp;what=&quot;invalid modulus&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::invalid_modulus::invalid_modulus </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;invalid&nbsp;modulus&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00617">617</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::no_strong_random Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1no__strong__random.html">boost::xint::no_strong_random</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">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_1no__strong__random.html">boost::xint::no_strong_random</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,79 @@
+<!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::no_strong_random Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1no__strong__random.html">no_strong_random</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::no_strong_random Class Reference</h1><!-- doxytag: class="boost::xint::no_strong_random" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">no_strong_random</a> (const std::string &amp;what=&quot;system does not have a strong random generator&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::runtime_error</code>.</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Cannot be blocked.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Thrown by the <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">xint::strong_random_generator</a> class's constructor, if the system does not provide a cryptographically-secure random generator. Also thrown if the generator fails when asked to provide a random value, though this should be vanishingly rare. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00680">680</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a4c6cd31c06363212c0f1e21ba6718d58"></a><!-- doxytag: member="boost::xint::no_strong_random::no_strong_random" ref="a4c6cd31c06363212c0f1e21ba6718d58" args="(const std::string &amp;what=&quot;system does not have a strong random generator&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::no_strong_random::no_strong_random </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;system&nbsp;does&nbsp;not&nbsp;have&nbsp;a&nbsp;strong&nbsp;random&nbsp;generator&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00682">682</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1not__a__number-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1not__a__number-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::not_a_number Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1not__a__number.html">boost::xint::not_a_number</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">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_1not__a__number.html">boost::xint::not_a_number</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1not__a__number.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1not__a__number.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,79 @@
+<!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::not_a_number Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::not_a_number Class Reference</h1><!-- doxytag: class="boost::xint::not_a_number" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">not_a_number</a> (const std::string &amp;what=&quot;attempted to use a Not-a-Number&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::runtime_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Most library functions will throw an <a class="el" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a> exception if you try to use a <a class="el" href="nan.html">Not-a-Number value </a> in them.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>See this page for details on Not-a-Number. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00662">662</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a61a42fa00f7424f0e04e1f859fd40632"></a><!-- doxytag: member="boost::xint::not_a_number::not_a_number" ref="a61a42fa00f7424f0e04e1f859fd40632" args="(const std::string &amp;what=&quot;attempted to use a Not&#45;a&#45;Number&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::not_a_number::not_a_number </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;attempted&nbsp;to&nbsp;use&nbsp;a&nbsp;Not-a-Number&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00664">664</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1overflow__error-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1overflow__error-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::overflow_error Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1overflow__error.html">boost::xint::overflow_error</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">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_1overflow__error.html">boost::xint::overflow_error</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1overflow__error.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1overflow__error.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,78 @@
+<!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::overflow_error Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1overflow__error.html">overflow_error</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::overflow_error Class Reference</h1><!-- doxytag: class="boost::xint::overflow_error" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">overflow_error</a> (const std::string &amp;what=&quot;overflow error: can't obtain enough memory to represent the requested number&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::overflow_error</code>.</p>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Thrown when the library can't get enough memory to represent a number. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00694">694</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a6f37c836a5c2083a7be660c0bf1aeb00"></a><!-- doxytag: member="boost::xint::overflow_error::overflow_error" ref="a6f37c836a5c2083a7be660c0bf1aeb00" args="(const std::string &amp;what=&quot;overflow error: can't obtain enough memory to represent the requested number&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::overflow_error::overflow_error </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;overflow&nbsp;error:&nbsp;can't&nbsp;obtain&nbsp;enough&nbsp;memory&nbsp;to&nbsp;represent&nbsp;the&nbsp;requested&nbsp;number&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00696">696</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,46 @@
+<!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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::strong_random_generator Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">entropy</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">has_fixed_range</a></td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">max</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">max_value</a></td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">min</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">min_value</a></td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>()</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> typedef</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a>()</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a>()</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td><td></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,245 @@
+<!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::strong_random_generator 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::strong_random_generator Class Reference</h1><!-- doxytag: class="boost::xint::strong_random_generator" -->
+<p>A convenience class for cryptographically-secure random numbers.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<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 unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a></td></tr>
+<tr><td colspan="2"><h2>Public Member Functions</h2></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_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a> ()</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_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">min</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">max</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">entropy</a> () const </td></tr>
+<tr><td colspan="2"><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">has_fixed_range</a> = true</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">min_value</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">max_value</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A convenience class for cryptographically-secure random numbers. </p>
+<p>Used with <a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> to set the XInt library to use the system-supplied secure random number generator.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00339">339</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Member Typedef Documentation</h2>
+<a class="anchor" id="afb7490db5d65e0998290663ab7f5e688"></a><!-- doxytag: member="boost::xint::strong_random_generator::result_type" ref="afb7490db5d65e0998290663ab7f5e688" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned int <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">boost::xint::strong_random_generator::result_type</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00341">341</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a03606cc093b70870d2661aedccf12c26"></a><!-- doxytag: member="boost::xint::strong_random_generator::strong_random_generator" ref="a03606cc093b70870d2661aedccf12c26" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::strong_random_generator::strong_random_generator </td>
+ <td>(</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="random_8cpp_source.html#l00167">167</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a38abfddb5372dc090429ba1c4132ad9c"></a><!-- doxytag: member="boost::xint::strong_random_generator::~strong_random_generator" ref="a38abfddb5372dc090429ba1c4132ad9c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::strong_random_generator::~strong_random_generator </td>
+ <td>(</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="random_8cpp_source.html#l00168">168</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a1faed1bfa2b68731ecc2cb15f78e035b"></a><!-- doxytag: member="boost::xint::strong_random_generator::entropy" ref="a1faed1bfa2b68731ecc2cb15f78e035b" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double boost::xint::strong_random_generator::entropy </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="a4fa01769bdeb04ec7c55a7e8cb297922"></a><!-- doxytag: member="boost::xint::strong_random_generator::max" ref="a4fa01769bdeb04ec7c55a7e8cb297922" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> boost::xint::strong_random_generator::max </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="a6a7fac4a372011d55494e3b5dc7f3471"></a><!-- doxytag: member="boost::xint::strong_random_generator::min" ref="a6a7fac4a372011d55494e3b5dc7f3471" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> boost::xint::strong_random_generator::min </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="ae2afe16256095db48543b859530990b8"></a><!-- doxytag: member="boost::xint::strong_random_generator::operator()" ref="ae2afe16256095db48543b859530990b8" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> boost::xint::strong_random_generator::operator() </td>
+ <td>(</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="random_8cpp_source.html#l00169">169</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="a1fec38eaf8f94dbcb866e9ee495a1eef"></a><!-- doxytag: member="boost::xint::strong_random_generator::has_fixed_range" ref="a1fec38eaf8f94dbcb866e9ee495a1eef" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">boost::xint::strong_random_generator::has_fixed_range</a> = true<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00347">347</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab1ae2657dfc2cbce1511d9991c21a68b"></a><!-- doxytag: member="boost::xint::strong_random_generator::max_value" ref="ab1ae2657dfc2cbce1511d9991c21a68b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">boost::xint::strong_random_generator::max_value</a><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<b>Initial value:</b><div class="fragment"><pre class="fragment">
+ (std::numeric_limits&lt;impl_t::result_type&gt;::max)()
+</pre></div>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00349">349</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a487dc7bc2b00f9e692957fc7f7b2da25"></a><!-- doxytag: member="boost::xint::strong_random_generator::min_value" ref="a487dc7bc2b00f9e692957fc7f7b2da25" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">boost::xint::strong_random_generator::min_value</a><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<b>Initial value:</b><div class="fragment"><pre class="fragment">
+ (std::numeric_limits&lt;impl_t::result_type&gt;::min)()
+</pre></div>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00348">348</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+<li><a class="el" href="random_8cpp_source.html">random.cpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1too__big-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1too__big-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: 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.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::too_big Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1too__big.html">boost::xint::too_big</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">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_1too__big.html">boost::xint::too_big</a></td><td><code> [inline]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Added: sandbox/xint/doc/classboost_1_1xint_1_1too__big.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1too__big.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,77 @@
+<!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::too_big Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::too_big Class Reference</h1><!-- doxytag: class="boost::xint::too_big" -->
+<p>Exception class.
+More...</p>
+
+<p><code>#include &lt;<a class="el" href="xint_8hpp_source.html">xint.hpp</a>&gt;</code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">too_big</a> (const std::string &amp;what=&quot;value out of range for requested conversion&quot;)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Exception class. </p>
+<p>Derived from <code>std::range_error</code>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00645">645</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a91ca4f8a23e008c2ffc13608179226f3"></a><!-- doxytag: member="boost::xint::too_big::too_big" ref="a91ca4f8a23e008c2ffc13608179226f3" args="(const std::string &amp;what=&quot;value out of range for requested conversion&quot;)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::too_big::too_big </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&nbsp;</td>
+ <td class="paramname"> <em>what</em> = <code>&quot;value&nbsp;out&nbsp;of&nbsp;range&nbsp;for&nbsp;requested&nbsp;conversion&quot;</code></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00647">647</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
+</body>
+</html>

Modified: sandbox/xint/doc/classes.html
==============================================================================
--- sandbox/xint/doc/classes.html (original)
+++ sandbox/xint/doc/classes.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -36,12 +36,12 @@
 </td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Q&nbsp;&nbsp;</div></td></tr></table>
 </td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&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="classboost_1_1xint_1_1integer.html">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_1no__strong__random.html">no_strong_random</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">data_t::QuickDigits</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>)&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_1cannot__represent.html">cannot_represent</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_1invalid__base.html">invalid_base</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_1not__a__number.html">not_a_number</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">cannot_represent</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;R&nbsp;&nbsp;</div></td></tr></table>
 </td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>)&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 class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</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_1detail_1_1random__generator.html">random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>)&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_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_Q">Q</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbs
p;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a></div>
+</td><td><a class="el" href="classboost_1_1xint_1_1invalid__base.html">invalid_base</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&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_1detail_1_1random__generator.html">random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>)&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_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#lett
er_N">N</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_O">O</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Q">Q</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_R">R</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_T">T</a></div>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/compare_8cpp.html
==============================================================================
--- sandbox/xint/doc/compare_8cpp.html (original)
+++ sandbox/xint/doc/compare_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -31,6 +31,7 @@
 <a href="#_details">More...</a></p>
 <code>#include &quot;../boost/xint/xint.hpp&quot;</code><br/>
 <code>#include &quot;../boost/xint/xint_data_t.hpp&quot;</code><br/>
+<code>#include &lt;functional&gt;</code><br/>
 
 <p>Go to the source code of this file.</p>
 <table border="0" cellpadding="0" cellspacing="0">
@@ -38,10 +39,23 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core::compare</a> (const integer &amp;b1, const integer &amp;b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core::operator!</a> (const integer &amp;num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core::operator==</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core::operator!=</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core::operator&lt;</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core::operator&gt;</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core::operator&lt;=</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core::operator&gt;=</a> (const integer &amp;num1, const integer &amp;num2)</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>
 <br/><br/></div></td></tr>
@@ -50,20 +64,20 @@
 <tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
 <tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
 <br/><br/></div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">boost::xint::operator!</a> (const xint::integer &amp;num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">boost::xint::operator==</a> (const xint::integer &amp;num1, const xint::integer &amp;num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abf694043a7a1d64f35e90a275208ff2a">boost::xint::operator!=</a> (const xint::integer &amp;num1, const xint::integer &amp;num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0497944d7fa977eca5e5f6a140db07c3">boost::xint::operator&lt;</a> (const xint::integer &amp;num1, const xint::integer &amp;num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">boost::xint::operator&gt;</a> (const xint::integer &amp;num1, const xint::integer &amp;num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">boost::xint::operator&lt;=</a> (const xint::integer &amp;num1, const xint::integer &amp;num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">boost::xint::operator&gt;=</a> (const xint::integer &amp;num1, const xint::integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint::operator!</a> (const integer &amp;num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint::operator==</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint::operator!=</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint::operator&lt;</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint::operator&gt;</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint::operator&lt;=</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint::operator&gt;=</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Contains the the compare function and comparison operators. </p>
 
 <p>Definition in file <a class="el" href="compare_8cpp_source.html">compare.cpp</a>.</p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/compare_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/compare_8cpp_source.html (original)
+++ sandbox/xint/doc/compare_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -39,54 +39,105 @@
 <a name="l00013"></a>00013
 <a name="l00018"></a>00018 <span class="preprocessor">#include &quot;../boost/xint/xint.hpp&quot;</span>
 <a name="l00019"></a>00019 <span class="preprocessor">#include &quot;../boost/xint/xint_data_t.hpp&quot;</span>
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023
-<a name="l00036"></a>00036 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> integer &amp;b1, <span class="keyword">const</span> integer &amp;b2, <span class="keywordtype">bool</span> ignoresign) {
-<a name="l00037"></a>00037 b1._throw_if_nan();
-<a name="l00038"></a>00038 b2._throw_if_nan();
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="keywordflow">if</span> (!ignoresign) {
-<a name="l00041"></a>00041 <span class="keywordtype">int</span> sign1=b1.sign(), sign2=b2.sign();
-<a name="l00042"></a>00042 <span class="keywordflow">if</span> (sign1==0 &amp;&amp; sign2==0) <span class="keywordflow">return</span> 0;
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> -sign2;
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> sign1;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (sign1 != sign2) <span class="keywordflow">return</span> sign1;
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (sign1 &lt; 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(-b2, -b1, ignoresign);
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">const</span> detail::data_t *b1data=b1._get_data();
-<a name="l00051"></a>00051 <span class="keyword">const</span> detail::data_t *b2data=b2._get_data();
+<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;functional&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>core {
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(<span class="keyword">const</span> integer &amp;b1, <span class="keyword">const</span> integer &amp;b2, <span class="keywordtype">bool</span> ignoresign) {
+<a name="l00028"></a>00028 <span class="keywordflow">if</span> (!ignoresign) {
+<a name="l00029"></a>00029 <span class="keywordtype">int</span> sign1=b1.sign(), sign2=b2.sign();
+<a name="l00030"></a>00030 <span class="keywordflow">if</span> (sign1==0 &amp;&amp; sign2==0) <span class="keywordflow">return</span> 0;
+<a name="l00031"></a>00031 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> -sign2;
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> sign1;
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="keywordflow">if</span> (sign1 != sign2) <span class="keywordflow">return</span> sign1;
+<a name="l00035"></a>00035 <span class="keywordflow">if</span> (sign1 &lt; 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(-b2, -b1, ignoresign);
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="keyword">const</span> detail::data_t *b1data=b1._get_data();
+<a name="l00039"></a>00039 <span class="keyword">const</span> detail::data_t *b2data=b2._get_data();
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="keywordtype">int</span> answer=0;
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (b1data-&gt;mLength != b2data-&gt;mLength) {
+<a name="l00043"></a>00043 answer=((b1data-&gt;mLength &lt; b2data-&gt;mLength) ? -1 : 1);
+<a name="l00044"></a>00044 } <span class="keywordflow">else</span> {
+<a name="l00045"></a>00045 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = <span class="keywordtype">int</span>(b1data-&gt;mLength) - 1; x &gt;= 0; --x) {
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (b1data-&gt;digits[x] != b2data-&gt;digits[x]) {
+<a name="l00047"></a>00047 answer=((b1data-&gt;digits[x] &lt; b2data-&gt;digits[x]) ? -1 : 1);
+<a name="l00048"></a>00048 <span class="keywordflow">break</span>;
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051 }
 <a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordtype">int</span> answer=0;
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (b1data-&gt;mLength != b2data-&gt;mLength) {
-<a name="l00055"></a>00055 answer=((b1data-&gt;mLength &lt; b2data-&gt;mLength) ? -1 : 1);
-<a name="l00056"></a>00056 } <span class="keywordflow">else</span> {
-<a name="l00057"></a>00057 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = <span class="keywordtype">int</span>(b1data-&gt;mLength) - 1; x &gt;= 0; --x) {
-<a name="l00058"></a>00058 <span class="keywordflow">if</span> (b1data-&gt;digits[x] != b2data-&gt;digits[x]) {
-<a name="l00059"></a>00059 answer=((b1data-&gt;digits[x] &lt; b2data-&gt;digits[x]) ? -1 : 1);
-<a name="l00060"></a>00060 <span class="keywordflow">break</span>;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keywordflow">return</span> answer;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">operator!</a>(<span class="keyword">const</span> xint::integer &amp;num1) { <span class="keywordflow">return</span> num1.sign()==0; }
-<a name="l00069"></a>00069 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">operator==</a>(<span class="keyword">const</span> xint::integer &amp;num1, <span class="keyword">const</span> xint::integer &amp;num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">xint::compare</a>(num1, num2)==0; }
-<a name="l00070"></a>00070 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#abf694043a7a1d64f35e90a275208ff2a">operator!=</a>(<span class="keyword">const</span> xint::integer&amp; num1, <span class="keyword">const</span> xint::integer&amp; num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">xint::compare</a>(num1, num2)!=0; }
-<a name="l00071"></a>00071 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0497944d7fa977eca5e5f6a140db07c3">operator&lt;</a>(<span class="keyword">const</span> xint::integer&amp; num1, <span class="keyword">const</span> xint::integer&amp; num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">xint::compare</a>(num1, num2)&lt;0; }
-<a name="l00072"></a>00072 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">operator&gt;</a>(<span class="keyword">const</span> xint::integer&amp; num1, <span class="keyword">const</span> xint::integer&amp; num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">xint::compare</a>(num1, num2)&gt;0; }
-<a name="l00073"></a>00073 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">operator&lt;=</a>(<span class="keyword">const</span> xint::integer&amp; num1, <span class="keyword">const</span> xint::integer&amp; num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">xint::compare</a>(num1, num2)&lt;=0; }
-<a name="l00074"></a>00074 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">operator&gt;=</a>(<span class="keyword">const</span> xint::integer&amp; num1, <span class="keyword">const</span> xint::integer&amp; num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">xint::compare</a>(num1, num2)&gt;=0; }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 } <span class="comment">// namespace xint</span>
-<a name="l00077"></a>00077 } <span class="comment">// namespace boost</span>
+<a name="l00053"></a>00053 <span class="keywordflow">return</span> answer;
+<a name="l00054"></a>00054 }
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">operator!</a>(<span class="keyword">const</span> integer &amp;num1) { <span class="keywordflow">return</span> num1.sign()==0; }
+<a name="l00057"></a>00057 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">operator==</a>(<span class="keyword">const</span> integer &amp;num1, <span class="keyword">const</span> integer &amp;num2) {
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)==0; }
+<a name="l00059"></a>00059 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">operator!=</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)!=0; }
+<a name="l00061"></a>00061 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">operator&lt;</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00062"></a>00062 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)&lt;0; }
+<a name="l00063"></a>00063 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator&gt;</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)&gt;0; }
+<a name="l00065"></a>00065 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator&lt;=</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)&lt;=0; }
+<a name="l00067"></a>00067 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator&gt;=</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00068"></a>00068 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)&gt;=0; }
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 } <span class="comment">// namespace core</span>
+<a name="l00071"></a>00071
+<a name="l00086"></a>00086 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> integer &amp;b1, <span class="keyword">const</span> integer &amp;b2, <span class="keywordtype">bool</span> ignoresign) {
+<a name="l00087"></a>00087 <span class="keywordflow">try</span> {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(core::integer(b1), core::integer(b2));
+<a name="l00089"></a>00089 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093 }
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keyword">namespace </span>{
+<a name="l00096"></a>00096 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
+<a name="l00097"></a>00097 <span class="keywordtype">bool</span> cmp(<span class="keyword">const</span> integer &amp;num1, <span class="keyword">const</span> integer &amp;num2, <span class="keyword">const</span> T&amp; t) {
+<a name="l00098"></a>00098 <span class="keywordflow">try</span> {
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> t(<a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(core::integer(num1), core::integer(num2)), 0);
+<a name="l00100"></a>00100 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00102"></a>00102 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105 } <span class="comment">// namespace</span>
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(<span class="keyword">const</span> integer &amp;num1) {
+<a name="l00108"></a>00108 <span class="keywordflow">try</span> {
+<a name="l00109"></a>00109 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(core::integer(num1));
+<a name="l00110"></a>00110 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00112"></a>00112 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a>(<span class="keyword">const</span> integer &amp;num1, <span class="keyword">const</span> integer &amp;num2) {
+<a name="l00117"></a>00117 <span class="keywordflow">return</span> cmp(num1, num2, std::equal_to&lt;int&gt;()); }
+<a name="l00118"></a>00118 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> cmp(num1, num2, std::not_equal_to&lt;int&gt;()); }
+<a name="l00120"></a>00120 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator&lt;</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00121"></a>00121 <span class="keywordflow">return</span> cmp(num1, num2, std::less&lt;int&gt;()); }
+<a name="l00122"></a>00122 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator&gt;</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> cmp(num1, num2, std::greater&lt;int&gt;()); }
+<a name="l00124"></a>00124 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator&lt;=</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00125"></a>00125 <span class="keywordflow">return</span> cmp(num1, num2, std::less_equal&lt;int&gt;()); }
+<a name="l00126"></a>00126 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator&gt;=</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> cmp(num1, num2, std::greater_equal&lt;int&gt;()); }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 } <span class="comment">// namespace xint</span>
+<a name="l00130"></a>00130 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/convert_8cpp.html
==============================================================================
--- sandbox/xint/doc/convert_8cpp.html (original)
+++ sandbox/xint/doc/convert_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -41,10 +41,19 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core::to_string</a> (const integer &amp;n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core::from_string</a> (const std::string &amp;str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core::from_binary</a> (const std::string &amp;str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core::to_binary</a> (const integer &amp;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>
 <br/><br/></div></td></tr>
@@ -64,7 +73,7 @@
 
 <p>Definition in file <a class="el" href="convert_8cpp_source.html">convert.cpp</a>.</p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/convert_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/convert_8cpp_source.html (original)
+++ sandbox/xint/doc/convert_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -59,160 +59,182 @@
 <a name="l00045"></a>00045
 <a name="l00046"></a>00046 } <span class="comment">// namespace</span>
 <a name="l00047"></a>00047
-<a name="l00069"></a>00069 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (n.is_nan()) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>;
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (base&lt;2 || base&gt;36) {
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_base();
-<a name="l00073"></a>00073 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (n.sign()==0) <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 std::ostringstream out;
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (base==16) {
-<a name="l00080"></a>00080 <span class="comment">// Special no-division version, primarily for debugging division</span>
-<a name="l00081"></a>00081 <span class="keyword">const</span> data_t *ndata=n._get_data();
-<a name="l00082"></a>00082 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *firstDigit=ndata-&gt;digits,
-<a name="l00083"></a>00083 *lastDigit=firstDigit + ndata-&gt;mLength - 1;
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="keyword">const</span> <span class="keywordtype">int</span> bitsPerDigit=4;
-<a name="l00086"></a>00086 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) &lt;&lt; bitsPerDigit)-1;
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="comment">// Suppress any leading zeros</span>
-<a name="l00089"></a>00089 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=lastDigit;
-<a name="l00090"></a>00090 <span class="keywordtype">int</span> digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
-<a name="l00091"></a>00091 <span class="keywordflow">while</span> (digitShift &gt;= 0 &amp;&amp; ((*d &gt;&gt; digitShift) &amp; mask) == 0)
-<a name="l00092"></a>00092 digitShift -= bitsPerDigit;
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keywordflow">do</span> {
-<a name="l00095"></a>00095 <span class="keywordflow">while</span> (digitShift &gt;= 0) {
-<a name="l00096"></a>00096 out &lt;&lt; nToChar((*d &gt;&gt; digitShift) &amp; mask, uppercase);
-<a name="l00097"></a>00097 digitShift -= bitsPerDigit;
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
-<a name="l00101"></a>00101 } <span class="keywordflow">while</span> (d-- != firstDigit);
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 std::string r(n.sign() &lt; 0 ? std::string(<span class="stringliteral">&quot;-&quot;</span>)+out.str() : out.str());
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> r;
-<a name="l00105"></a>00105 } <span class="keywordflow">else</span> {
-<a name="l00106"></a>00106 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>=base;
-<a name="l00107"></a>00107 std::pair&lt;integer, integer&gt; a=std::make_pair(n, <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>());
-<a name="l00108"></a>00108 a.first._set_negative(<span class="keyword">false</span>);
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 integer r;
-<a name="l00111"></a>00111 <span class="keywordflow">while</span> (a.first.sign()!=0) {
-<a name="l00112"></a>00112 a=<a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(a.first, shift);
-<a name="l00113"></a>00113 out &lt;&lt; nToChar(a.second._get_digit(0), uppercase);
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="keywordflow">if</span> (n.sign() &lt; 0) out &lt;&lt; <span class="charliteral">&apos;-&apos;</span>;
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 std::string rval=out.str();
-<a name="l00119"></a>00119 std::reverse(rval.begin(), rval.end());
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> rval;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123
-<a name="l00150"></a>00150 integer <a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>=<span class="keyword">false</span>;
-<a name="l00154"></a>00154 <span class="keyword">const</span> <span class="keywordtype">char</span> *c=str.c_str();
-<a name="l00155"></a>00155 <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;+&apos;</span>) ++c;
-<a name="l00156"></a>00156 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;-&apos;</span>) { negate=<span class="keyword">true</span>; ++c; }
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
-<a name="l00159"></a>00159 <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;0&apos;</span>) {
-<a name="l00160"></a>00160 ++c;
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;x&apos;</span> || *c==<span class="charliteral">&apos;X&apos;</span>) {
-<a name="l00162"></a>00162 ++c;
-<a name="l00163"></a>00163 base=16;
-<a name="l00164"></a>00164 } <span class="keywordflow">else</span> base=8;
-<a name="l00165"></a>00165 } <span class="keywordflow">else</span> base=10;
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 <span class="keywordflow">if</span> (base&lt;2 || base&gt;36) {
-<a name="l00169"></a>00169 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_base();
-<a name="l00170"></a>00170 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (*c==0) {
-<a name="l00174"></a>00174 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">&quot;No valid digits&quot;</span>);
-<a name="l00175"></a>00175 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00176"></a>00176 }
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(base);
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 integer r;
-<a name="l00181"></a>00181 <span class="keywordflow">while</span> (*c) {
-<a name="l00182"></a>00182 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digit;
-<a name="l00183"></a>00183 <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&apos;0&apos;</span> &amp;&amp; *c&lt;=<span class="charliteral">&apos;9&apos;</span>) digit=*c-<span class="charliteral">&apos;0&apos;</span>;
-<a name="l00184"></a>00184 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&apos;A&apos;</span> &amp;&amp; *c&lt;=<span class="charliteral">&apos;Z&apos;</span>) digit=*c-<span class="charliteral">&apos;A&apos;</span>+10;
-<a name="l00185"></a>00185 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&apos;a&apos;</span> &amp;&amp; *c&lt;=<span class="charliteral">&apos;z&apos;</span>) digit=*c-<span class="charliteral">&apos;a&apos;</span>+10;
-<a name="l00186"></a>00186 <span class="keywordflow">else</span> {
-<a name="l00187"></a>00187 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">&quot;encountered non-alphanumeric character in string&quot;</span>);
-<a name="l00188"></a>00188 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <span class="keywordflow">if</span> (digit &gt;= base) {
-<a name="l00192"></a>00192 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">&quot;encountered digit greater than base allows&quot;</span>);
-<a name="l00193"></a>00193 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 r = (r * shift) + digit;
-<a name="l00197"></a>00197 ++c;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199 r._set_negative(negate);
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> r;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00212"></a>00212 integer <a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string&amp; str) {
-<a name="l00213"></a>00213 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
-<a name="l00214"></a>00214 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits&lt;unsigned char&gt;::digits;
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 integer r;
-<a name="l00217"></a>00217 detail::data_t *rdata=r.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>();
-<a name="l00218"></a>00218 rdata-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>((str.length() + bytesPerDigit - 1)/bytesPerDigit);
-<a name="l00219"></a>00219 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=rdata-&gt;digits;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s=(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)str.data(), *se=s+str.length();
-<a name="l00222"></a>00222 <span class="keywordflow">while</span> (s&lt;se) {
-<a name="l00223"></a>00223 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d=0;
-<a name="l00224"></a>00224 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i&lt;bytesPerDigit &amp;&amp; s&lt;se; ++i)
-<a name="l00225"></a>00225 d |= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(*s++) &lt;&lt; (i * bitsPerByte));
-<a name="l00226"></a>00226 *p++=d;
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228 rdata-&gt;skipLeadingZeros();
-<a name="l00229"></a>00229 <span class="keywordflow">return</span> r;
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231
-<a name="l00248"></a>00248 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> integer&amp; n) {
-<a name="l00249"></a>00249 n._throw_if_nan();
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
-<a name="l00252"></a>00252 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits&lt;unsigned char&gt;::digits;
-<a name="l00253"></a>00253 std::vector&lt;unsigned char&gt; temp;
-<a name="l00254"></a>00254 temp.reserve(n._get_length() * bytesPerDigit);
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 <span class="keyword">const</span> detail::data_t *ndata=n._get_data();
-<a name="l00257"></a>00257 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata-&gt;digits, *pe=p+n._get_length();
-<a name="l00258"></a>00258 <span class="keywordflow">while</span> (p != pe) {
-<a name="l00259"></a>00259 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d(*p++);
-<a name="l00260"></a>00260 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i&lt;bytesPerDigit; ++i) {
-<a name="l00261"></a>00261 temp.push_back((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(d));
-<a name="l00262"></a>00262 d &gt;&gt;= bitsPerByte;
-<a name="l00263"></a>00263 }
+<a name="l00048"></a>00048 <span class="keyword">namespace </span>core {
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">to_string</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (base&lt;2 || base&gt;36) <span class="keywordflow">throw</span> invalid_base();
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="keywordflow">if</span> (n.sign()==0) <span class="keywordflow">return</span> <span class="stringliteral">&quot;0&quot;</span>;
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 std::ostringstream out;
+<a name="l00056"></a>00056 <span class="keywordflow">if</span> (base==16) {
+<a name="l00057"></a>00057 <span class="comment">// Special no-division version, primarily for debugging division</span>
+<a name="l00058"></a>00058 <span class="keyword">const</span> data_t *ndata=n._get_data();
+<a name="l00059"></a>00059 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *firstDigit=ndata-&gt;digits,
+<a name="l00060"></a>00060 *lastDigit=firstDigit + ndata-&gt;mLength - 1;
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="keyword">const</span> <span class="keywordtype">int</span> bitsPerDigit=4;
+<a name="l00063"></a>00063 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) &lt;&lt; bitsPerDigit)-1;
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="comment">// Suppress any leading zeros</span>
+<a name="l00066"></a>00066 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=lastDigit;
+<a name="l00067"></a>00067 <span class="keywordtype">int</span> digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
+<a name="l00068"></a>00068 <span class="keywordflow">while</span> (digitShift &gt;= 0 &amp;&amp; ((*d &gt;&gt; digitShift) &amp; mask) == 0)
+<a name="l00069"></a>00069 digitShift -= bitsPerDigit;
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keywordflow">do</span> {
+<a name="l00072"></a>00072 <span class="keywordflow">while</span> (digitShift &gt;= 0) {
+<a name="l00073"></a>00073 out &lt;&lt; nToChar((*d &gt;&gt; digitShift) &amp; mask, uppercase);
+<a name="l00074"></a>00074 digitShift -= bitsPerDigit;
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
+<a name="l00078"></a>00078 } <span class="keywordflow">while</span> (d-- != firstDigit);
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 std::string r(n.sign() &lt; 0 ? std::string(<span class="stringliteral">&quot;-&quot;</span>)+out.str() : out.str());
+<a name="l00081"></a>00081 <span class="keywordflow">return</span> r;
+<a name="l00082"></a>00082 } <span class="keywordflow">else</span> {
+<a name="l00083"></a>00083 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>=base;
+<a name="l00084"></a>00084 std::pair&lt;integer, integer&gt; a=std::make_pair(n, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>());
+<a name="l00085"></a>00085 a.first._set_negative(<span class="keyword">false</span>);
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 integer r;
+<a name="l00088"></a>00088 <span class="keywordflow">while</span> (a.first.sign()!=0) {
+<a name="l00089"></a>00089 a=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">divide_r</a>(a.first, shift);
+<a name="l00090"></a>00090 out &lt;&lt; nToChar(a.second._get_digit(0), uppercase);
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keywordflow">if</span> (n.sign() &lt; 0) out &lt;&lt; <span class="charliteral">&apos;-&apos;</span>;
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 std::string rval=out.str();
+<a name="l00096"></a>00096 std::reverse(rval.begin(), rval.end());
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> rval;
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">from_string</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
+<a name="l00102"></a>00102 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">negate</a>=<span class="keyword">false</span>;
+<a name="l00103"></a>00103 <span class="keyword">const</span> <span class="keywordtype">char</span> *c=str.c_str();
+<a name="l00104"></a>00104 <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;+&apos;</span>) ++c;
+<a name="l00105"></a>00105 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;-&apos;</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">autobase</a>) {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;0&apos;</span>) {
+<a name="l00109"></a>00109 ++c;
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (*c==<span class="charliteral">&apos;x&apos;</span> || *c==<span class="charliteral">&apos;X&apos;</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> invalid_base();
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (*c==0) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">&quot;No valid digits&quot;</span>);
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>(base);
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 integer r;
+<a name="l00123"></a>00123 <span class="keywordflow">while</span> (*c) {
+<a name="l00124"></a>00124 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digit;
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&apos;0&apos;</span> &amp;&amp; *c&lt;=<span class="charliteral">&apos;9&apos;</span>) digit=*c-<span class="charliteral">&apos;0&apos;</span>;
+<a name="l00126"></a>00126 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&apos;A&apos;</span> &amp;&amp; *c&lt;=<span class="charliteral">&apos;Z&apos;</span>) digit=*c-<span class="charliteral">&apos;A&apos;</span>+10;
+<a name="l00127"></a>00127 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c&gt;=<span class="charliteral">&apos;a&apos;</span> &amp;&amp; *c&lt;=<span class="charliteral">&apos;z&apos;</span>) digit=*c-<span class="charliteral">&apos;a&apos;</span>+10;
+<a name="l00128"></a>00128 <span class="keywordflow">else</span> <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">&quot;encountered non-alphanumeric character in &quot;</span>
+<a name="l00129"></a>00129 <span class="stringliteral">&quot;string&quot;</span>);
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (digit &gt;= base) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">&quot;encountered digit greater than &quot;</span>
+<a name="l00132"></a>00132 <span class="stringliteral">&quot;base allows&quot;</span>);
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 r = (r * shift) + digit;
+<a name="l00135"></a>00135 ++c;
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 r._set_negative(negate);
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> r;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">from_binary</a>(<span class="keyword">const</span> std::string&amp; str) {
+<a name="l00142"></a>00142 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
+<a name="l00143"></a>00143 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits&lt;unsigned char&gt;::digits;
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 integer r;
+<a name="l00146"></a>00146 detail::data_t *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00147"></a>00147 rdata-&gt;alloc((str.length() + bytesPerDigit - 1)/bytesPerDigit);
+<a name="l00148"></a>00148 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=rdata-&gt;digits;
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s=(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)str.data(), *se=s+str.length();
+<a name="l00151"></a>00151 <span class="keywordflow">while</span> (s&lt;se) {
+<a name="l00152"></a>00152 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d=0;
+<a name="l00153"></a>00153 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i&lt;bytesPerDigit &amp;&amp; s&lt;se; ++i)
+<a name="l00154"></a>00154 d |= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(*s++) &lt;&lt; (i * bitsPerByte));
+<a name="l00155"></a>00155 *p++=d;
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 rdata-&gt;skipLeadingZeros();
+<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 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">to_binary</a>(<span class="keyword">const</span> integer&amp; n) {
+<a name="l00162"></a>00162 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
+<a name="l00163"></a>00163 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits&lt;unsigned char&gt;::digits;
+<a name="l00164"></a>00164 std::vector&lt;unsigned char&gt; temp;
+<a name="l00165"></a>00165 temp.reserve(n._get_length() * bytesPerDigit);
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keyword">const</span> detail::data_t *ndata=n._get_data();
+<a name="l00168"></a>00168 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata-&gt;digits, *pe=p+n._get_length();
+<a name="l00169"></a>00169 <span class="keywordflow">while</span> (p != pe) {
+<a name="l00170"></a>00170 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d(*p++);
+<a name="l00171"></a>00171 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i&lt;bytesPerDigit; ++i) {
+<a name="l00172"></a>00172 temp.push_back((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(d));
+<a name="l00173"></a>00173 d &gt;&gt;= bitsPerByte;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176 <span class="keywordflow">while</span> (!temp.empty() &amp;&amp; temp.back()==0) temp.pop_back();
+<a name="l00177"></a>00177 <span class="keywordtype">char</span> *c=(<span class="keywordtype">char</span>*)&amp;temp[0];
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> std::string(c, c+temp.size());
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 } <span class="comment">// namespace core</span>
+<a name="l00182"></a>00182
+<a name="l00204"></a>00204 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
+<a name="l00205"></a>00205 <span class="keywordflow">try</span> {
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(core::integer(n), base, uppercase);
+<a name="l00207"></a>00207 } <span class="keywordflow">catch</span> (exception&amp;) {
+<a name="l00208"></a>00208 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00209"></a>00209 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212
+<a name="l00239"></a>00239 integer <a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
+<a name="l00240"></a>00240 <span class="keywordflow">try</span> {
+<a name="l00241"></a>00241 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">core::from_string</a>(str, base));
+<a name="l00243"></a>00243 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00244"></a>00244 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00245"></a>00245 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00246"></a>00246 }
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248
+<a name="l00258"></a>00258 integer <a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string&amp; str) {
+<a name="l00259"></a>00259 <span class="keywordflow">try</span> {
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">core::from_binary</a>(str));
+<a name="l00261"></a>00261 } <span class="keywordflow">catch</span> (exception&amp;) {
+<a name="l00262"></a>00262 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00263"></a>00263 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
 <a name="l00264"></a>00264 }
-<a name="l00265"></a>00265 <span class="keywordflow">while</span> (!temp.empty() &amp;&amp; temp.back()==0) temp.pop_back();
-<a name="l00266"></a>00266 <span class="keywordtype">char</span> *c=(<span class="keywordtype">char</span>*)&amp;temp[0];
-<a name="l00267"></a>00267 <span class="keywordflow">return</span> std::string(c, c+temp.size());
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270 } <span class="comment">// namespace xint</span>
-<a name="l00271"></a>00271 } <span class="comment">// namespace boost</span>
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266
+<a name="l00286"></a>00286 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> integer&amp; n) {
+<a name="l00287"></a>00287 <span class="keywordflow">try</span> {
+<a name="l00288"></a>00288 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(core::integer(n));
+<a name="l00289"></a>00289 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00290"></a>00290 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00291"></a>00291 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
+<a name="l00292"></a>00292 }
+<a name="l00293"></a>00293 }
+<a name="l00294"></a>00294
+<a name="l00295"></a>00295 } <span class="comment">// namespace xint</span>
+<a name="l00296"></a>00296 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/copyonwrite_8dox.html
==============================================================================
--- sandbox/xint/doc/copyonwrite_8dox.html (original)
+++ sandbox/xint/doc/copyonwrite_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
 <h1>/home/chad/projects/xint/doc/dox/copyonwrite.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/cow.html
==============================================================================
--- sandbox/xint/doc/cow.html (original)
+++ sandbox/xint/doc/cow.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -27,7 +27,7 @@
 <h1><a class="anchor" id="cow">Copying and Argument-Passing </a></h1><p>By default, the xint::integer class uses copy-on-write, which means that if you copy an integer, the copy and the original share the same storage. They are only assigned separate storage when one of them is changed. This mechanism makes copying an integer (explicitly, by returning it, or by using it as a non-reference parameter to a function) very fast, regardless of its size.</p>
 <p>(Unfortunately, this makes thread-safe operation impossible. If you need to use the library from multiple threads, you can disable this behavior by compiling it with <a class="el" href="threadsafe.html">the thread-safe option</a>. </p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/data__t_8cpp.html
==============================================================================
--- sandbox/xint/doc/data__t_8cpp.html (original)
+++ sandbox/xint/doc/data__t_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -39,7 +39,7 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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>
@@ -53,7 +53,7 @@
 
 <p>Definition in file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/data__t_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/data__t_8cpp_source.html (original)
+++ sandbox/xint/doc/data__t_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -340,7 +340,7 @@
 <a name="l00323"></a>00323 } <span class="comment">// namespace xint</span>
 <a name="l00324"></a>00324 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/dependencies.html
==============================================================================
--- sandbox/xint/doc/dependencies.html (original)
+++ sandbox/xint/doc/dependencies.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -36,7 +36,7 @@
 </ul>
 <p>With the exception of Boost.Thread, all of these are header-only libraries, meaning that you don't need to worry about linking your program with them. </p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/dependencies_8dox.html
==============================================================================
--- sandbox/xint/doc/dependencies_8dox.html (original)
+++ sandbox/xint/doc/dependencies_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
 <h1>/home/chad/projects/xint/doc/dox/dependencies.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/dox/exceptions.dox
==============================================================================
--- sandbox/xint/doc/dox/exceptions.dox (original)
+++ sandbox/xint/doc/dox/exceptions.dox 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -40,7 +40,9 @@
 
 If you need to ensure that exceptions are allowed, in one of your own functions
 that might be called with them blocked, you can hold the xint::token object
-returned by xint::allow_exceptions. It works the same way.
+returned by xint::allow_exceptions. It works the same way. You can also use the
+functions in the \c xint::core namespace, which are immune to
+exception-blocking.
 
 xint::token objects should always be created on the stack, so that they are
 guaranteed to be destroyed in reverse order. If they are not, or if they are

Modified: sandbox/xint/doc/dox/nan.dox
==============================================================================
--- sandbox/xint/doc/dox/nan.dox (original)
+++ sandbox/xint/doc/dox/nan.dox 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -5,12 +5,11 @@
 error in a calculation. For that purpose, the \c xint::integer class provides
 Not-a-Number.
 
-To create a Not-a-Number, use the integer constructor that exists solely for
-that purpose. No other library function will return a Not-a-Number except under
-the following circumstances:
+To create a Not-a-Number, use the integer::nan function. No other library
+function will return a Not-a-Number except under the following circumstances:
 
-- If a function that returns a non-reference integer tries to throw a blockable
-exception, but exceptions are blocked.
+- If a function that returns an integer tries to throw a blockable exception,
+but exceptions are blocked.
 - If the string-to-integer functions are asked to convert the string \c
 "#NaN#".
 
@@ -21,6 +20,9 @@
 \c "#NaN#".
 - Make a copy of it.
 
-If you attempt to do anything else with it, you will get the non-blockable
-\c xint::not_a_number exception.
+If you attempt to do anything else with it, you will either get an \c
+xint::not_a_number exception, or if exceptions are blocked, a special value
+indicating failure (which will be another Not-a-Number, if the function you're
+calling returns an xint::integer).
 */
+

Added: sandbox/xint/doc/dox/r_core.dox
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/dox/r_core.dox 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,31 @@
+/*! \page r_core What's with the \c core namespace?
+
+Several people on the Boost developers' mailing list expressed reservations
+about the exception-blocking mechanism and the Not-a-Number value. After a
+spirited debate, two indisputable points emerged:
+
+- The existence of a Not-a-Number value forced every function to check its
+parameters for it.
+- The exception blocking mechanism would cause problems with any library built
+on this one, such as the arbitrary-precision real type that I'm certain someone
+will build.
+
+I believe that the exception-blocking feature is useful, so I proposed a
+compromise: an alternate class mirroring the xint::integer class, but that would
+always contain a valid %integer value, and a set of functions to operate on it
+that were immune to exception-blocking. Those items now reside in the \c
+xint::core namespace.
+
+Functions in the \c core namespace will always throw an exception on any error,
+and will only call other functions within the \c core namespace. That ensures
+that the Not-a-Number value only needs to be checked for in the \c
+xint::core::integer constructor, all but eliminating any speed penalty from it.
+It also gives a base of functions that are immune to the exception-blocking
+mechanism, which provides firm ground to build other libraries on.
+
+Every function in the \c xint namespace calls its \c core counterpart in a
+try/catch construct, allowing it to intercept any exceptions and either pass
+them through (if exceptions are allowed) or take some alternate action, such as
+returning a Not-a-Number value. That preserves the exception-blocking feature as
+well.
+*/

Added: sandbox/xint/doc/dox/r_exception_blocking.dox
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/dox/r_exception_blocking.dox 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,19 @@
+/*! \page r_exception_blocking Why have an exception-blocking system at all? Exceptions are standard C++!
+
+Yes, they are, but there are a number of people that dislike them intensely and
+won't use any library that forces its users to deal with them. But that is not
+the primary motivation for the exception-blocking mechanism.
+
+There are also times when exception-handling can get in the way of writing code
+that is easily understandable by other people. Any software developer
+understands calling a function and checking the return value to see if there was
+an error; it's a standard idiom in essentially any programming language, and
+it's even widely used in the C++ Standard Template Library
+(see std::string::find, for just one example).
+
+Writing code that is \e human-readable -- not just machine-readable -- is
+difficult, and there's little that anyone can do to change that. But this
+library's exception-blocking mechanism makes it easier to produce such code,
+with very little effort, by giving the developer a choice: exceptions, error
+codes, or both, whatever makes for the most readable and understandable code.
+*/

Modified: sandbox/xint/doc/dox/rationale.dox
==============================================================================
--- sandbox/xint/doc/dox/rationale.dox (original)
+++ sandbox/xint/doc/dox/rationale.dox 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -3,13 +3,15 @@
 \section sinterface Interface
 - \subpage r_interface
 - \subpage r_interface_design_only
+- \subpage r_core
 
 \section scow Copy-on-Write
 - \subpage r_cow
 - \subpage r_shared_ptr
 
-\section snan Not-a-Number
+\section snan Not-a-Number and Exception Blocking
 - \subpage r_nan
+- \subpage r_exception_blocking
 - \subpage r_negzero
 
 \section srandom Random generator

Modified: sandbox/xint/doc/ex__fibonacci_8dox.html
==============================================================================
--- sandbox/xint/doc/ex__fibonacci_8dox.html (original)
+++ sandbox/xint/doc/ex__fibonacci_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
 <h1>/home/chad/projects/xint/doc/dox/ex_fibonacci.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/ex_fibonacci.html
==============================================================================
--- sandbox/xint/doc/ex_fibonacci.html (original)
+++ sandbox/xint/doc/ex_fibonacci.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -65,7 +65,7 @@
 </pre></div><p>If you're not intimately familiar with the Fibonacci sequence, and how fast the numbers in it grow, the answer might shock you.</p>
 <p>As you can see, using the XInt library is just like using the native integer types -- except that an <code>xint::integer</code> won't overflow on you until you completely exhaust your system's memory. :-) </p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/exception__blocker_8cpp.html
==============================================================================
--- sandbox/xint/doc/exception__blocker_8cpp.html (original)
+++ sandbox/xint/doc/exception__blocker_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -37,7 +37,7 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
@@ -72,7 +72,7 @@
 </div>
 </div>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/exception__blocker_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/exception__blocker_8cpp_source.html (original)
+++ sandbox/xint/doc/exception__blocker_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -92,7 +92,7 @@
 <a name="l00109"></a>00109 } <span class="comment">// namespace xint</span>
 <a name="l00110"></a>00110 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/exceptions.html
==============================================================================
--- sandbox/xint/doc/exceptions.html (original)
+++ sandbox/xint/doc/exceptions.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -92,10 +92,10 @@
     <span class="comment">// this assert is not needed, it&apos;s only here for demonstration purposes.</span>
     assert(<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">xint::exceptions_allowed</a>() == <span class="keyword">true</span>);
 }
-</pre></div><p>If you need to ensure that exceptions are allowed, in one of your own functions that might be called with them blocked, you can hold the xint::token object returned by xint::allow_exceptions. It works the same way.</p>
+</pre></div><p>If you need to ensure that exceptions are allowed, in one of your own functions that might be called with them blocked, you can hold the xint::token object returned by xint::allow_exceptions. It works the same way. You can also use the functions in the <code>xint::core</code> namespace, which are immune to exception-blocking.</p>
 <p>xint::token objects should always be created on the stack, so that they are guaranteed to be destroyed in reverse order. If they are not, or if they are copied elsewhere, the results are undefined. </p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/exceptions_8dox.html
==============================================================================
--- sandbox/xint/doc/exceptions_8dox.html (original)
+++ sandbox/xint/doc/exceptions_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
 <h1>/home/chad/projects/xint/doc/dox/exceptions.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/files.html
==============================================================================
--- sandbox/xint/doc/files.html (original)
+++ sandbox/xint/doc/files.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -49,7 +49,7 @@
   <tr><td class="indexkey"><a class="el" href="roots_8cpp.html">roots.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for functions related to roots of a number </td></tr>
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:52 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/functions.html
==============================================================================
--- sandbox/xint/doc/functions.html (original)
+++ sandbox/xint/doc/functions.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -59,23 +59,37 @@
 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>_attach()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">boost::xint::core::integer</a>
+</li>
+<li>_detach()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">boost::xint::core::integer</a>
+</li>
 <li>_get_data()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5f004409e37511908168a4ee9961c6a1">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">boost::xint::integer</a>
 </li>
 <li>_get_digit()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a9b98d94930ac6e0c4a6add69f622e6e2">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aca9d6394bb912c96137f7129e7a0813a">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">boost::xint::core::integer</a>
 </li>
 <li>_get_length()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">boost::xint::integer</a>
+</li>
+<li>_init()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">boost::xint::core::integer</a>
 </li>
 <li>_make_unique()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">boost::xint::core::integer</a>
 </li>
 <li>_set_negative()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">boost::xint::integer</a>
-</li>
-<li>_throw_if_nan()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
 </li>
 </ul>
 
@@ -107,6 +121,9 @@
 
 
 <h3><a class="anchor" id="index_d">- d -</a></h3><ul>
+<li>data
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">boost::xint::core::integer</a>
+</li>
 <li>data_t()
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">boost::xint::detail::data_t</a>
 </li>
@@ -131,6 +148,7 @@
 </li>
 <li>even()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">boost::xint::core::integer</a>
 </li>
 </ul>
 
@@ -154,6 +172,7 @@
 </li>
 <li>hex_digits()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">boost::xint::core::integer</a>
 </li>
 </ul>
 
@@ -163,7 +182,11 @@
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">boost::xint::detail::data_t::QuickDigits</a>
 </li>
 <li>integer()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">boost::xint::core::integer</a>
 </li>
 <li>invalid_base()
 : <a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">boost::xint::invalid_base</a>
@@ -221,6 +244,9 @@
 
 
 <h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nan()
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">boost::xint::integer</a>
+</li>
 <li>negate()
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">boost::xint::detail::data_t</a>
 </li>
@@ -235,16 +261,20 @@
 
 <h3><a class="anchor" id="index_o">- o -</a></h3><ul>
 <li>odd()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
 </li>
 <li>one()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">boost::xint::core::integer</a>
 </li>
 <li>operator%=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
 </li>
 <li>operator&amp;=()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">boost::xint::core::integer</a>
 </li>
 <li>operator()()
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>
@@ -252,43 +282,56 @@
 , <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">boost::xint::strong_random_generator</a>
 </li>
 <li>operator*=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
 </li>
 <li>operator++()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">boost::xint::core::integer</a>
 </li>
 <li>operator+=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
 </li>
 <li>operator--()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
 </li>
 <li>operator-=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
 </li>
 <li>operator/=()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">boost::xint::core::integer</a>
 </li>
 <li>operator&lt;&lt;()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">boost::xint::core::integer</a>
 </li>
 <li>operator&lt;&lt;=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
 </li>
 <li>operator=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
 </li>
 <li>operator&gt;&gt;()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">boost::xint::core::integer</a>
 </li>
 <li>operator&gt;&gt;=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
 </li>
 <li>operator^=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
 </li>
 <li>operator|=()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">boost::xint::core::integer</a>
 </li>
 <li>overflow_error()
 : <a class="el" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">boost::xint::overflow_error</a>
@@ -326,6 +369,7 @@
 </li>
 <li>sign()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">boost::xint::core::integer</a>
 </li>
 <li>skipLeadingZeros()
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">boost::xint::detail::data_t</a>
@@ -351,22 +395,23 @@
 
 <h3><a class="anchor" id="index_z">- z -</a></h3><ul>
 <li>zero()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">boost::xint::core::integer</a>
 , <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">boost::xint::detail::data_t</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_0x7e">- ~ -</a></h3><ul>
 <li>~integer()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a3e254c8874a7a1f9a17a41505a18df35">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">boost::xint::core::integer</a>
 </li>
 <li>~strong_random_generator()
 : <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">boost::xint::strong_random_generator</a>
 </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/functions_func.html
==============================================================================
--- sandbox/xint/doc/functions_func.html (original)
+++ sandbox/xint/doc/functions_func.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -58,23 +58,37 @@
 &nbsp;
 
 <h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>_attach()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">boost::xint::core::integer</a>
+</li>
+<li>_detach()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">boost::xint::core::integer</a>
+</li>
 <li>_get_data()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5f004409e37511908168a4ee9961c6a1">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">boost::xint::integer</a>
 </li>
 <li>_get_digit()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a9b98d94930ac6e0c4a6add69f622e6e2">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aca9d6394bb912c96137f7129e7a0813a">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">boost::xint::core::integer</a>
 </li>
 <li>_get_length()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">boost::xint::integer</a>
+</li>
+<li>_init()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">boost::xint::core::integer</a>
 </li>
 <li>_make_unique()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">boost::xint::core::integer</a>
 </li>
 <li>_set_negative()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">boost::xint::integer</a>
-</li>
-<li>_throw_if_nan()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
 </li>
 </ul>
 
@@ -121,20 +135,27 @@
 </li>
 <li>even()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">boost::xint::core::integer</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_h">- h -</a></h3><ul>
 <li>hex_digits()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">boost::xint::integer</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_i">- i -</a></h3><ul>
 <li>integer()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a151c3360e342e84de651143d1cfba86f">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">boost::xint::integer</a>
 </li>
 <li>invalid_base()
 : <a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">boost::xint::invalid_base</a>
@@ -165,6 +186,9 @@
 
 
 <h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nan()
+: <a class="el" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">boost::xint::integer</a>
+</li>
 <li>negate()
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">boost::xint::detail::data_t</a>
 </li>
@@ -179,16 +203,20 @@
 
 <h3><a class="anchor" id="index_o">- o -</a></h3><ul>
 <li>odd()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
 </li>
 <li>one()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">boost::xint::core::integer</a>
 </li>
 <li>operator%=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
 </li>
 <li>operator&amp;=()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">boost::xint::core::integer</a>
 </li>
 <li>operator()()
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>
@@ -196,43 +224,56 @@
 , <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">boost::xint::strong_random_generator</a>
 </li>
 <li>operator*=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
 </li>
 <li>operator++()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">boost::xint::core::integer</a>
 </li>
 <li>operator+=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
 </li>
 <li>operator--()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
 </li>
 <li>operator-=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
 </li>
 <li>operator/=()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">boost::xint::core::integer</a>
 </li>
 <li>operator&lt;&lt;()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">boost::xint::core::integer</a>
 </li>
 <li>operator&lt;&lt;=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
 </li>
 <li>operator=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
 </li>
 <li>operator&gt;&gt;()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">boost::xint::core::integer</a>
 </li>
 <li>operator&gt;&gt;=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
 </li>
 <li>operator^=()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
 </li>
 <li>operator|=()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">boost::xint::core::integer</a>
 </li>
 <li>overflow_error()
 : <a class="el" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">boost::xint::overflow_error</a>
@@ -266,6 +307,7 @@
 </li>
 <li>sign()
 : <a class="el" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">boost::xint::core::integer</a>
 </li>
 <li>skipLeadingZeros()
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">boost::xint::detail::data_t</a>
@@ -288,22 +330,23 @@
 
 <h3><a class="anchor" id="index_z">- z -</a></h3><ul>
 <li>zero()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">boost::xint::core::integer</a>
 , <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">boost::xint::detail::data_t</a>
+, <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_0x7e">- ~ -</a></h3><ul>
 <li>~integer()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a3e254c8874a7a1f9a17a41505a18df35">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">boost::xint::core::integer</a>
 </li>
 <li>~strong_random_generator()
 : <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">boost::xint::strong_random_generator</a>
 </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/functions_type.html
==============================================================================
--- sandbox/xint/doc/functions_type.html (original)
+++ sandbox/xint/doc/functions_type.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -48,7 +48,7 @@
 </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/functions_vars.html
==============================================================================
--- sandbox/xint/doc/functions_vars.html (original)
+++ sandbox/xint/doc/functions_vars.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -39,6 +39,9 @@
 <li>count
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">boost::xint::detail::data_t::QuickDigits</a>
 </li>
+<li>data
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">boost::xint::core::integer</a>
+</li>
 <li>digits
 : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">boost::xint::detail::data_t</a>
 </li>
@@ -86,7 +89,7 @@
 </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/gcd_8cpp.html
==============================================================================
--- sandbox/xint/doc/gcd_8cpp.html (original)
+++ sandbox/xint/doc/gcd_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -37,10 +37,18 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core::gcd</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core::lcm</a> (const integer &amp;num1, const integer &amp;num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core::invmod</a> (const integer &amp;n, const integer &amp;m)</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>
 <br/><br/></div></td></tr>
@@ -106,7 +114,7 @@
 </div>
 </div>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/gcd_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/gcd_8cpp_source.html (original)
+++ sandbox/xint/doc/gcd_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -41,14 +41,14 @@
 <a name="l00021"></a>00021
 <a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
 <a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
-<a name="l00024"></a>00024
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>core {
 <a name="l00025"></a>00025 <span class="keyword">namespace </span>{
 <a name="l00026"></a>00026
 <a name="l00027"></a>00027 <span class="keyword">struct </span>gcd_core {
 <a name="l00028"></a>00028 gcd_core(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m): <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>(integer::one()),
 <a name="l00029"></a>00029 <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>(integer::zero()), <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>(n)
 <a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 integer t1=m, t2=n-<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>(), t3=m;
+<a name="l00031"></a>00031 integer t1=m, t2=n-<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>(), t3=m;
 <a name="l00032"></a>00032 <span class="keywordflow">do</span> {
 <a name="l00033"></a>00033 <span class="keywordflow">do</span> {
 <a name="l00034"></a>00034 <span class="keywordflow">if</span> (<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>.even()) {
@@ -78,65 +78,88 @@
 <a name="l00058"></a>00058
 <a name="l00059"></a>00059 } <span class="comment">// namespace</span>
 <a name="l00060"></a>00060
-<a name="l00068"></a>00068 integer <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
-<a name="l00069"></a>00069 num1.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00070"></a>00070 num2._throw_if_nan();
+<a name="l00061"></a>00061 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">gcd</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00062"></a>00062 <span class="keywordtype">int</span> sign1=num1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>(), sign2=num2.sign();
+<a name="l00063"></a>00063 <span class="keywordflow">if</span> (sign1==0 &amp;&amp; sign2==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00064"></a>00064 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> num2;
+<a name="l00065"></a>00065 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> num1;
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 integer n(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(num1)), m(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(num2));
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keywordtype">size_t</span> k=0;
+<a name="l00070"></a>00070 <span class="keywordflow">while</span> (n.even() &amp;&amp; m.even()) { ++k; n &gt;&gt;= 1; m &gt;&gt;= 1; }
 <a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="keywordtype">int</span> sign1=num1.sign(), sign2=num2.sign();
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (sign1==0 &amp;&amp; sign2==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00074"></a>00074 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> num2;
-<a name="l00075"></a>00075 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> num1;
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 integer n(<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(num1)), m(<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(num2));
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="keywordtype">size_t</span> k=0;
-<a name="l00080"></a>00080 <span class="keywordflow">while</span> (n.even() &amp;&amp; m.even()) { ++k; n &gt;&gt;= 1; m &gt;&gt;= 1; }
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 gcd_core core(n, m);
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (core.u3.sign() != 0) <span class="keywordflow">return</span> core.u3 &lt;&lt; k;
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() &lt;&lt; k;
-<a name="l00086"></a>00086 }
+<a name="l00072"></a>00072 gcd_core core(n, m);
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> (core.u3.sign() != 0) <span class="keywordflow">return</span> core.u3 &lt;&lt; k;
+<a name="l00075"></a>00075 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() &lt;&lt; k;
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">lcm</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (num1.sign() == 0 || num2.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(num1 * num2) / <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">gcd</a>(num1, num2);
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">invmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00084"></a>00084 <span class="comment">// Calculates the modular inverse of n mod m, or (n^(-1)) mod m</span>
+<a name="l00085"></a>00085 <span class="comment">// Defined as b, where n*b corresponds to 1 (mod m)</span>
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (m &lt; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">throw</span> invalid_modulus();
 <a name="l00087"></a>00087
-<a name="l00096"></a>00096 integer <a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (num1.sign() == 0 || num2.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00098"></a>00098 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(num1 * num2) / <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(num1, num2);
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00114"></a>00114 integer <a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
-<a name="l00115"></a>00115 <span class="comment">// Calculates the modular inverse of n mod m, or (n^(-1)) mod m</span>
-<a name="l00116"></a>00116 <span class="comment">// Defined as b, where n*b corresponds to 1 (mod m)</span>
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (m &lt; <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()) {
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_modulus();
-<a name="l00119"></a>00119 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keywordtype">int</span> sign=n.sign();
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (sign==0) {
-<a name="l00124"></a>00124 <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00125"></a>00125 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.sign() &lt; 0) {
-<a name="l00126"></a>00126 integer _n(n);
-<a name="l00127"></a>00127 _n._set_negative(<span class="keyword">false</span>);
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 integer nn=<a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(_n, m);
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> (nn.is_nan()) <span class="keywordflow">return</span> nn;
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 nn._set_negative(<span class="keyword">true</span>);
-<a name="l00133"></a>00133 <span class="keywordflow">return</span> nn + m;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (n.even() &amp;&amp; m.even()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 gcd_core core(n, m);
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keywordflow">if</span> (core.u3 != <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
-<a name="l00141"></a>00141 <span class="keywordflow">return</span> core.u1;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 } <span class="comment">// namespace xint</span>
-<a name="l00145"></a>00145 } <span class="comment">// namespace boost</span>
+<a name="l00088"></a>00088 <span class="keywordtype">int</span> sign=n.sign();
+<a name="l00089"></a>00089 <span class="keywordflow">if</span> (sign==0) {
+<a name="l00090"></a>00090 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00091"></a>00091 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.sign() &lt; 0) {
+<a name="l00092"></a>00092 integer _n(n);
+<a name="l00093"></a>00093 _n._set_negative(<span class="keyword">false</span>);
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 integer nn=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">invmod</a>(_n, m);
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (nn.sign()==0) <span class="keywordflow">return</span> nn;
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 nn._set_negative(<span class="keyword">true</span>);
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> nn + m;
+<a name="l00100"></a>00100 }
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (n.even() &amp;&amp; m.even()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 gcd_core core(n, m);
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (core.u3 != <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
+<a name="l00107"></a>00107 <span class="keywordflow">return</span> core.u1;
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 } <span class="comment">// namespace core</span>
+<a name="l00111"></a>00111
+<a name="l00119"></a>00119 integer <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00120"></a>00120 <span class="keywordflow">try</span> {
+<a name="l00121"></a>00121 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(core::integer(num1), core::integer(num2)));
+<a name="l00122"></a>00122 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00124"></a>00124 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127
+<a name="l00136"></a>00136 integer <a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> integer&amp; num1, <span class="keyword">const</span> integer&amp; num2) {
+<a name="l00137"></a>00137 <span class="keywordflow">try</span> {
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(core::integer(num1), core::integer(num2)));
+<a name="l00139"></a>00139 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00141"></a>00141 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
+<a name="l00158"></a>00158 integer <a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00159"></a>00159 <span class="keywordflow">try</span> {
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(core::integer(n), core::integer(m)));
+<a name="l00161"></a>00161 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00162"></a>00162 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00163"></a>00163 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 } <span class="comment">// namespace xint</span>
+<a name="l00168"></a>00168 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/globals.html
==============================================================================
--- sandbox/xint/doc/globals.html (original)
+++ sandbox/xint/doc/globals.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -54,7 +54,7 @@
 </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:52 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/globals_defs.html
==============================================================================
--- sandbox/xint/doc/globals_defs.html (original)
+++ sandbox/xint/doc/globals_defs.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -39,7 +39,7 @@
 </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:52 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:45 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/globals_vars.html
==============================================================================
--- sandbox/xint/doc/globals_vars.html (original)
+++ sandbox/xint/doc/globals_vars.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -51,7 +51,7 @@
 </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:52 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/hierarchy.html
==============================================================================
--- sandbox/xint/doc/hierarchy.html (original)
+++ sandbox/xint/doc/hierarchy.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -35,6 +35,7 @@
 <li><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">boost::xint::cannot_represent</a></li>
 <li><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></li>
 <li><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">boost::xint::divide_by_zero</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></li>
 <li><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></li>
 <li><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></li>
 <li><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a></li>
@@ -48,7 +49,7 @@
 <li><a class="el" href="classboost_1_1xint_1_1too__big.html">boost::xint::too_big</a></li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/history.html
==============================================================================
--- sandbox/xint/doc/history.html (original)
+++ sandbox/xint/doc/history.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -35,7 +35,7 @@
 <li>Many improvements, primarily from feedback on the first Boost upload. Second version posted to the Boost File Vault. </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/history_8dox.html
==============================================================================
--- sandbox/xint/doc/history_8dox.html (original)
+++ sandbox/xint/doc/history_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
 <h1>/home/chad/projects/xint/doc/dox/history.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/index.html
==============================================================================
--- sandbox/xint/doc/index.html (original)
+++ sandbox/xint/doc/index.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -63,7 +63,7 @@
 <li><a class="el" href="ex_fibonacci.html">Fibonacci Numbers</a> </li>
 </ul>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/index_8dox.html
==============================================================================
--- sandbox/xint/doc/index_8dox.html (original)
+++ sandbox/xint/doc/index_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
 <h1>/home/chad/projects/xint/doc/dox/index.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 </table>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/integer_8cpp.html
==============================================================================
--- sandbox/xint/doc/integer_8cpp.html (original)
+++ sandbox/xint/doc/integer_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -38,7 +38,12 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 </table>
@@ -47,7 +52,7 @@
 
 <p>Definition in file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/integer_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/integer_8cpp_source.html (original)
+++ sandbox/xint/doc/integer_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -46,222 +46,487 @@
 <a name="l00024"></a>00024 <span class="preprocessor"></span>
 <a name="l00025"></a>00025 <span class="keyword">namespace </span>boost {
 <a name="l00026"></a>00026 <span class="keyword">namespace </span>xint {
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>{
-<a name="l00029"></a>00029 std::auto_ptr&lt;integer&gt; cZero, cOne;
-<a name="l00030"></a>00030 }
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">const</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>(<span class="stringliteral">&quot;#NaN#&quot;</span>);
-<a name="l00033"></a>00033
-<a name="l00035"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">00035</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>() {
-<a name="l00036"></a>00036 _init();
-<a name="l00037"></a>00037 }
-<a name="l00038"></a>00038
-<a name="l00050"></a><a class="code" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">00050</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) {
-<a name="l00051"></a>00051 <span class="keywordflow">if</span> (b.<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) data=0;
-<a name="l00052"></a>00052 <span class="keywordflow">else</span> _init(b);
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00075"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">00075</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
-<a name="l00076"></a>00076 _init(<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(str, base));
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00091"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aa8a3cceacd8a23dc6b8a9587a5a4d008">00091</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>&amp; n) {
-<a name="l00092"></a>00092 data=0;
-<a name="l00093"></a>00093 }
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>core {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>{
+<a name="l00030"></a>00030 std::auto_ptr&lt;integer&gt; cZero, cOne;
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00034"></a>00034 <span class="comment">// The core integer class</span>
+<a name="l00035"></a>00035
+<a name="l00036"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">00036</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer::integer</a>() {
+<a name="l00037"></a>00037 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>();
+<a name="l00038"></a>00038 }
+<a name="l00039"></a>00039
+<a name="l00040"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">00040</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; b) {
+<a name="l00041"></a>00041 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(b);
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043
+<a name="l00044"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a151c3360e342e84de651143d1cfba86f">00044</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer::integer</a>(const ::boost::xint::integer&amp; b) {
+<a name="l00045"></a>00045 <span class="keywordflow">if</span> (b.is_nan()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a>();
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="comment">// Have to const_cast here, because xint::integer and xint::core::integer</span>
+<a name="l00048"></a>00048 <span class="comment">// aren&apos;t directly related. It&apos;s safe though.</span>
+<a name="l00049"></a>00049 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *bdata(const_cast&lt;detail::data_t*&gt;(b._get_data()));
+<a name="l00050"></a>00050 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(bdata);
+<a name="l00052"></a>00052 <span class="preprocessor"> #else</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=bdata;
+<a name="l00054"></a>00054 <span class="preprocessor"> #endif</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>();
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00058"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">00058</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer::integer</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
+<a name="l00059"></a>00059 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">from_string</a>(str, base));
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061
+<a name="l00062"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">00062</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">integer::~integer</a>() {
+<a name="l00063"></a>00063 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">_detach</a>();
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065
+<a name="l00066"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">00066</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init) {
+<a name="l00067"></a>00067 <span class="keywordflow">try</span> {
+<a name="l00068"></a>00068 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(init);
+<a name="l00069"></a>00069 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
+<a name="l00070"></a>00070 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">&quot;Out of memory allocating xint::integer&quot;</span>);
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>();
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074
+<a name="l00075"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">00075</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &amp;c) {
+<a name="l00076"></a>00076 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00077"></a>00077 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(c.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>);
+<a name="l00078"></a>00078 <span class="preprocessor"> #else</span>
+<a name="l00079"></a>00079 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=c.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>;
+<a name="l00080"></a>00080 <span class="preprocessor"> #endif</span>
+<a name="l00081"></a>00081 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>();
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083
+<a name="l00084"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">00084</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(boost::uintmax_t n) {
+<a name="l00085"></a>00085 <span class="keyword">static</span> <span class="keywordtype">int</span> bits=std::numeric_limits&lt;boost::uintmax_t&gt;::digits;
+<a name="l00086"></a>00086 <span class="keyword">static</span> <span class="keywordtype">int</span> maxDigits=(bits+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>-1)/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keywordflow">try</span> {
+<a name="l00089"></a>00089 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>;
+<a name="l00090"></a>00090 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
+<a name="l00091"></a>00091 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">&quot;Out of memory allocating xint::integer&quot;</span>);
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>();
 <a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a3e254c8874a7a1f9a17a41505a18df35">00095</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a3e254c8874a7a1f9a17a41505a18df35">integer::~integer</a>() {
-<a name="l00096"></a>00096 _detach();
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <span class="keywordtype">void</span> integer::_init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init) {
-<a name="l00100"></a>00100 <span class="keywordflow">try</span> {
-<a name="l00101"></a>00101 data=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(init);
-<a name="l00102"></a>00102 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
-<a name="l00103"></a>00103 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">&quot;Out of memory allocating xint::integer&quot;</span>);
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 _attach();
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="keywordtype">void</span> integer::_init(<span class="keyword">const</span> integer &amp;c) {
-<a name="l00109"></a>00109 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
-<a name="l00110"></a>00110 <span class="preprocessor"></span> data=(c.data ? <span class="keyword">new</span> detail::data_t(c.data) : 0);
-<a name="l00111"></a>00111 <span class="preprocessor"> #else</span>
-<a name="l00112"></a>00112 <span class="preprocessor"></span> data=c.data;
-<a name="l00113"></a>00113 <span class="preprocessor"> #endif</span>
-<a name="l00114"></a>00114 <span class="preprocessor"></span> _attach();
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="keywordtype">void</span> integer::_init(boost::uintmax_t n) {
-<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keywordtype">int</span> bits=std::numeric_limits&lt;boost::uintmax_t&gt;::digits;
-<a name="l00119"></a>00119 <span class="keyword">static</span> <span class="keywordtype">int</span> maxDigits=(bits+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>-1)/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="keywordflow">try</span> {
-<a name="l00122"></a>00122 data=<span class="keyword">new</span> detail::data_t;
-<a name="l00123"></a>00123 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
-<a name="l00124"></a>00124 <span class="keywordflow">throw</span> xint::overflow_error(<span class="stringliteral">&quot;Out of memory allocating xint::integer&quot;</span>);
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 _attach();
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 data-&gt;alloc(maxDigits);
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; n != 0; ++x) {
-<a name="l00130"></a>00130 data-&gt;digits[x]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n &amp; <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
-<a name="l00131"></a>00131 n &gt;&gt;= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 data-&gt;skipLeadingZeros();
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keywordtype">void</span> integer::_attach() {
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (data) data-&gt;attach();
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keywordtype">void</span> integer::_detach() {
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (data &amp;&amp; data-&gt;detach()) <span class="keyword">delete</span> data;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">00144</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">integer::_make_unique</a>() {
-<a name="l00145"></a>00145 <span class="keywordflow">try</span> {
-<a name="l00146"></a>00146 <span class="keywordflow">if</span> (data &amp;&amp; data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a> &gt; 1) {
-<a name="l00147"></a>00147 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *newstore=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(data);
-<a name="l00148"></a>00148 _detach();
-<a name="l00149"></a>00149 data=newstore;
-<a name="l00150"></a>00150 _attach();
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
-<a name="l00153"></a>00153 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">&quot;Out of memory allocating xint::integer&quot;</span>);
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a><a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">00157</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">integer::_set_negative</a>(<span class="keywordtype">bool</span> negative) {
-<a name="l00158"></a>00158 <span class="keywordflow">if</span> (negative != (<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() &lt; 0)) *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(*<span class="keyword">this</span>);
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160
-<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">00165</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1" title="Tests the lowest bit of *this to determine oddness.">integer::odd</a>()<span class="keyword"> const </span>{
-<a name="l00166"></a>00166 <a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(0) &amp; 0x01)==1);
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00174"></a><a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">00174</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb" title="Tests the lowest bit of *this to determine evenness.">integer::even</a>()<span class="keyword"> const </span>{
-<a name="l00175"></a>00175 <a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00176"></a>00176 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(0) &amp; 0x01)==0);
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00184"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">00184</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">integer::sign</a>()<span class="keyword"> const </span>{
-<a name="l00185"></a>00185 <a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>) <span class="keywordflow">return</span> -1;
-<a name="l00187"></a>00187 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>()==1 &amp;&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(0)==0) <span class="keywordflow">return</span> 0;
-<a name="l00188"></a>00188 <span class="keywordflow">return</span> 1;
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00197"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5">00197</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">integer::is_nan</a>()<span class="keyword"> const </span>{
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> (data==0);
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00206"></a><a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">00206</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f" title="Tells you roughly how large an integer is.">integer::hex_digits</a>()<span class="keyword"> const </span>{
-<a name="l00207"></a>00207 <a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00208"></a>00208 <span class="keywordtype">size_t</span> bits=<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(*<span class="keyword">this</span>);
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> (bits+3)/4; <span class="comment">// Four bits per hex digit, rounded up</span>
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211
-<a name="l00212"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">00212</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; addend) {
-<a name="l00213"></a>00213 <span class="keywordflow">if</span> ((<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() &lt; 0) == (addend.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() &lt; 0)
-<a name="l00214"></a>00214 &amp;&amp; data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt;= addend.data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <span class="comment">// Fast in-place add</span>
-<a name="l00217"></a>00217 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00218"></a>00218 data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(addend.data);
-<a name="l00219"></a>00219 } <span class="keywordflow">else</span> {
-<a name="l00220"></a>00220 <span class="comment">// This works for all cases</span>
-<a name="l00221"></a>00221 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(*<span class="keyword">this</span>, addend);
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00224"></a>00224 }
-<a name="l00225"></a>00225
-<a name="l00226"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">00226</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; subtrahend) {
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() &gt;= 0 &amp;&amp; subtrahend.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() &gt;= 0 &amp;&amp; *<span class="keyword">this</span> &gt;= subtrahend) {
-<a name="l00228"></a>00228 <span class="comment">// Fast in-place subtract</span>
-<a name="l00229"></a>00229 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00230"></a>00230 data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(subtrahend.data);
-<a name="l00231"></a>00231 } <span class="keywordflow">else</span> {
-<a name="l00232"></a>00232 <span class="comment">// This works for all cases</span>
-<a name="l00233"></a>00233 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(*<span class="keyword">this</span>, subtrahend);
-<a name="l00234"></a>00234 }
-<a name="l00235"></a>00235 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00095"></a>00095 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(maxDigits);
+<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; n != 0; ++x) {
+<a name="l00097"></a>00097 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n &amp; <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
+<a name="l00098"></a>00098 n &gt;&gt;= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102
+<a name="l00103"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">00103</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">integer::_attach</a>() {
+<a name="l00104"></a>00104 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>) <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>();
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106
+<a name="l00107"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">00107</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">integer::_detach</a>() {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a> &amp;&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()) <span class="keyword">delete</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>;
+<a name="l00109"></a>00109 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=0;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111
+<a name="l00112"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">00112</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">integer::_make_unique</a>() {
+<a name="l00113"></a>00113 <span class="keywordflow">try</span> {
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a> &amp;&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a> &gt; 1) {
+<a name="l00115"></a>00115 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *newstore=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>);
+<a name="l00116"></a>00116 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">_detach</a>();
+<a name="l00117"></a>00117 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=newstore;
+<a name="l00118"></a>00118 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>();
+<a name="l00119"></a>00119 }
+<a name="l00120"></a>00120 } <span class="keywordflow">catch</span> (std::bad_alloc&amp;) {
+<a name="l00121"></a>00121 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">&quot;Out of memory allocating xint::integer&quot;</span>);
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124
+<a name="l00125"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">00125</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">integer::_set_negative</a>(<span class="keywordtype">bool</span> negative) {
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a> != negative) {
+<a name="l00127"></a>00127 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00128"></a>00128 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=negative;
+<a name="l00129"></a>00129 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">00133</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">integer::odd</a>()<span class="keyword"> const </span>{
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">_get_digit</a>(0) &amp; 0x01)==1);
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136
+<a name="l00137"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">00137</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">integer::even</a>()<span class="keyword"> const </span>{
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">_get_digit</a>(0) &amp; 0x01)==0);
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">00141</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">integer::sign</a>()<span class="keyword"> const </span>{
+<a name="l00142"></a>00142 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>()==1 &amp;&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">_get_digit</a>(0)==0) <span class="keywordflow">return</span> 0;
+<a name="l00143"></a>00143 <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a> ? -1 : 1);
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">00146</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">integer::hex_digits</a>()<span class="keyword"> const </span>{
+<a name="l00147"></a>00147 <span class="keywordtype">size_t</span> bits=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(*<span class="keyword">this</span>);
+<a name="l00148"></a>00148 <span class="keywordflow">return</span> (bits+3)/4; <span class="comment">// Four bits per hex digit, rounded up</span>
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">00151</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; addend) {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() &lt; 0) == (addend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() &lt; 0)
+<a name="l00153"></a>00153 &amp;&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> &gt;= addend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>)
+<a name="l00154"></a>00154 {
+<a name="l00155"></a>00155 <span class="comment">// Fast in-place add</span>
+<a name="l00156"></a>00156 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00157"></a>00157 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(addend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>);
+<a name="l00158"></a>00158 } <span class="keywordflow">else</span> {
+<a name="l00159"></a>00159 <span class="comment">// This works for all cases</span>
+<a name="l00160"></a>00160 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">add</a>(*<span class="keyword">this</span>, addend);
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164
+<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">00165</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; subtrahend) {
+<a name="l00166"></a>00166 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() &gt;= 0 &amp;&amp; subtrahend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() &gt;= 0 &amp;&amp; *<span class="keyword">this</span> &gt;= subtrahend) {
+<a name="l00167"></a>00167 <span class="comment">// Fast in-place subtract</span>
+<a name="l00168"></a>00168 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00169"></a>00169 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(subtrahend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>);
+<a name="l00170"></a>00170 } <span class="keywordflow">else</span> {
+<a name="l00171"></a>00171 <span class="comment">// This works for all cases</span>
+<a name="l00172"></a>00172 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">subtract</a>(*<span class="keyword">this</span>, subtrahend);
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176
+<a name="l00177"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">00177</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &amp;c) {
+<a name="l00178"></a>00178 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">_detach</a>();
+<a name="l00179"></a>00179 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00180"></a>00180 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(c.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>);
+<a name="l00181"></a>00181 <span class="preprocessor"> #else</span>
+<a name="l00182"></a>00182 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>=c.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>;
+<a name="l00183"></a>00183 <span class="preprocessor"> #endif</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>();
+<a name="l00185"></a>00185 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187
+<a name="l00188"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">00188</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00189"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">00189</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00190"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">00190</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00191"></a>00191
+<a name="l00192"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">00192</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00193"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">00193</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00194"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab04d9f5bfe1d4b9d10acf4cf3f8a6115">00194</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00195"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab30e34305c00e55f9ea0012085c49c9d">00195</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00196"></a>00196
+<a name="l00197"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">00197</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">integer::operator&lt;&lt;</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">shift_left</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00198"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">00198</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">integer::operator&gt;&gt;</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">shift_right</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00199"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">00199</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">integer::operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00200"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">00200</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00201"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">00201</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00202"></a>00202
+<a name="l00203"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">00203</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">integer::operator&lt;&lt;=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>) {
+<a name="l00204"></a>00204 <span class="keywordflow">if</span> (shift&gt;0) {
+<a name="l00205"></a>00205 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00206"></a>00206 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(shift);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210
+<a name="l00211"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">00211</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">integer::operator&gt;&gt;=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>) {
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (shift&gt;0) {
+<a name="l00213"></a>00213 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00214"></a>00214 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(shift);
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218
+<a name="l00219"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">00219</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>() {
+<a name="l00220"></a>00220 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>(0));
+<a name="l00221"></a>00221 <span class="keywordflow">return</span> *cZero;
+<a name="l00222"></a>00222 }
+<a name="l00223"></a>00223
+<a name="l00224"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">00224</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() {
+<a name="l00225"></a>00225 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>(1));
+<a name="l00226"></a>00226 <span class="keywordflow">return</span> *cOne;
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">00229</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">integer::_get_digit</a>(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{
+<a name="l00230"></a>00230 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232
+<a name="l00233"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aca9d6394bb912c96137f7129e7a0813a">00233</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">integer::_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (index &gt;= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <span class="keywordflow">return</span> 0;
+<a name="l00235"></a>00235 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
 <a name="l00236"></a>00236 }
 <a name="l00237"></a>00237
-<a name="l00238"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">00238</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &amp;c) {
-<a name="l00239"></a>00239 _detach();
-<a name="l00240"></a>00240 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
-<a name="l00241"></a>00241 <span class="preprocessor"></span> data=(c.data ? <span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(c.data) : 0);
-<a name="l00242"></a>00242 <span class="preprocessor"> #else</span>
-<a name="l00243"></a>00243 <span class="preprocessor"></span> data=c.data;
-<a name="l00244"></a>00244 <span class="preprocessor"> #endif</span>
-<a name="l00245"></a>00245 <span class="preprocessor"></span> _attach();
-<a name="l00246"></a>00246 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">00249</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00250"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">00250</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00251"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">00251</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00238"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">00238</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">integer::_get_length</a>()<span class="keyword"> const </span>{
+<a name="l00239"></a>00239 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00240"></a>00240 }
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 } <span class="comment">// namespace core</span>
+<a name="l00243"></a>00243
+<a name="l00245"></a>00245 <span class="comment">// The non-core integer class</span>
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="keyword">namespace </span>{
+<a name="l00248"></a>00248 std::auto_ptr&lt;integer&gt; cZero, cOne, cNaN;
+<a name="l00249"></a>00249 }
+<a name="l00250"></a>00250
+<a name="l00251"></a>00251 <span class="keyword">const</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>(<span class="stringliteral">&quot;#NaN#&quot;</span>);
 <a name="l00252"></a>00252
-<a name="l00253"></a><a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">00253</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00254"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">00254</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00255"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">00255</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> s; }
-<a name="l00256"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">00256</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00254"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">00254</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>() {
+<a name="l00255"></a>00255 _init();
+<a name="l00256"></a>00256 }
 <a name="l00257"></a>00257
-<a name="l00258"></a><a class="code" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">00258</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">integer::operator&lt;&lt;</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(*<span class="keyword">this</span>, shift); }
-<a name="l00259"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">00259</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">integer::operator&gt;&gt;</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(*<span class="keyword">this</span>, shift); }
-<a name="l00260"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">00260</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">integer::operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00261"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">00261</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00262"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">00262</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00263"></a>00263
-<a name="l00264"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">00264</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">integer::operator&lt;&lt;=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
-<a name="l00265"></a>00265 <span class="keywordflow">if</span> (shift&gt;0) {
-<a name="l00266"></a>00266 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00267"></a>00267 data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(shift);
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00270"></a>00270 }
-<a name="l00271"></a>00271
-<a name="l00272"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">00272</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">integer::operator&gt;&gt;=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
-<a name="l00273"></a>00273 <span class="keywordflow">if</span> (shift&gt;0) {
-<a name="l00274"></a>00274 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00275"></a>00275 data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(shift);
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00278"></a>00278 }
-<a name="l00279"></a>00279
-<a name="l00280"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">00280</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>() {
-<a name="l00281"></a>00281 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>(0));
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> *cZero;
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284
-<a name="l00285"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">00285</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() {
-<a name="l00286"></a>00286 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>(1));
-<a name="l00287"></a>00287 <span class="keywordflow">return</span> *cOne;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289
-<a name="l00290"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">00290</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">integer::_get_digit</a>(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{
-<a name="l00291"></a>00291 <span class="keywordflow">return</span> data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
-<a name="l00292"></a>00292 }
-<a name="l00293"></a>00293
-<a name="l00294"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9b98d94930ac6e0c4a6add69f622e6e2">00294</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">integer::_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{
-<a name="l00295"></a>00295 <span class="keywordflow">if</span> (index &gt;= data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <span class="keywordflow">return</span> 0;
-<a name="l00296"></a>00296 <span class="keywordflow">return</span> data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
-<a name="l00297"></a>00297 }
-<a name="l00298"></a>00298
-<a name="l00299"></a><a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">00299</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">integer::_get_length</a>()<span class="keyword"> const </span>{
-<a name="l00300"></a>00300 <span class="keywordflow">return</span> data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00301"></a>00301 }
-<a name="l00302"></a>00302
-<a name="l00303"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">00303</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">integer::_throw_if_nan</a>()<span class="keyword"> const </span>{
-<a name="l00304"></a>00304 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
-<a name="l00305"></a>00305 }
-<a name="l00306"></a>00306
-<a name="l00307"></a>00307 } <span class="comment">// namespace xint</span>
-<a name="l00308"></a>00308 } <span class="comment">// namespace boost</span>
+<a name="l00269"></a><a class="code" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">00269</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) {
+<a name="l00270"></a>00270 <span class="keywordflow">if</span> (b.<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) data=0;
+<a name="l00271"></a>00271 <span class="keywordflow">else</span> _init(b);
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273
+<a name="l00284"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a7fa5fba071118f89b965a221e7cb9c95">00284</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>&amp; b) {
+<a name="l00285"></a>00285 <span class="comment">// Have to const_cast here, because xint::integer and xint::core::integer</span>
+<a name="l00286"></a>00286 <span class="comment">// aren&apos;t directly related. It&apos;s safe though.</span>
+<a name="l00287"></a>00287 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *bdata(const_cast&lt;detail::data_t*&gt;(b.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>()));
+<a name="l00288"></a>00288 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00289"></a>00289 <span class="preprocessor"></span> data=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(bdata);
+<a name="l00290"></a>00290 <span class="preprocessor"> #else</span>
+<a name="l00291"></a>00291 <span class="preprocessor"></span> data=bdata;
+<a name="l00292"></a>00292 <span class="preprocessor"> #endif</span>
+<a name="l00293"></a>00293 <span class="preprocessor"></span> _attach();
+<a name="l00294"></a>00294 }
+<a name="l00295"></a>00295
+<a name="l00316"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">00316</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">size_t</span> base) {
+<a name="l00317"></a>00317 <span class="keywordflow">try</span> {
+<a name="l00318"></a>00318 data=0;
+<a name="l00319"></a>00319 _init(<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(str, base));
+<a name="l00320"></a>00320 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00321"></a>00321 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00322"></a>00322 <span class="keyword">delete</span> data;
+<a name="l00323"></a>00323 data=0;
+<a name="l00324"></a>00324 }
+<a name="l00325"></a>00325 }
+<a name="l00326"></a>00326
+<a name="l00333"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">00333</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1" title="Tests the lowest bit of *this to determine oddness.">integer::odd</a>()<span class="keyword"> const </span>{
+<a name="l00334"></a>00334 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00335"></a>00335 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
+<a name="l00336"></a>00336 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00337"></a>00337 }
+<a name="l00338"></a>00338 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(0) &amp; 0x01)==1);
+<a name="l00339"></a>00339 }
+<a name="l00340"></a>00340
+<a name="l00347"></a><a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">00347</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb" title="Tests the lowest bit of *this to determine evenness.">integer::even</a>()<span class="keyword"> const </span>{
+<a name="l00348"></a>00348 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00349"></a>00349 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
+<a name="l00350"></a>00350 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00351"></a>00351 }
+<a name="l00352"></a>00352 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(0) &amp; 0x01)==0);
+<a name="l00353"></a>00353 }
+<a name="l00354"></a>00354
+<a name="l00362"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">00362</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">integer::sign</a>()<span class="keyword"> const </span>{
+<a name="l00363"></a>00363 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00364"></a>00364 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
+<a name="l00365"></a>00365 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00366"></a>00366 }
+<a name="l00367"></a>00367 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>()==1 &amp;&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(0)==0) <span class="keywordflow">return</span> 0;
+<a name="l00368"></a>00368 <span class="keywordflow">return</span> (data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a> ? -1 : 1);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00378"></a><a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">00378</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f" title="Tells you roughly how large an integer is.">integer::hex_digits</a>()<span class="keyword"> const </span>{
+<a name="l00379"></a>00379 <span class="keywordflow">try</span> {
+<a name="l00380"></a>00380 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">core::integer</a>(*this).hex_digits();
+<a name="l00381"></a>00381 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00382"></a>00382 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00383"></a>00383 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00384"></a>00384 }
+<a name="l00385"></a>00385 }
+<a name="l00386"></a>00386
+<a name="l00393"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5">00393</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">integer::is_nan</a>()<span class="keyword"> const </span>{
+<a name="l00394"></a>00394 <span class="keywordflow">return</span> (data==0);
+<a name="l00395"></a>00395 }
+<a name="l00396"></a>00396
+<a name="l00397"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">00397</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; addend) {
+<a name="l00398"></a>00398 <span class="keywordflow">try</span> {
+<a name="l00399"></a>00399 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator+=(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(addend)));
+<a name="l00400"></a>00400 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00401"></a>00401 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00402"></a>00402 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00403"></a>00403 }
+<a name="l00404"></a>00404 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406
+<a name="l00407"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">00407</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; subtrahend) {
+<a name="l00408"></a>00408 <span class="keywordflow">try</span> {
+<a name="l00409"></a>00409 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator-=(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(subtrahend)));
+<a name="l00410"></a>00410 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00411"></a>00411 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00412"></a>00412 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::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="l00417"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">00417</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &amp;c) {
+<a name="l00418"></a>00418 _detach();
+<a name="l00419"></a>00419 <span class="keywordflow">try</span> {
+<a name="l00420"></a>00420 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00421"></a>00421 <span class="preprocessor"></span> data=(c.data ? <span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(c.data) : 0);
+<a name="l00422"></a>00422 <span class="preprocessor"> #else</span>
+<a name="l00423"></a>00423 <span class="preprocessor"></span> data=c.data;
+<a name="l00424"></a>00424 <span class="preprocessor"> #endif</span>
+<a name="l00425"></a>00425 <span class="preprocessor"></span> } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00426"></a>00426 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00427"></a>00427 data=0;
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429 _attach();
+<a name="l00430"></a>00430 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00431"></a>00431 }
+<a name="l00432"></a>00432
+<a name="l00433"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">00433</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00434"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">00434</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00435"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">00435</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00436"></a>00436
+<a name="l00437"></a><a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">00437</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00438"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">00438</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00439"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">00439</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00440"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">00440</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00441"></a>00441
+<a name="l00442"></a><a class="code" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">00442</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">integer::operator&lt;&lt;</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00443"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">00443</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">integer::operator&gt;&gt;</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00444"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">00444</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">integer::operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00445"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">00445</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00446"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">00446</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00447"></a>00447
+<a name="l00448"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">00448</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">integer::operator&lt;&lt;=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00449"></a>00449 <span class="keywordflow">try</span> {
+<a name="l00450"></a>00450 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator&lt;&lt;=(shift));
+<a name="l00451"></a>00451 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00453"></a>00453 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00454"></a>00454 }
+<a name="l00455"></a>00455 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00456"></a>00456 }
+<a name="l00457"></a>00457
+<a name="l00458"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">00458</a> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">integer::operator&gt;&gt;=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00459"></a>00459 <span class="keywordflow">try</span> {
+<a name="l00460"></a>00460 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator&gt;&gt;=(shift));
+<a name="l00461"></a>00461 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00462"></a>00462 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00463"></a>00463 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00466"></a>00466 }
+<a name="l00467"></a>00467
+<a name="l00468"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">00468</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>() {
+<a name="l00469"></a>00469 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">core::integer::zero</a>()));
+<a name="l00470"></a>00470 <span class="keywordflow">return</span> *cZero;
+<a name="l00471"></a>00471 }
+<a name="l00472"></a>00472
+<a name="l00473"></a><a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">00473</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() {
+<a name="l00474"></a>00474 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">core::integer::one</a>()));
+<a name="l00475"></a>00475 <span class="keywordflow">return</span> *cOne;
+<a name="l00476"></a>00476 }
+<a name="l00477"></a>00477
+<a name="l00478"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">00478</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&amp; <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>() {
+<a name="l00479"></a>00479 <span class="keywordflow">if</span> (cNaN.get()==0) {
+<a name="l00480"></a>00480 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> *n=<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>();
+<a name="l00481"></a>00481 n-&gt;_detach(); <span class="comment">// Get rid of the data</span>
+<a name="l00482"></a>00482 n-&gt;data=0;
+<a name="l00483"></a>00483 cNaN.reset(n);
+<a name="l00484"></a>00484 }
+<a name="l00485"></a>00485 <span class="keywordflow">return</span> *cNaN;
+<a name="l00486"></a>00486 }
+<a name="l00487"></a>00487
+<a name="l00488"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">00488</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">integer::_get_digit</a>(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{
+<a name="l00489"></a>00489 <span class="keywordflow">return</span> data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
+<a name="l00490"></a>00490 }
+<a name="l00491"></a>00491
+<a name="l00492"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9b98d94930ac6e0c4a6add69f622e6e2">00492</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">integer::_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{
+<a name="l00493"></a>00493 <span class="keywordflow">if</span> (index &gt;= data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <span class="keywordflow">return</span> 0;
+<a name="l00494"></a>00494 <span class="keywordflow">return</span> data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
+<a name="l00495"></a>00495 }
+<a name="l00496"></a>00496
+<a name="l00497"></a><a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">00497</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">integer::_get_length</a>()<span class="keyword"> const </span>{
+<a name="l00498"></a>00498 <span class="keywordflow">return</span> data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00499"></a>00499 }
+<a name="l00500"></a>00500
+<a name="l00501"></a>00501 <span class="keywordtype">void</span> integer::_init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init) {
+<a name="l00502"></a>00502 <span class="keywordflow">try</span> {
+<a name="l00503"></a>00503 data=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(init);
+<a name="l00504"></a>00504 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00505"></a>00505 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00506"></a>00506 data=0;
+<a name="l00507"></a>00507 }
+<a name="l00508"></a>00508 _attach();
+<a name="l00509"></a>00509 }
+<a name="l00510"></a>00510
+<a name="l00511"></a>00511 <span class="keywordtype">void</span> integer::_init(<span class="keyword">const</span> integer &amp;c) {
+<a name="l00512"></a>00512 <span class="keywordflow">try</span> {
+<a name="l00513"></a>00513 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00514"></a>00514 <span class="preprocessor"></span> data=(c.data ? <span class="keyword">new</span> detail::data_t(c.data) : 0);
+<a name="l00515"></a>00515 <span class="preprocessor"> #else</span>
+<a name="l00516"></a>00516 <span class="preprocessor"></span> data=c.data;
+<a name="l00517"></a>00517 <span class="preprocessor"> #endif</span>
+<a name="l00518"></a>00518 <span class="preprocessor"></span> } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00519"></a>00519 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00520"></a>00520 data=0;
+<a name="l00521"></a>00521 }
+<a name="l00522"></a>00522 _attach();
+<a name="l00523"></a>00523 }
+<a name="l00524"></a>00524
+<a name="l00525"></a>00525 <span class="keywordtype">void</span> integer::_init(boost::uintmax_t n) {
+<a name="l00526"></a>00526 <span class="keyword">static</span> <span class="keywordtype">int</span> bits=std::numeric_limits&lt;boost::uintmax_t&gt;::digits;
+<a name="l00527"></a>00527 <span class="keyword">static</span> <span class="keywordtype">int</span> maxDigits=(bits+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>-1)/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
+<a name="l00528"></a>00528
+<a name="l00529"></a>00529 data=0;
+<a name="l00530"></a>00530 <span class="keywordflow">try</span> {
+<a name="l00531"></a>00531 data=<span class="keyword">new</span> detail::data_t;
+<a name="l00532"></a>00532 _attach();
+<a name="l00533"></a>00533
+<a name="l00534"></a>00534 data-&gt;alloc(maxDigits);
+<a name="l00535"></a>00535 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; n != 0; ++x) {
+<a name="l00536"></a>00536 data-&gt;digits[x]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n &amp; <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
+<a name="l00537"></a>00537 n &gt;&gt;= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
+<a name="l00538"></a>00538 }
+<a name="l00539"></a>00539 data-&gt;skipLeadingZeros();
+<a name="l00540"></a>00540 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00541"></a>00541 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00542"></a>00542 <span class="keyword">delete</span> data;
+<a name="l00543"></a>00543 data=0;
+<a name="l00544"></a>00544 }
+<a name="l00545"></a>00545 }
+<a name="l00546"></a>00546
+<a name="l00547"></a>00547 <span class="keywordtype">void</span> integer::_attach() {
+<a name="l00548"></a>00548 <span class="keywordflow">if</span> (data) data-&gt;attach();
+<a name="l00549"></a>00549 }
+<a name="l00550"></a>00550
+<a name="l00551"></a>00551 <span class="keywordtype">void</span> integer::_detach() {
+<a name="l00552"></a>00552 <span class="keywordflow">if</span> (data &amp;&amp; data-&gt;detach()) <span class="keyword">delete</span> data;
+<a name="l00553"></a>00553 data=0;
+<a name="l00554"></a>00554 }
+<a name="l00555"></a>00555
+<a name="l00556"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">00556</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">integer::_make_unique</a>() {
+<a name="l00557"></a>00557 <span class="keywordflow">if</span> (data &amp;&amp; data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a> &gt; 1) {
+<a name="l00558"></a>00558 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *newstore=0;
+<a name="l00559"></a>00559 <span class="keywordflow">try</span> {
+<a name="l00560"></a>00560 newstore=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(data);
+<a name="l00561"></a>00561 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00562"></a>00562 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00563"></a>00563 newstore=0;
+<a name="l00564"></a>00564 }
+<a name="l00565"></a>00565
+<a name="l00566"></a>00566 _detach();
+<a name="l00567"></a>00567 data=newstore;
+<a name="l00568"></a>00568 _attach();
+<a name="l00569"></a>00569 }
+<a name="l00570"></a>00570 }
+<a name="l00571"></a>00571
+<a name="l00572"></a><a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">00572</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">integer::_set_negative</a>(<span class="keywordtype">bool</span> negative) {
+<a name="l00573"></a>00573 <span class="keywordflow">if</span> (data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a> != negative) {
+<a name="l00574"></a>00574 <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
+<a name="l00575"></a>00575 data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=negative;
+<a name="l00576"></a>00576 data-&gt;<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00577"></a>00577 }
+<a name="l00578"></a>00578 }
+<a name="l00579"></a>00579
+<a name="l00580"></a>00580 } <span class="comment">// namespace xint</span>
+<a name="l00581"></a>00581 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/misc_8cpp.html
==============================================================================
--- sandbox/xint/doc/misc_8cpp.html (original)
+++ sandbox/xint/doc/misc_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -37,10 +37,16 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core::log2</a> (const integer &amp;n)</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>
 <br/><br/></div></td></tr>
@@ -56,7 +62,7 @@
 
 <p>Definition in file <a class="el" href="misc_8cpp_source.html">misc.cpp</a>.</p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/misc_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/misc_8cpp_source.html (original)
+++ sandbox/xint/doc/misc_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -58,23 +58,32 @@
 <a name="l00047"></a>00047 <span class="preprocessor"> #endif</span>
 <a name="l00048"></a>00048 <span class="preprocessor"></span>}
 <a name="l00049"></a>00049
-<a name="l00063"></a>00063 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> integer&amp; n) {
-<a name="l00064"></a>00064 n._throw_if_nan();
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 <span class="keywordtype">size_t</span> r=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a> * n._get_length();
-<a name="l00067"></a>00067 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">detail::digit_hibit</a>, d=n._get_digit(n._get_length()-1);
-<a name="l00068"></a>00068 <span class="keywordflow">while</span> (mask!=0) {
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> ((mask &amp; d)!=0) <span class="keywordflow">break</span>;
-<a name="l00070"></a>00070 mask&gt;&gt;=1;
-<a name="l00071"></a>00071 --r;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">return</span> r;
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 } <span class="comment">// namespace xint</span>
-<a name="l00077"></a>00077 } <span class="comment">// namespace boost</span>
+<a name="l00050"></a>00050 <span class="keyword">namespace </span>core {
+<a name="l00051"></a>00051 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(<span class="keyword">const</span> integer&amp; n) {
+<a name="l00052"></a>00052 <span class="keywordtype">size_t</span> r=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a> * n._get_length();
+<a name="l00053"></a>00053 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">detail::digit_hibit</a>, d=n._get_digit(n._get_length()-1);
+<a name="l00054"></a>00054 <span class="keywordflow">while</span> (mask!=0) {
+<a name="l00055"></a>00055 <span class="keywordflow">if</span> ((mask &amp; d)!=0) <span class="keywordflow">break</span>;
+<a name="l00056"></a>00056 mask&gt;&gt;=1;
+<a name="l00057"></a>00057 --r;
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 <span class="keywordflow">return</span> r;
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 } <span class="comment">// namespace core</span>
+<a name="l00062"></a>00062
+<a name="l00078"></a>00078 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> integer&amp; n) {
+<a name="l00079"></a>00079 <span class="keywordflow">try</span> {
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(core::integer(n));
+<a name="l00081"></a>00081 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00082"></a>00082 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00083"></a>00083 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 } <span class="comment">// namespace xint</span>
+<a name="l00088"></a>00088 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/modular_8cpp.html
==============================================================================
--- sandbox/xint/doc/modular_8cpp.html (original)
+++ sandbox/xint/doc/modular_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -38,10 +38,19 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core::mod</a> (const integer &amp;n, const integer &amp;m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core::mulmod</a> (const integer &amp;n, const integer &amp;by, const integer &amp;m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core::sqrmod</a> (const integer &amp;n, const integer &amp;m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core::powmod</a> (const integer &amp;n, const integer &amp;e, const integer &amp;m, bool noMontgomery)</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
 <tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
 <br/><br/></div></td></tr>
@@ -60,7 +69,7 @@
 
 <p>Definition in file <a class="el" href="modular_8cpp_source.html">modular.cpp</a>.</p>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/modular_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/modular_8cpp_source.html (original)
+++ sandbox/xint/doc/modular_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -42,66 +42,106 @@
 <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="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
-<a name="l00035"></a>00035 integer r=<a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(n, m).second;
-<a name="l00036"></a>00036 <span class="keywordflow">if</span> (r.sign() &lt; 0) r+=<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(m);
-<a name="l00037"></a>00037 <span class="keywordflow">return</span> r;
-<a name="l00038"></a>00038 }
-<a name="l00039"></a>00039
-<a name="l00052"></a>00052 integer <a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; by, <span class="keyword">const</span> integer&amp; m) {
-<a name="l00053"></a>00053 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(n * by, m);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00068"></a>00068 integer <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(n), m);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00093"></a>00093 integer <a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; e, <span class="keyword">const</span> integer&amp; m, <span class="keywordtype">bool</span>
-<a name="l00094"></a>00094 noMontgomery)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (m &lt; <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()) {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_modulus();
-<a name="l00098"></a>00098 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>();
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keywordtype">bool</span> neg=(n.sign() &lt; 0 &amp;&amp; e.odd());
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 integer answer(<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>());
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="comment">// Montgomery&apos;s method is often noticeably faster, but only works if the</span>
-<a name="l00107"></a>00107 <span class="comment">// m is odd.</span>
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (m.odd() &amp;&amp; !noMontgomery) {
-<a name="l00109"></a>00109 answer=<a class="code" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(n) % m, <a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(e), m);
-<a name="l00110"></a>00110 } <span class="keywordflow">else</span> {
-<a name="l00111"></a>00111 integer p(<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(n));
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keywordtype">size_t</span> length=e._get_length(), lastBitCount=0;
-<a name="l00114"></a>00114 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(length-1));
-<a name="l00115"></a>00115 <span class="keywordflow">while</span> (ee != 0) { ee &gt;&gt;= 1; ++lastBitCount; }
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex &lt; length; ++eIndex) {
-<a name="l00118"></a>00118 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(eIndex));
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>core {
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">mod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00029"></a>00029 integer r=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">divide_r</a>(n, m).second;
+<a name="l00030"></a>00030 <span class="keywordflow">if</span> (r.sign() &lt; 0) r+=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(m);
+<a name="l00031"></a>00031 <span class="keywordflow">return</span> r;
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">mulmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; by, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00035"></a>00035 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">mod</a>(n * by, m);
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">sqrmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00039"></a>00039 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">mod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">sqr</a>(n), m);
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">powmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; e, <span class="keyword">const</span> integer&amp; m, <span class="keywordtype">bool</span>
+<a name="l00043"></a>00043 noMontgomery)
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="keywordflow">if</span> (m &lt; <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">throw</span> invalid_modulus();
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keywordtype">bool</span> neg=(n.sign() &lt; 0 &amp;&amp; e.odd());
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 integer answer(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="comment">// Montgomery&apos;s method is often noticeably faster, but only works if the</span>
+<a name="l00053"></a>00053 <span class="comment">// m is odd.</span>
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (m.odd() &amp;&amp; !noMontgomery) {
+<a name="l00055"></a>00055 answer=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(n) % m, <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(e), m);
+<a name="l00056"></a>00056 } <span class="keywordflow">else</span> {
+<a name="l00057"></a>00057 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(n));
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keywordtype">size_t</span> length=e._get_length(), lastBitCount=0;
+<a name="l00060"></a>00060 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(length-1));
+<a name="l00061"></a>00061 <span class="keywordflow">while</span> (ee != 0) { ee &gt;&gt;= 1; ++lastBitCount; }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex &lt; length; ++eIndex) {
+<a name="l00064"></a>00064 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(eIndex));
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount :
+<a name="l00067"></a>00067 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>));
+<a name="l00068"></a>00068 <span class="keywordflow">while</span> (bitCount-- &gt; 0) {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (ee &amp; 0x01) answer=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">mulmod</a>(answer, p, m);
+<a name="l00070"></a>00070 p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">sqrmod</a>(p, m);
+<a name="l00071"></a>00071 ee &gt;&gt;= 1;
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 answer._set_negative(neg);
+<a name="l00077"></a>00077 <span class="keywordflow">return</span> answer;
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 } <span class="comment">// namespace core</span>
+<a name="l00081"></a>00081
+<a name="l00089"></a>00089 integer <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00090"></a>00090 <span class="keywordflow">try</span> {
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(core::integer(n), core::integer(m)));
+<a name="l00092"></a>00092 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00093"></a>00093 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00094"></a>00094 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097
+<a name="l00110"></a>00110 integer <a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; by, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00111"></a>00111 <span class="keywordflow">try</span> {
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(core::integer(n) * core::integer(by),
+<a name="l00113"></a>00113 core::integer(m)));
+<a name="l00114"></a>00114 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00115"></a>00115 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 }
 <a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount :
-<a name="l00121"></a>00121 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>));
-<a name="l00122"></a>00122 <span class="keywordflow">while</span> (bitCount-- &gt; 0) {
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (ee &amp; 0x01) answer=<a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(answer, p, m);
-<a name="l00124"></a>00124 p=<a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(p, m);
-<a name="l00125"></a>00125 ee &gt;&gt;= 1;
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 answer._set_negative(neg);
-<a name="l00131"></a>00131 <span class="keywordflow">return</span> answer;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 } <span class="comment">// namespace xint</span>
-<a name="l00135"></a>00135 } <span class="comment">// namespace boost</span>
+<a name="l00132"></a>00132 integer <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00133"></a>00133 <span class="keywordflow">try</span> {
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(core::integer(n)), core::integer(m)));
+<a name="l00135"></a>00135 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00137"></a>00137 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00162"></a>00162 integer <a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; e, <span class="keyword">const</span> integer&amp; m, <span class="keywordtype">bool</span>
+<a name="l00163"></a>00163 noMontgomery)
+<a name="l00164"></a>00164 {
+<a name="l00165"></a>00165 <span class="keywordflow">try</span> {
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(core::integer(n), core::integer(e),
+<a name="l00167"></a>00167 core::integer(m), noMontgomery));
+<a name="l00168"></a>00168 } <span class="keywordflow">catch</span> (std::exception&amp;) {
+<a name="l00169"></a>00169 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00170"></a>00170 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 } <span class="comment">// namespace xint</span>
+<a name="l00175"></a>00175 } <span class="comment">// namespace boost</span>
 </pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/monty_8cpp.html
==============================================================================
--- sandbox/xint/doc/monty_8cpp.html (original)
+++ sandbox/xint/doc/monty_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -40,7 +40,12 @@
 <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 of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>All of the commonly-used functions 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_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Contains the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> type and <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">core</a> functions. </p>
 <br/></td></tr>
 </p>
 <tr><td colspan="2"><h2>Defines</h2></td></tr>
@@ -49,18 +54,18 @@
 <tr><td colspan="2"><div class="groupHeader">Montgomery Reduction functions</div></td></tr>
 <tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpef45384829a28a8031424a8c453ceaa0"></a> </p>
 <br/><br/></div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">digit_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint::inverse0</a> (const integer &amp;n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint::montgomeryR</a> (const integer &amp;n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint::toMontgomeryForm</a> (const integer &amp;n, const integer &amp;m)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint::fromMontgomeryForm</a> (const integer &amp;n, const integer &amp;m)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> from the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint::montgomeryMultiplyMod</a> (const integer &amp;a, const integer &amp;b, const integer &amp;n, digit_t nPrime0)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint::montgomeryPowerMod</a> (const integer &amp;a, const integer &amp;e, const integer &amp;n)</td></tr>
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core::inverse0</a> (const integer &amp;n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core::montgomeryR</a> (const integer &amp;n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core::toMontgomeryForm</a> (const integer &amp;n, const integer &amp;m)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core::fromMontgomeryForm</a> (const integer &amp;n, const integer &amp;m)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> from the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core::montgomeryMultiplyMod</a> (const integer &amp;a, const integer &amp;b, const integer &amp;n, digit_t nPrime0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core::montgomeryPowerMod</a> (const integer &amp;a, const integer &amp;e, const integer &amp;n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
 </table>
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
 <p>Internally used functions. </p>
@@ -84,7 +89,7 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00130">130</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
+<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00127">127</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
 
 </div>
 </div>
@@ -100,12 +105,12 @@
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00167">167</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
+<p>Definition at line <a class="el" href="monty_8cpp_source.html#l00164">164</a> of file <a class="el" href="monty_8cpp_source.html">monty.cpp</a>.</p>
 
 </div>
 </div>
 </div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by&nbsp;
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40: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.1 </small></address>
 </body>

Modified: sandbox/xint/doc/monty_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/monty_8cpp_source.html (original)
+++ sandbox/xint/doc/monty_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -46,256 +46,251 @@
 <a name="l00027"></a>00027
 <a name="l00028"></a>00028 <span class="keyword">namespace </span>boost {
 <a name="l00029"></a>00029 <span class="keyword">namespace </span>xint {
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">using namespace </span>detail;
-<a name="l00032"></a>00032
-<a name="l00034"></a>00034 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer&amp; n) {
-<a name="l00035"></a>00035 <span class="comment">// Using the Dussé and Kalisk simplification</span>
-<a name="l00036"></a>00036 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> x = 2, y = 1;
-<a name="l00037"></a>00037 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n0 = n._get_digit(0);
-<a name="l00038"></a>00038 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 2; i &lt;= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>; ++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> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(x - y);
-<a name="l00042"></a>00042 }
-<a name="l00043"></a>00043
-<a name="l00047"></a>00047 integer <a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&amp;#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer&amp; n) {
-<a name="l00048"></a>00048 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() &lt;&lt; (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * n._get_data()-&gt;mLength);
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00052"></a>00052 integer <a class="code" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
-<a name="l00053"></a>00053 <span class="keywordflow">return</span> (n * <a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&amp;#39;s internal representation...">montgomeryR</a>(m) % m);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00057"></a>00057 integer <a class="code" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
-<a name="l00058"></a>00058 integer inv=<a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&amp;#39;s internal representation...">montgomeryR</a>(m), m);
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (inv.is_nan()) {
-<a name="l00060"></a>00060 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> invalid_modulus(<span class="stringliteral">&quot;modulus has no inverse&quot;</span>);
-<a name="l00061"></a>00061 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> (n * inv % m);
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 <span class="comment">//integer montgomeryReduction(const integer&amp; m, const integer&amp; mPrime, const</span>
-<a name="l00067"></a>00067 <span class="comment">// integer&amp; T)</span>
-<a name="l00068"></a>00068 <span class="comment">//{</span>
-<a name="l00069"></a>00069 <span class="comment">// // Unstated parameter b is digit_overflowbit, a power of 2</span>
-<a name="l00070"></a>00070 <span class="comment">// // Unstated parameter n is m.data-&gt;mLength</span>
-<a name="l00071"></a>00071 <span class="comment">// // Unstated parameter R is b^n</span>
-<a name="l00072"></a>00072 <span class="comment">// // gcd(m, b)==1, or in other words, m must be an odd number</span>
-<a name="l00073"></a>00073 <span class="comment">// // m&apos;=-m^(-1) mod b (precalculated)</span>
-<a name="l00074"></a>00074 <span class="comment">// // T is any arbitrary number greater than zero and &lt;= m*R</span>
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>core {
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="keyword">using namespace </span>detail;
+<a name="l00033"></a>00033
+<a name="l00035"></a>00035 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer&amp; n) {
+<a name="l00036"></a>00036 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00037"></a>00037 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> x = 2, y = 1;
+<a name="l00038"></a>00038 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n0 = n._get_digit(0);
+<a name="l00039"></a>00039 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 2; i &lt;= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>; ++i, x &lt;&lt;= 1)
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (x &lt; ((n0 * y) &amp; ((x &lt;&lt; 1) - 1)))
+<a name="l00041"></a>00041 y += x;
+<a name="l00042"></a>00042 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(x - y);
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00048"></a>00048 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&amp;#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer&amp; n) {
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() &lt;&lt; (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * n._get_data()-&gt;mLength);
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00053"></a>00053 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> (n * <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&amp;#39;s internal representation...">montgomeryR</a>(m) % m);
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00058"></a>00058 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer&amp; n, <span class="keyword">const</span> integer&amp; m) {
+<a name="l00059"></a>00059 integer inv=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">invmod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&amp;#39;s internal representation...">montgomeryR</a>(m), m);
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> (n * inv % m);
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="comment">//integer montgomeryReduction(const integer&amp; m, const integer&amp; mPrime, const</span>
+<a name="l00064"></a>00064 <span class="comment">// integer&amp; T)</span>
+<a name="l00065"></a>00065 <span class="comment">//{</span>
+<a name="l00066"></a>00066 <span class="comment">// // Unstated parameter b is digit_overflowbit, a power of 2</span>
+<a name="l00067"></a>00067 <span class="comment">// // Unstated parameter n is m.data-&gt;mLength</span>
+<a name="l00068"></a>00068 <span class="comment">// // Unstated parameter R is b^n</span>
+<a name="l00069"></a>00069 <span class="comment">// // gcd(m, b)==1, or in other words, m must be an odd number</span>
+<a name="l00070"></a>00070 <span class="comment">// // m&apos;=-m^(-1) mod b (precalculated)</span>
+<a name="l00071"></a>00071 <span class="comment">// // T is any arbitrary number greater than zero and &lt;= m*R</span>
+<a name="l00072"></a>00072 <span class="comment">//</span>
+<a name="l00073"></a>00073 <span class="comment">// int n=m._get_data()-&gt;mLength;</span>
+<a name="l00074"></a>00074 <span class="comment">// doubledigit_t mprime = mPrime._get_data()-&gt;digits[0];</span>
 <a name="l00075"></a>00075 <span class="comment">//</span>
-<a name="l00076"></a>00076 <span class="comment">// int n=m._get_data()-&gt;mLength;</span>
-<a name="l00077"></a>00077 <span class="comment">// doubledigit_t mprime = mPrime._get_data()-&gt;digits[0];</span>
-<a name="l00078"></a>00078 <span class="comment">//</span>
-<a name="l00079"></a>00079 <span class="comment">// integer A(T);</span>
-<a name="l00080"></a>00080 <span class="comment">// for (int i=0; i &lt; n; ++i) {</span>
-<a name="l00081"></a>00081 <span class="comment">// integer ui((A._get_data()-&gt;digits[i] * mprime) &amp; digit_mask);</span>
-<a name="l00082"></a>00082 <span class="comment">// ui &lt;&lt;= (bits_per_digit * i); // Fast-multiply by b^i</span>
-<a name="l00083"></a>00083 <span class="comment">// A+=(ui*m);</span>
-<a name="l00084"></a>00084 <span class="comment">// }</span>
-<a name="l00085"></a>00085 <span class="comment">// A &gt;&gt;= (bits_per_digit * n); // Fast-divide by b^n</span>
-<a name="l00086"></a>00086 <span class="comment">// if (A &gt;= m) A -= m;</span>
-<a name="l00087"></a>00087 <span class="comment">// return A;</span>
-<a name="l00088"></a>00088 <span class="comment">//}</span>
-<a name="l00089"></a>00089
-<a name="l00093"></a>00093 integer <a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer&amp; a, <span class="keyword">const</span> integer&amp; b, <span class="keyword">const</span> integer&amp;
-<a name="l00094"></a>00094 n, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="comment">// Using the Dussé and Kalisk simplification</span>
-<a name="l00097"></a>00097 <span class="comment">// Unstated parameter B is a power of two representing the number of values</span>
-<a name="l00098"></a>00098 <span class="comment">// that a single digit can hold, i.e. digit_overflowbit</span>
-<a name="l00099"></a>00099 <span class="comment">// Unstated parameter L is the number of digits in the modulus, i.e.</span>
-<a name="l00100"></a>00100 <span class="comment">// n._get_length()</span>
-<a name="l00101"></a>00101 <span class="comment">// Unstated parameter r is B^L</span>
-<a name="l00102"></a>00102 <span class="comment">// nPrime0 is nPrime mod B, or digit zero of nPrime</span>
+<a name="l00076"></a>00076 <span class="comment">// integer A(T);</span>
+<a name="l00077"></a>00077 <span class="comment">// for (int i=0; i &lt; n; ++i) {</span>
+<a name="l00078"></a>00078 <span class="comment">// integer ui((A._get_data()-&gt;digits[i] * mprime) &amp; digit_mask);</span>
+<a name="l00079"></a>00079 <span class="comment">// ui &lt;&lt;= (bits_per_digit * i); // Fast-multiply by b^i</span>
+<a name="l00080"></a>00080 <span class="comment">// A+=(ui*m);</span>
+<a name="l00081"></a>00081 <span class="comment">// }</span>
+<a name="l00082"></a>00082 <span class="comment">// A &gt;&gt;= (bits_per_digit * n); // Fast-divide by b^n</span>
+<a name="l00083"></a>00083 <span class="comment">// if (A &gt;= m) A -= m;</span>
+<a name="l00084"></a>00084 <span class="comment">// return A;</span>
+<a name="l00085"></a>00085 <span class="comment">//}</span>
+<a name="l00086"></a>00086
+<a name="l00090"></a>00090 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer&amp; a, <span class="keyword">const</span> integer&amp; b, <span class="keyword">const</span> integer&amp;
+<a name="l00091"></a>00091 n, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0)
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00094"></a>00094 <span class="comment">// Unstated parameter B is a power of two representing the number of values</span>
+<a name="l00095"></a>00095 <span class="comment">// that a single digit can hold, i.e. digit_overflowbit</span>
+<a name="l00096"></a>00096 <span class="comment">// Unstated parameter L is the number of digits in the modulus, i.e.</span>
+<a name="l00097"></a>00097 <span class="comment">// n._get_length()</span>
+<a name="l00098"></a>00098 <span class="comment">// Unstated parameter r is B^L</span>
+<a name="l00099"></a>00099 <span class="comment">// nPrime0 is nPrime mod B, or digit zero of nPrime</span>
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">const</span> integer B(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>);
+<a name="l00102"></a>00102 <span class="keyword">const</span> <span class="keywordtype">size_t</span> L(n._get_length()), L1(L-1);
 <a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keyword">const</span> integer B(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>);
-<a name="l00105"></a>00105 <span class="keyword">const</span> <span class="keywordtype">size_t</span> L(n._get_length()), L1(L-1);
+<a name="l00104"></a>00104 integer t=a*b;
+<a name="l00105"></a>00105 <span class="keywordtype">size_t</span> i=0;
 <a name="l00106"></a>00106
-<a name="l00107"></a>00107 integer t=a*b;
-<a name="l00108"></a>00108 <span class="keywordtype">size_t</span> i=0;
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 <span class="keywordflow">do</span> {
-<a name="l00111"></a>00111 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mi=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(t._get_digit(i))*nPrime0);
-<a name="l00112"></a>00112 t += (n * mi) &lt;&lt; (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * i);
-<a name="l00113"></a>00113 } <span class="keywordflow">while</span> (++i &lt;= L1);
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 t &gt;&gt;= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * L); <span class="comment">// Fast divide by r</span>
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> (t &gt;= n ? t - n : t);
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="keyword">namespace </span>{
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="comment">// cMaxK sets the balance between memory/precalculations required and the number</span>
-<a name="l00122"></a>00122 <span class="comment">// of calculations required for an exponentiation. Increasing it can only reduce</span>
-<a name="l00123"></a>00123 <span class="comment">// the calculations by a small amount, whereas it increases the memory</span>
-<a name="l00124"></a>00124 <span class="comment">// requirements and number of precalculations by an exponential amount. 8</span>
-<a name="l00125"></a>00125 <span class="comment">// provides a good balance.</span>
-<a name="l00126"></a>00126 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cMaxK=8;
-<a name="l00127"></a>00127 <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="l00128"></a>00128 <span class="keyword">typedef</span> std::vector&lt;kbitdigit_t&gt; vkbitdigit_t;
-<a name="l00129"></a>00129 <span class="keyword">typedef</span> std::vector&lt;integer&gt; vxint_t;
-<a name="l00130"></a><a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">00130</a> <span class="preprocessor">#define ddPowerOfTwo(p) (doubledigit_t(1) &lt;&lt; p)</span>
-<a name="l00131"></a>00131 <span class="preprocessor"></span>
-<a name="l00132"></a>00132 <span class="comment">// The splitIntoKBitDigits function assumes that cMaxK &lt;= bits_per_digit+1,</span>
-<a name="l00133"></a>00133 <span class="comment">// it won&apos;t work properly if it isn&apos;t.</span>
-<a name="l00134"></a>00134 BOOST_STATIC_ASSERT(cMaxK &lt;= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>+1);
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keyword">class </span>TUTable {
-<a name="l00137"></a>00137 <span class="keyword">public</span>:
-<a name="l00138"></a>00138 <span class="keyword">typedef</span> std::pair&lt;int, int&gt; value_t;
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <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> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[x]; }
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="keyword">static</span> <span class="keyword">const</span> TUTable&amp; <span class="keyword">get</span>() {
-<a name="l00143"></a>00143 <span class="comment">// Construct a singleton instance on demand</span>
-<a name="l00144"></a>00144 <span class="keywordflow">if</span> (mPtr.get()==0) mPtr.reset(<span class="keyword">new</span> TUTable);
-<a name="l00145"></a>00145 <span class="keywordflow">return</span> *mPtr;
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 <span class="keyword">private</span>:
-<a name="l00149"></a>00149 TUTable(): <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>(new value_t[<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK)]) {
-<a name="l00150"></a>00150 value_t *p=&amp;<a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[0], *pe=p+<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK);
-<a name="l00151"></a>00151 *p++=std::make_pair(0, 0);
-<a name="l00152"></a>00152 <span class="keywordtype">int</span> i=1;
-<a name="l00153"></a>00153 <span class="keywordflow">while</span> (p!=pe) *p++=calculateValues(i++);
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 std::pair&lt;int, int&gt; calculateValues(<span class="keywordtype">int</span> x) {
-<a name="l00157"></a>00157 <span class="keywordtype">int</span> r=0;
-<a name="l00158"></a>00158 <span class="keywordflow">while</span> (1) {
-<a name="l00159"></a>00159 <span class="keywordflow">if</span> (x &amp; 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
-<a name="l00160"></a>00160 ++r;
-<a name="l00161"></a>00161 x &gt;&gt;= 1;
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="keyword">static</span> std::auto_ptr&lt;TUTable&gt; mPtr;
+<a name="l00107"></a>00107 <span class="keywordflow">do</span> {
+<a name="l00108"></a>00108 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mi=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(t._get_digit(i))*nPrime0);
+<a name="l00109"></a>00109 t += (n * mi) &lt;&lt; (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * i);
+<a name="l00110"></a>00110 } <span class="keywordflow">while</span> (++i &lt;= L1);
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 t &gt;&gt;= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * L); <span class="comment">// Fast divide by r</span>
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> (t &gt;= n ? t - n : t);
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keyword">namespace </span>{
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="comment">// cMaxK sets the balance between memory/precalculations required and the number</span>
+<a name="l00119"></a>00119 <span class="comment">// of calculations required for an exponentiation. Increasing it can only reduce</span>
+<a name="l00120"></a>00120 <span class="comment">// the calculations by a small amount, whereas it increases the memory</span>
+<a name="l00121"></a>00121 <span class="comment">// requirements and number of precalculations by an exponential amount. 8</span>
+<a name="l00122"></a>00122 <span class="comment">// provides a good balance.</span>
+<a name="l00123"></a>00123 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cMaxK=8;
+<a name="l00124"></a>00124 <span class="keyword">typedef</span> boost::uint_t&lt;cMaxK&gt;::fast kbitdigit_t; <span class="comment">// k bits have to fit into it</span>
+<a name="l00125"></a>00125 <span class="keyword">typedef</span> std::vector&lt;kbitdigit_t&gt; vkbitdigit_t;
+<a name="l00126"></a>00126 <span class="keyword">typedef</span> std::vector&lt;integer&gt; vxint_t;
+<a name="l00127"></a><a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">00127</a> <span class="preprocessor">#define ddPowerOfTwo(p) (doubledigit_t(1) &lt;&lt; p)</span>
+<a name="l00128"></a>00128 <span class="preprocessor"></span>
+<a name="l00129"></a>00129 <span class="comment">// The splitIntoKBitDigits function assumes that cMaxK &lt;= bits_per_digit+1,</span>
+<a name="l00130"></a>00130 <span class="comment">// it won&apos;t work properly if it isn&apos;t.</span>
+<a name="l00131"></a>00131 BOOST_STATIC_ASSERT(cMaxK &lt;= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>+1);
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">class </span>TUTable {
+<a name="l00134"></a>00134 <span class="keyword">public</span>:
+<a name="l00135"></a>00135 <span class="keyword">typedef</span> std::pair&lt;int, int&gt; value_t;
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 <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> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[x]; }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">const</span> TUTable&amp; <span class="keyword">get</span>() {
+<a name="l00140"></a>00140 <span class="comment">// Construct a singleton instance on demand</span>
+<a name="l00141"></a>00141 <span class="keywordflow">if</span> (mPtr.get()==0) mPtr.reset(<span class="keyword">new</span> TUTable);
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> *mPtr;
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keyword">private</span>:
+<a name="l00146"></a>00146 TUTable(): <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>(new value_t[<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK)]) {
+<a name="l00147"></a>00147 value_t *p=&amp;<a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[0], *pe=p+<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK);
+<a name="l00148"></a>00148 *p++=std::make_pair(0, 0);
+<a name="l00149"></a>00149 <span class="keywordtype">int</span> i=1;
+<a name="l00150"></a>00150 <span class="keywordflow">while</span> (p!=pe) *p++=calculateValues(i++);
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 std::pair&lt;int, int&gt; calculateValues(<span class="keywordtype">int</span> x) {
+<a name="l00154"></a>00154 <span class="keywordtype">int</span> r=0;
+<a name="l00155"></a>00155 <span class="keywordflow">while</span> (1) {
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (x &amp; 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
+<a name="l00157"></a>00157 ++r;
+<a name="l00158"></a>00158 x &gt;&gt;= 1;
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="keyword">static</span> std::auto_ptr&lt;TUTable&gt; mPtr;
+<a name="l00163"></a>00163
+<a name="l00164"></a><a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">00164</a> boost::scoped_array&lt;value_t&gt; <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>;
+<a name="l00165"></a>00165 };
 <a name="l00166"></a>00166
-<a name="l00167"></a><a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">00167</a> boost::scoped_array&lt;value_t&gt; <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>;
-<a name="l00168"></a>00168 };
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 std::auto_ptr&lt;TUTable&gt; TUTable::mPtr;
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> integer&amp; e) {
-<a name="l00173"></a>00173 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> k=cMaxK, kTarget=<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(e)-1;
-<a name="l00174"></a>00174 <span class="keywordflow">while</span> (k &gt; 1 &amp;&amp; ((k - 1) * (k &lt;&lt; ((k - 1) &lt;&lt; 1))
-<a name="l00175"></a>00175 / (<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k) - k - 1)) &gt;= kTarget)
-<a name="l00176"></a>00176 --k;
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> int(k);
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 vxint_t precalculateOddPowersOfAa(<span class="keyword">const</span> integer&amp; a, <span class="keyword">const</span> integer&amp;
-<a name="l00181"></a>00181 r, <span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> k)
-<a name="l00182"></a>00182 {
-<a name="l00183"></a>00183 integer aa=a*r%n, aSquared=a*a%n;
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 vxint_t rval;
-<a name="l00186"></a>00186 rval.reserve(<span class="keywordtype">size_t</span>(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)));
-<a name="l00187"></a>00187 rval.push_back(<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()); <span class="comment">// Anything to the zeroth power is one</span>
-<a name="l00188"></a>00188 rval.push_back(aa); <span class="comment">// Anything to the first power is itself</span>
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> i=3, ie=(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)); i&lt;ie; i+=2) {
-<a name="l00191"></a>00191 aa=aa*aSquared%n;
-<a name="l00192"></a>00192 rval.push_back(<a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>()); <span class="comment">// Even powers not needed or calculated</span>
-<a name="l00193"></a>00193 rval.push_back(aa); <span class="comment">// Odd power</span>
-<a name="l00194"></a>00194 }
+<a name="l00167"></a>00167 std::auto_ptr&lt;TUTable&gt; TUTable::mPtr;
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> integer&amp; e) {
+<a name="l00170"></a>00170 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> k=cMaxK, kTarget=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(e)-1;
+<a name="l00171"></a>00171 <span class="keywordflow">while</span> (k &gt; 1 &amp;&amp; ((k - 1) * (k &lt;&lt; ((k - 1) &lt;&lt; 1))
+<a name="l00172"></a>00172 / (<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k) - k - 1)) &gt;= kTarget)
+<a name="l00173"></a>00173 --k;
+<a name="l00174"></a>00174 <span class="keywordflow">return</span> int(k);
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 vxint_t precalculateOddPowersOfAa(<span class="keyword">const</span> integer&amp; a, <span class="keyword">const</span> integer&amp;
+<a name="l00178"></a>00178 r, <span class="keyword">const</span> integer&amp; n, <span class="keywordtype">size_t</span> k)
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 integer aa=a*r%n, aSquared=a*a%n;
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 vxint_t rval;
+<a name="l00183"></a>00183 rval.reserve(<span class="keywordtype">size_t</span>(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)));
+<a name="l00184"></a>00184 rval.push_back(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()); <span class="comment">// Anything to the zeroth power is one</span>
+<a name="l00185"></a>00185 rval.push_back(aa); <span class="comment">// Anything to the first power is itself</span>
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> i=3, ie=(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)); i&lt;ie; i+=2) {
+<a name="l00188"></a>00188 aa=aa*aSquared%n;
+<a name="l00189"></a>00189 rval.push_back(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>()); <span class="comment">// Even powers not needed or calculated</span>
+<a name="l00190"></a>00190 rval.push_back(aa); <span class="comment">// Odd power</span>
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="keywordflow">return</span> rval;
+<a name="l00194"></a>00194 }
 <a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="keywordflow">return</span> rval;
-<a name="l00197"></a>00197 }
+<a name="l00196"></a>00196 vkbitdigit_t splitIntoKBitDigits(<span class="keyword">const</span> integer&amp; e, <span class="keywordtype">size_t</span> k) {
+<a name="l00197"></a>00197 <span class="keywordtype">size_t</span> eBits=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(e), eDigits=(eBits+k-1)/k, i=0, bitsInHopper=0;
 <a name="l00198"></a>00198
-<a name="l00199"></a>00199 vkbitdigit_t splitIntoKBitDigits(<span class="keyword">const</span> integer&amp; e, <span class="keywordtype">size_t</span> k) {
-<a name="l00200"></a>00200 <span class="keywordtype">size_t</span> eBits=<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(e), eDigits=(eBits+k-1)/k, i=0, bitsInHopper=0;
+<a name="l00199"></a>00199 vkbitdigit_t rval;
+<a name="l00200"></a>00200 rval.reserve(eDigits);
 <a name="l00201"></a>00201
-<a name="l00202"></a>00202 vkbitdigit_t rval;
-<a name="l00203"></a>00203 rval.reserve(eDigits);
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> hopper=0, mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1)&lt;&lt;k)-1;
-<a name="l00206"></a>00206 <span class="keywordflow">while</span> (eDigits-- &gt; 0) {
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> (bitsInHopper &lt; k &amp;&amp; i &lt; e._get_length()) {
-<a name="l00208"></a>00208 <span class="comment">// Add more bits to the hopper</span>
-<a name="l00209"></a>00209 hopper = hopper | (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(e._get_digit(i++)) &lt;&lt; bitsInHopper);
-<a name="l00210"></a>00210 bitsInHopper += <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="comment">// Grab k bits off the bottom</span>
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (bitsInHopper &gt; 0) {
-<a name="l00215"></a>00215 rval.push_back(kbitdigit_t(hopper &amp; mask));
-<a name="l00216"></a>00216 hopper &gt;&gt;= k;
-<a name="l00217"></a>00217 bitsInHopper-=k;
-<a name="l00218"></a>00218 } <span class="keywordflow">else</span> {
-<a name="l00219"></a>00219 rval.push_back(0);
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221 }
+<a name="l00202"></a>00202 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> hopper=0, mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23&quo