|
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
+<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
<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
+<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
<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core::shift_right</a> (const integer &n, size_t byBits)</td></tr>
<tr><td 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
+<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
<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>& 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 < 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) << (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) & 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>& 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 < 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) << (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) & 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>& 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 >= n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>()) ndata-><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>& 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 >= n.<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>()) ndata-><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) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00044"></a>00044 ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] |= mask;
+<a name="l00045"></a>00045 ndata-><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>& 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 < 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) << (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>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] &= ~mask;
+<a name="l00054"></a>00054 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>()-><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) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00059"></a>00059 ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] |= mask;
-<a name="l00060"></a>00060 ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.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>& 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 < 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) << (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>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] &= ~mask;
-<a name="l00077"></a>00077 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>()-><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>& 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>& 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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *pe=p+ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00063"></a>00063 <span class="keywordflow">while</span> (p!=pe && *p==0) ++p;
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keywordtype">size_t</span> index=(p - ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>);
+<a name="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 & 0x01)==0) {
+<a name="l00070"></a>00070 digit>>=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>& 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<</span><span class="keywordtype">size_t</span><span class="keyword">></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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
+<a name="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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, *s2=larger->digits;
+<a name="l00091"></a>00091 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
<a name="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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *pe=p+ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00095"></a>00095 <span class="keywordflow">while</span> (p!=pe && *p==0) ++p;
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keywordtype">size_t</span> index=(p - ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>);
-<a name="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 & 0x01)==0) {
-<a name="l00102"></a>00102 digit>>=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>& 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<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(n)-1);
-<a name="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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& 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 < s1e) *t++ = *s1++ & *s2++;
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 rdata-><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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
+<a name="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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00108"></a>00108 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
+<a name="l00109"></a>00109 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ | *s2++;
+<a name="l00112"></a>00112 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 rdata-><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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
+<a name="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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00127"></a>00127 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
+<a name="l00128"></a>00128 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ ^ *s2++;
+<a name="l00131"></a>00131 <span class="keywordflow">while</span> (s2<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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, *s2=larger->digits;
-<a name="l00141"></a>00141 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="keywordflow">while</span> (s1 < s1e) *t++ = *s1++ & *s2++;
+<a name="l00133"></a>00133 rdata-><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>& n, <span class="keywordtype">int</span> byBits) {
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (byBits > 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>& 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-><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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& 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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->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>()-><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>& 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>()-><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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00167"></a>00167 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
-<a name="l00168"></a>00168 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ | *s2++;
-<a name="l00171"></a>00171 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 rdata-><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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& 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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00196"></a>00196 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
-<a name="l00197"></a>00197 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ ^ *s2++;
-<a name="l00200"></a>00200 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 rdata-><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>& n, <span class="keywordtype">int</span> byBits) {
-<a name="l00215"></a>00215 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
-<a name="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>& 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>()-><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>& 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>()-><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>& 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&) {
+<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& 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&) {
+<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& 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&) {
+<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& 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&) {
+<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& 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&) {
+<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& n1, <span class="keyword">const</span> integer& 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&) {
+<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& n1, <span class="keyword">const</span> integer& 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&) {
+<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& n1, <span class="keyword">const</span> integer& 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&) {
+<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& n, <span class="keywordtype">int</span> byBits) {
+<a name="l00310"></a>00310 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
+<a name="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& 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&) {
+<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& 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&) {
+<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
+<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
<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 &what="cannot represent the requested value")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">cannot_represent</a> (const std::string &what="cannot represent the requested value")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>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 & Destructor Documentation</h2>
+<a class="anchor" id="a940b731d15c77c43abef5d6053fd5d75"></a><!-- doxytag: member="boost::xint::cannot_represent::cannot_represent" ref="a940b731d15c77c43abef5d6053fd5d75" args="(const std::string &what="cannot represent the requested value")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::cannot_represent::cannot_represent </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"cannot represent the requested value"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &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 &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 &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 &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_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 &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_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 &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 &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&=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a>(const integer &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 &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 &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 &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<<</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<<=</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 &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>></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>>=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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 & 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"> </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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">integer</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </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> &b)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">integer</a> (const std::string &str, size_t base=10)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab04d9f5bfe1d4b9d10acf4cf3f8a6115">operator++</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab30e34305c00e55f9ea0012085c49c9d">operator--</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">operator&=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">operator<<</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">operator>></a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">operator<<=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator>>=</a> (size_t shift)</td></tr>
+<tr><td 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 </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 </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 </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 </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> * </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> * </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> </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> </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 </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a> (bool negative)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a> ()</td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
+<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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a> ()</td></tr>
+<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a> (boost::uintmax_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </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 </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> * </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 & 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> ) </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 &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> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &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> & </td>
+ <td class="paramname"> <em>b</em></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#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 &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_integral< T > >::type * </td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_signed< T > >::type * </td>
+ <td class="paramname"> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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 &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_integral< T > >::type * </td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_unsigned< T > >::type * </td>
+ <td class="paramname"> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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 &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 & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em> = <code>10</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [explicit]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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> ) </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> ) </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> ) </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> ) </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> ) </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 </td>
+ <td class="paramname"> <em>index</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="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 </td>
+ <td class="paramname"> <em>index</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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> ) </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 </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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 &c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::integer::_init </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>c</em></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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> </td>
+ <td class="paramname"> <em>init</em> = <code>0</code></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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> ) </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 </td>
+ <td class="paramname"> <em>negative</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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> ) </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> ) </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> ) </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> & boost::xint::core::integer::one </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator%= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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&=" ref="a00b096912c273f06aa0c0ea1284573d3" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator&= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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 &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator*= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 </td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postincrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="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> & boost::xint::core::integer::operator++ </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Preincrement operator </p>
+
+<p>Definition at line <a class="el" href="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 &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator+= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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--" 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 </td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postdecrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="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--" 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> & boost::xint::core::integer::operator-- </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Predecrement operator </p>
+
+<p>Definition at line <a class="el" href="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-=" ref="aab4918c70e19e08e650e827b2c89e83f" args="(const integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator-= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator/= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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<<" 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<< </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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<<=" 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> & boost::xint::core::integer::operator<<= </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>c</em></td>
+ <td> ) </td>
+ <td></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>>" 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>> </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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>>=" 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> & boost::xint::core::integer::operator>>= </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator^= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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 &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::integer::operator|= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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> ) </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> & boost::xint::core::integer::zero </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &what="divide by zero error")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </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 &what="divide by zero error")</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 & 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 &what="divide by zero error")" -->
+<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 & </td>
+ <td class="paramname"> <em>what</em> = <code>"divide by zero error"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &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 &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 &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">integer</a>(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">integer</a>(const std::string &str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#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 &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">operator&=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator<<</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">operator<<=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a>(const integer &c)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">operator>></a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">operator>>=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1integer.html#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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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 & 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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600">integer</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new <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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#afc2ddd14b40ab91640d10b134d2b7141">integer</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a copy of an existing <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"> </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> &b)</td></tr>
+<tr><td class="mdescLeft"> </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<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#acf287891cafa7f5b20f5e56476fa1fc6">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8">integer</a> (const std::string &str, size_t base=10)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an <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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#ab15c60f8f28c2f520a26ab19e33c280c">operator++</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">operator--</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#acdb4dc0521b76fbb0e667905fddaaada">operator++</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a628a1e9614bcb4d0916dd7869877807d">operator--</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">operator&=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator<<</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a22af7cfcb28f97f4c8b78939265b46d6">operator>></a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">operator<<=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">operator>>=</a> (size_t shift)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf5be5219a55995e13d6b8d7bf99ed653"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">odd</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine oddness. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb">even</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine evenness. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">sign</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the sign of <code>*this</code>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </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"> </td><td class="mdescRight">Tests <code>*this</code> for Not-a-Number. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">hex_digits</a> () const </td></tr>
+<tr><td class="mdescLeft"> </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> * </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> * </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> </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> </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 </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 </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 </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">one</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html#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 & 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> ) </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 &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> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a copy of an existing <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> </td><td valign="top"><em>b</em> </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 &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> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </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> </td><td valign="top"><em>b</em> </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 &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_integral< T > >::type * </td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_signed< T > >::type * </td>
+ <td class="paramname"> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Constructs a new <a class="el" href="classboost_1_1xint_1_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> </td><td valign="top"><em>n</em> </td><td>A number of type <code>T</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type of <code>n</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="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 &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const T & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_integral< T > >::type * </td>
+ <td class="paramname"> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">typename boost::enable_if< boost::is_unsigned< T > >::type * </td>
+ <td class="paramname"> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Constructs a new <a class="el" href="classboost_1_1xint_1_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> </td><td valign="top"><em>n</em> </td><td>A number of type <code>T</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type of <code>n</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>You can ignore the <code>enable_if</code> parameters, they are there only to tell the compiler what types it applies to.</p>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="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 &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 & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em> = <code>10</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [explicit]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Create an <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> </td><td valign="top"><em>str</em> </td><td>A string representation of a number. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base of the number, or <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This 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> ) </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> ) </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 </td>
+ <td class="paramname"> <em>index</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="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 </td>
+ <td class="paramname"> <em>index</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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> ) </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> ) </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 </td>
+ <td class="paramname"> <em>negative</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#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> ) </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> ) </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> ) </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> & boost::xint::integer::nan </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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> ) </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> & boost::xint::integer::one </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &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> & boost::xint::integer::operator%= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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&=" ref="a717edb41c50edbd4b601c38b1fc6a8b0" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator&= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </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 &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> & boost::xint::integer::operator*= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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 </td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postincrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="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> & boost::xint::integer::operator++ </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Preincrement operator </p>
+
+<p>Definition at line <a class="el" href="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 &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> & boost::xint::integer::operator+= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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--" 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 </td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Postdecrement operator -- not recommended, inefficient </p>
+
+<p>Definition at line <a class="el" href="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--" 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> & boost::xint::integer::operator-- </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Predecrement operator </p>
+
+<p>Definition at line <a class="el" href="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-=" ref="a92f8f3cb4e080c43d889103e7606b7ba" args="(const integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator-= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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 &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> & boost::xint::integer::operator/= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>b</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>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<<" 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<< </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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<<=" 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> & boost::xint::integer::operator<<= </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &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> & boost::xint::integer::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>c</em></td>
+ <td> ) </td>
+ <td></td>
+ </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>>" 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>> </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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>>=" 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> & boost::xint::integer::operator>>= </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>shift</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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 &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator^= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </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 &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::integer::operator|= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </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> ) </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> & boost::xint::integer::zero </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &what="invalid base")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">invalid_base</a> (const std::string &what="invalid base")</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 & Destructor Documentation</h2>
+<a class="anchor" id="a73c7125da5b1425c27b9f20aa3845078"></a><!-- doxytag: member="boost::xint::invalid_base::invalid_base" ref="a73c7125da5b1425c27b9f20aa3845078" args="(const std::string &what="invalid base")" -->
+<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 & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid base"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &what="invalid digit")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">invalid_digit</a> (const std::string &what="invalid digit")</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 & Destructor Documentation</h2>
+<a class="anchor" id="a02be633b5225e22839b547c4b0e8d4ca"></a><!-- doxytag: member="boost::xint::invalid_digit::invalid_digit" ref="a02be633b5225e22839b547c4b0e8d4ca" args="(const std::string &what="invalid digit")" -->
+<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 & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid digit"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &what="invalid modulus")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">invalid_modulus</a> (const std::string &what="invalid modulus")</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 & Destructor Documentation</h2>
+<a class="anchor" id="aab32f87b83c6d8deca7d3ce4e887e03b"></a><!-- doxytag: member="boost::xint::invalid_modulus::invalid_modulus" ref="aab32f87b83c6d8deca7d3ce4e887e03b" args="(const std::string &what="invalid modulus")" -->
+<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 & </td>
+ <td class="paramname"> <em>what</em> = <code>"invalid modulus"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &what="system does not have a strong random generator")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </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 &what="system does not have a strong random generator")</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 & 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 &what="system does not have a strong random generator")" -->
+<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 & </td>
+ <td class="paramname"> <em>what</em> = <code>"system does not have a strong random generator"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &what="attempted to use a Not-a-Number")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </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 &what="attempted to use a Not-a-Number")</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 & 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 &what="attempted to use a Not-a-Number")" -->
+<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 & </td>
+ <td class="paramname"> <em>what</em> = <code>"attempted to use a Not-a-Number"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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 &what="overflow error: can't obtain enough memory to represent the requested number")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">overflow_error</a> (const std::string &what="overflow error: can't obtain enough memory to represent the requested number")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>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 & Destructor Documentation</h2>
+<a class="anchor" id="a6f37c836a5c2083a7be660c0bf1aeb00"></a><!-- doxytag: member="boost::xint::overflow_error::overflow_error" ref="a6f37c836a5c2083a7be660c0bf1aeb00" args="(const std::string &what="overflow error: can't obtain enough memory to represent the requested number")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::overflow_error::overflow_error </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"overflow error: can't obtain enough memory to represent the requested number"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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 </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"> </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"> </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> </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> </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> </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 </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 </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> </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> </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 & 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> ) </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> ) </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> ) </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> ) </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> ) </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> ) </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<impl_t::result_type>::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<impl_t::result_type>::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
+<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 &what="value out of range for requested conversion")</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
+<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 <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">too_big</a> (const std::string &what="value out of range for requested conversion")</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>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 & Destructor Documentation</h2>
+<a class="anchor" id="a91ca4f8a23e008c2ffc13608179226f3"></a><!-- doxytag: member="boost::xint::too_big::too_big" ref="a91ca4f8a23e008c2ffc13608179226f3" args="(const std::string &what="value out of range for requested conversion")" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::too_big::too_big </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>what</em> = <code>"value out of range for requested conversion"</code></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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
+<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"> Q </div></td></tr></table>
</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
</td><td><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">no_strong_random</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">data_t::QuickDigits</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">cannot_represent</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1invalid__base.html">invalid_base</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </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>) </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a>) </td><td><a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table>
</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
-</td><td><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
-</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td></tr></table><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a>&nbs
p;| <a class="qindex" href="#letter_S">S</a> | <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>) </td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
+</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr></table><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#lett
er_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a></div>
</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
+<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
<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 "../boost/xint/xint.hpp"</code><br/>
<code>#include "../boost/xint/xint_data_t.hpp"</code><br/>
+<code>#include <functional></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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
<tr><td 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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">boost::xint::operator!</a> (const xint::integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">boost::xint::operator==</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abf694043a7a1d64f35e90a275208ff2a">boost::xint::operator!=</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0497944d7fa977eca5e5f6a140db07c3">boost::xint::operator<</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">boost::xint::operator></a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">boost::xint::operator<=</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">boost::xint::operator>=</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the the compare function and comparison operators. </p>
<p>Definition in file <a class="el" href="compare_8cpp_source.html">compare.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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 "../boost/xint/xint.hpp"</span>
<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
-<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023
-<a name="l00036"></a>00036 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> integer &b1, <span class="keyword">const</span> integer &b2, <span class="keywordtype">bool</span> ignoresign) {
-<a name="l00037"></a>00037 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 && sign2==0) <span class="keywordflow">return</span> 0;
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> -sign2;
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> sign1;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (sign1 != sign2) <span class="keywordflow">return</span> sign1;
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (sign1 < 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.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 <functional></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>core {
+<a name="l00026"></a>00026
+<a name="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 &b1, <span class="keyword">const</span> integer &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 && 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 < 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->mLength != b2data->mLength) {
+<a name="l00043"></a>00043 answer=((b1data->mLength < b2data->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->mLength) - 1; x >= 0; --x) {
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (b1data->digits[x] != b2data->digits[x]) {
+<a name="l00047"></a>00047 answer=((b1data->digits[x] < b2data->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->mLength != b2data->mLength) {
-<a name="l00055"></a>00055 answer=((b1data->mLength < b2data->mLength) ? -1 : 1);
-<a name="l00056"></a>00056 } <span class="keywordflow">else</span> {
-<a name="l00057"></a>00057 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = <span class="keywordtype">int</span>(b1data->mLength) - 1; x >= 0; --x) {
-<a name="l00058"></a>00058 <span class="keywordflow">if</span> (b1data->digits[x] != b2data->digits[x]) {
-<a name="l00059"></a>00059 answer=((b1data->digits[x] < b2data->digits[x]) ? -1 : 1);
-<a name="l00060"></a>00060 <span class="keywordflow">break</span>;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keywordflow">return</span> answer;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">operator!</a>(<span class="keyword">const</span> xint::integer &num1) { <span class="keywordflow">return</span> num1.sign()==0; }
-<a name="l00069"></a>00069 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">operator==</a>(<span class="keyword">const</span> xint::integer &num1, <span class="keyword">const</span> xint::integer &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& num1, <span class="keyword">const</span> xint::integer& 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<</a>(<span class="keyword">const</span> xint::integer& num1, <span class="keyword">const</span> xint::integer& 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="l00072"></a>00072 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">operator></a>(<span class="keyword">const</span> xint::integer& num1, <span class="keyword">const</span> xint::integer& 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="l00073"></a>00073 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">operator<=</a>(<span class="keyword">const</span> xint::integer& num1, <span class="keyword">const</span> xint::integer& 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="l00074"></a>00074 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">operator>=</a>(<span class="keyword">const</span> xint::integer& num1, <span class="keyword">const</span> xint::integer& 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="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 &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 &num1, <span class="keyword">const</span> integer &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& num1, <span class="keyword">const</span> integer& 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<</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00062"></a>00062 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)<0; }
+<a name="l00063"></a>00063 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator></a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)>0; }
+<a name="l00065"></a>00065 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator<=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)<=0; }
+<a name="l00067"></a>00067 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator>=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00068"></a>00068 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(num1, num2)>=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 &b1, <span class="keyword">const</span> integer &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&) {
+<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> <<span class="keyword">typename</span> T>
+<a name="l00097"></a>00097 <span class="keywordtype">bool</span> cmp(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2, <span class="keyword">const</span> T& t) {
+<a name="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&) {
+<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 &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&) {
+<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 &num1, <span class="keyword">const</span> integer &num2) {
+<a name="l00117"></a>00117 <span class="keywordflow">return</span> cmp(num1, num2, std::equal_to<int>()); }
+<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& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> cmp(num1, num2, std::not_equal_to<int>()); }
+<a name="l00120"></a>00120 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00121"></a>00121 <span class="keywordflow">return</span> cmp(num1, num2, std::less<int>()); }
+<a name="l00122"></a>00122 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> cmp(num1, num2, std::greater<int>()); }
+<a name="l00124"></a>00124 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00125"></a>00125 <span class="keywordflow">return</span> cmp(num1, num2, std::less_equal<int>()); }
+<a name="l00126"></a>00126 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> cmp(num1, num2, std::greater_equal<int>()); }
+<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core::from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core::to_binary</a> (const integer &n)</td></tr>
<tr><td 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
+<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
<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& 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<2 || base>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">"0"</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->digits,
-<a name="l00083"></a>00083 *lastDigit=firstDigit + ndata->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) << 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 >= 0 && ((*d >> digitShift) & 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 >= 0) {
-<a name="l00096"></a>00096 out << nToChar((*d >> digitShift) & 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() < 0 ? std::string(<span class="stringliteral">"-"</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<integer, integer> 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 << 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() < 0) out << <span class="charliteral">'-'</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& 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">'+'</span>) ++c;
-<a name="l00156"></a>00156 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">'-'</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">'0'</span>) {
-<a name="l00160"></a>00160 ++c;
-<a name="l00161"></a>00161 <span class="keywordflow">if</span> (*c==<span class="charliteral">'x'</span> || *c==<span class="charliteral">'X'</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<2 || base>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">"No valid digits"</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>=<span class="charliteral">'0'</span> && *c<=<span class="charliteral">'9'</span>) digit=*c-<span class="charliteral">'0'</span>;
-<a name="l00184"></a>00184 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'A'</span> && *c<=<span class="charliteral">'Z'</span>) digit=*c-<span class="charliteral">'A'</span>+10;
-<a name="l00185"></a>00185 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'a'</span> && *c<=<span class="charliteral">'z'</span>) digit=*c-<span class="charliteral">'a'</span>+10;
-<a name="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">"encountered non-alphanumeric character in string"</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 >= 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">"encountered digit greater than base allows"</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& 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<unsigned char>::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-><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->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<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<bytesPerDigit && s<se; ++i)
-<a name="l00225"></a>00225 d |= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(*s++) << (i * bitsPerByte));
-<a name="l00226"></a>00226 *p++=d;
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228 rdata->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& 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<unsigned char>::digits;
-<a name="l00253"></a>00253 std::vector<unsigned char> 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->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<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 >>= 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& 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<2 || base>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">"0"</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->digits,
+<a name="l00060"></a>00060 *lastDigit=firstDigit + ndata->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) << 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 >= 0 && ((*d >> digitShift) & 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 >= 0) {
+<a name="l00073"></a>00073 out << nToChar((*d >> digitShift) & 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() < 0 ? std::string(<span class="stringliteral">"-"</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<integer, integer> a=std::make_pair(n, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>());
+<a name="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 << 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() < 0) out << <span class="charliteral">'-'</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& 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">'+'</span>) ++c;
+<a name="l00105"></a>00105 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">'-'</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">'0'</span>) {
+<a name="l00109"></a>00109 ++c;
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (*c==<span class="charliteral">'x'</span> || *c==<span class="charliteral">'X'</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<2 || base>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">"No valid digits"</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>=<span class="charliteral">'0'</span> && *c<=<span class="charliteral">'9'</span>) digit=*c-<span class="charliteral">'0'</span>;
+<a name="l00126"></a>00126 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'A'</span> && *c<=<span class="charliteral">'Z'</span>) digit=*c-<span class="charliteral">'A'</span>+10;
+<a name="l00127"></a>00127 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'a'</span> && *c<=<span class="charliteral">'z'</span>) digit=*c-<span class="charliteral">'a'</span>+10;
+<a name="l00128"></a>00128 <span class="keywordflow">else</span> <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"encountered non-alphanumeric character in "</span>
+<a name="l00129"></a>00129 <span class="stringliteral">"string"</span>);
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (digit >= base) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"encountered digit greater than "</span>
+<a name="l00132"></a>00132 <span class="stringliteral">"base allows"</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& 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<unsigned char>::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->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->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<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<bytesPerDigit && s<se; ++i)
+<a name="l00154"></a>00154 d |= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(*s++) << (i * bitsPerByte));
+<a name="l00155"></a>00155 *p++=d;
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 rdata->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& 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<unsigned char>::digits;
+<a name="l00164"></a>00164 std::vector<unsigned char> 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->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<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 >>= bitsPerByte;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176 <span class="keywordflow">while</span> (!temp.empty() && temp.back()==0) temp.pop_back();
+<a name="l00177"></a>00177 <span class="keywordtype">char</span> *c=(<span class="keywordtype">char</span>*)&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& 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&) {
+<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& 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&) {
+<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& 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&) {
+<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() && temp.back()==0) temp.pop_back();
-<a name="l00266"></a>00266 <span class="keywordtype">char</span> *c=(<span class="keywordtype">char</span>*)&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& 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&) {
+<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
+<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
<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
+<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
<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </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
+<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
<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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
+<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
<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
+<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
<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'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
+<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
<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
+<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
<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
+<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
<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&=()
: <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<<()
: <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<<=()
-: <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>>()
: <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>>=()
-: <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
+<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
<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 @@
<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&=()
: <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<<()
: <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<<=()
-: <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>>()
: <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>>=()
-: <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
+<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
<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
+<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
<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core::lcm</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core::invmod</a> (const integer &n, const integer &m)</td></tr>
<tr><td 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
+<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
<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& n, <span class="keyword">const</span> integer& m): <a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>(integer::one()),
<a name="l00029"></a>00029 <a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>(integer::zero()), <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>(n)
<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 integer t1=m, t2=n-<a class="code" href="classboost_1_1xint_1_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& num1, <span class="keyword">const</span> integer& 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& num1, <span class="keyword">const</span> integer& 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 && 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() && m.even()) { ++k; n >>= 1; m >>= 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 && 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() && m.even()) { ++k; n >>= 1; m >>= 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 << 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>() << 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 << 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>() << 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& num1, <span class="keyword">const</span> integer& 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& n, <span class="keyword">const</span> integer& 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 < <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& num1, <span class="keyword">const</span> integer& 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& n, <span class="keyword">const</span> integer& 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 < <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() < 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() && 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() < 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() && 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& num1, <span class="keyword">const</span> integer& 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&) {
+<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& num1, <span class="keyword">const</span> integer& 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&) {
+<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& n, <span class="keyword">const</span> integer& 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&) {
+<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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
+<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
<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<integer> 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">"#NaN#"</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>& 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& 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>& 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<integer> 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>& 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& 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't directly related. It'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<detail::data_t*>(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& 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&) {
+<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">"Out of memory allocating xint::integer"</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> &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<boost::uintmax_t>::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&) {
+<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">"Out of memory allocating xint::integer"</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&) {
-<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">"Out of memory allocating xint::integer"</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 &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<boost::uintmax_t>::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&) {
-<a name="l00124"></a>00124 <span class="keywordflow">throw</span> xint::overflow_error(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 _attach();
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 data->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->digits[x]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
-<a name="l00131"></a>00131 n >>= <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->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->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 && data->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 && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a> > 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&) {
-<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">"Out of memory allocating xint::integer"</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>() < 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) & 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) & 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-><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 && <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>& <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>& 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>() < 0) == (addend.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() < 0)
-<a name="l00214"></a>00214 && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= addend.data-><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-><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>& <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>& 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>() >= 0 && subtrahend.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() >= 0 && *<span class="keyword">this</span> >= 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-><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>-><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>-><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 & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
+<a name="l00098"></a>00098 n >>= <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>-><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>-><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> && <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-><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> && <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a> > 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&) {
+<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">"Out of memory allocating xint::integer"</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>-><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>-><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>-><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) & 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) & 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 && <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>-><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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& addend) {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() < 0) == (addend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() < 0)
+<a name="l00153"></a>00153 && <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= addend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-><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>-><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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& subtrahend) {
+<a name="l00166"></a>00166 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() >= 0 && subtrahend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() >= 0 && *<span class="keyword">this</span> >= 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>-><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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c) {
+<a name="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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">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>& <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>& <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<<</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>></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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>) {
+<a name="l00204"></a>00204 <span class="keywordflow">if</span> (shift>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>-><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>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>) {
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (shift>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>-><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>& <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>& <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>-><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 >= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>-><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>-><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>& <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> &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>& <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>& 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>& <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>& 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>& <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>& 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>-><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<integer> 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">"#NaN#"</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>& <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>& <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<<</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>></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>& <a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="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>& <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>& 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>& <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>& 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>& <a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
-<a name="l00265"></a>00265 <span class="keywordflow">if</span> (shift>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-><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>& <a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
-<a name="l00273"></a>00273 <span class="keywordflow">if</span> (shift>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-><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>& <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>& <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-><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 >= data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <span class="keywordflow">return</span> 0;
-<a name="l00296"></a>00296 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
-<a name="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-><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>& 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>& 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't directly related. It'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<detail::data_t*>(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& 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&) {
+<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) & 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) & 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 && <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-><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&) {
+<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>& <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>& 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&) {
+<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>& <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>& 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&) {
+<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>& <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> &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&) {
+<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>& <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>& 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>& <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>& 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>& <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>& 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>& <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>& <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<<</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>></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>& <a class="code" href="classboost_1_1xint_1_1integer.html#a717edb41c50edbd4b601c38b1fc6a8b0">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="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>& <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>& 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>& <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>& 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>& <a class="code" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="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<<=(shift));
+<a name="l00451"></a>00451 } <span class="keywordflow">catch</span> (std::exception&) {
+<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>& <a class="code" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="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>>=(shift));
+<a name="l00461"></a>00461 } <span class="keywordflow">catch</span> (std::exception&) {
+<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>& <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>& <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>& <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->_detach(); <span class="comment">// Get rid of the data</span>
+<a name="l00482"></a>00482 n->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-><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 >= data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <span class="keywordflow">return</span> 0;
+<a name="l00494"></a>00494 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
+<a name="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-><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&) {
+<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 &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&) {
+<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<boost::uintmax_t>::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->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->digits[x]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
+<a name="l00537"></a>00537 n >>= <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->skipLeadingZeros();
+<a name="l00540"></a>00540 } <span class="keywordflow">catch</span> (std::exception&) {
+<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->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 && data->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 && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a> > 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&) {
+<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-><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-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=negative;
+<a name="l00576"></a>00576 data-><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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core::log2</a> (const integer &n)</td></tr>
<tr><td 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
+<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
<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& 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 & d)!=0) <span class="keywordflow">break</span>;
-<a name="l00070"></a>00070 mask>>=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& 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 & d)!=0) <span class="keywordflow">break</span>;
+<a name="l00056"></a>00056 mask>>=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& 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&) {
+<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
<tr><td 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
+<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
<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& n, <span class="keyword">const</span> integer& 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() < 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& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& m) {
-<a name="l00053"></a>00053 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(n * by, m);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00068"></a>00068 integer <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<a class="code" href="namespaceboost_1_1xint.html#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& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m, <span class="keywordtype">bool</span>
-<a name="l00094"></a>00094 noMontgomery)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (m < <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>()) {
-<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() < 0 && 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'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() && !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 >>= 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 < 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& n, <span class="keyword">const</span> integer& 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() < 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& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& 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& n, <span class="keyword">const</span> integer& 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& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& 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 < <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() < 0 && 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'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() && !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 >>= 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 < 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-- > 0) {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (ee & 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 >>= 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& n, <span class="keyword">const</span> integer& 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&) {
+<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& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& 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&) {
+<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-- > 0) {
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (ee & 0x01) answer=<a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(answer, p, m);
-<a name="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 >>= 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& n, <span class="keyword">const</span> integer& 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&) {
+<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& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& 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&) {
+<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
+<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
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint::inverse0</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint::montgomeryR</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core::inverse0</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core::montgomeryR</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
</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
+<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
<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& 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 <= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>; ++i, x <<= 1)
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (x < ((n0 * y) & ((x << 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&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& 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>() << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * n._get_data()->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& n, <span class="keyword">const</span> integer& 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&#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& n, <span class="keyword">const</span> integer& 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&#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">"modulus has no inverse"</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& m, const integer& mPrime, const</span>
-<a name="l00067"></a>00067 <span class="comment">// integer& 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->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'=-m^(-1) mod b (precalculated)</span>
-<a name="l00074"></a>00074 <span class="comment">// // T is any arbitrary number greater than zero and <= 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& n) {
+<a name="l00036"></a>00036 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00037"></a>00037 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> x = 2, y = 1;
+<a name="l00038"></a>00038 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> n0 = n._get_digit(0);
+<a name="l00039"></a>00039 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 2; i <= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>; ++i, x <<= 1)
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (x < ((n0 * y) & ((x << 1) - 1)))
+<a name="l00041"></a>00041 y += x;
+<a name="l00042"></a>00042 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(x - y);
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044
+<a name="l00048"></a>00048 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * n._get_data()->mLength);
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00053"></a>00053 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> (n * <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(m) % m);
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00058"></a>00058 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00059"></a>00059 integer inv=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">invmod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(m), m);
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> (n * inv % m);
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="comment">//integer montgomeryReduction(const integer& m, const integer& mPrime, const</span>
+<a name="l00064"></a>00064 <span class="comment">// integer& T)</span>
+<a name="l00065"></a>00065 <span class="comment">//{</span>
+<a name="l00066"></a>00066 <span class="comment">// // Unstated parameter b is digit_overflowbit, a power of 2</span>
+<a name="l00067"></a>00067 <span class="comment">// // Unstated parameter n is m.data->mLength</span>
+<a name="l00068"></a>00068 <span class="comment">// // Unstated parameter R is b^n</span>
+<a name="l00069"></a>00069 <span class="comment">// // gcd(m, b)==1, or in other words, m must be an odd number</span>
+<a name="l00070"></a>00070 <span class="comment">// // m'=-m^(-1) mod b (precalculated)</span>
+<a name="l00071"></a>00071 <span class="comment">// // T is any arbitrary number greater than zero and <= m*R</span>
+<a name="l00072"></a>00072 <span class="comment">//</span>
+<a name="l00073"></a>00073 <span class="comment">// int n=m._get_data()->mLength;</span>
+<a name="l00074"></a>00074 <span class="comment">// doubledigit_t mprime = mPrime._get_data()->digits[0];</span>
<a name="l00075"></a>00075 <span class="comment">//</span>
-<a name="l00076"></a>00076 <span class="comment">// int n=m._get_data()->mLength;</span>
-<a name="l00077"></a>00077 <span class="comment">// doubledigit_t mprime = mPrime._get_data()->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 < n; ++i) {</span>
-<a name="l00081"></a>00081 <span class="comment">// integer ui((A._get_data()->digits[i] * mprime) & digit_mask);</span>
-<a name="l00082"></a>00082 <span class="comment">// ui <<= (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 >>= (bits_per_digit * n); // Fast-divide by b^n</span>
-<a name="l00086"></a>00086 <span class="comment">// if (A >= 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& a, <span class="keyword">const</span> integer& b, <span class="keyword">const</span> integer&
-<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 < n; ++i) {</span>
+<a name="l00078"></a>00078 <span class="comment">// integer ui((A._get_data()->digits[i] * mprime) & digit_mask);</span>
+<a name="l00079"></a>00079 <span class="comment">// ui <<= (bits_per_digit * i); // Fast-multiply by b^i</span>
+<a name="l00080"></a>00080 <span class="comment">// A+=(ui*m);</span>
+<a name="l00081"></a>00081 <span class="comment">// }</span>
+<a name="l00082"></a>00082 <span class="comment">// A >>= (bits_per_digit * n); // Fast-divide by b^n</span>
+<a name="l00083"></a>00083 <span class="comment">// if (A >= m) A -= m;</span>
+<a name="l00084"></a>00084 <span class="comment">// return A;</span>
+<a name="l00085"></a>00085 <span class="comment">//}</span>
+<a name="l00086"></a>00086
+<a name="l00090"></a>00090 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer& b, <span class="keyword">const</span> integer&
+<a name="l00091"></a>00091 n, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0)
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="comment">// Using the Dussé and Kalisk simplification</span>
+<a name="l00094"></a>00094 <span class="comment">// Unstated parameter B is a power of two representing the number of values</span>
+<a name="l00095"></a>00095 <span class="comment">// that a single digit can hold, i.e. digit_overflowbit</span>
+<a name="l00096"></a>00096 <span class="comment">// Unstated parameter L is the number of digits in the modulus, i.e.</span>
+<a name="l00097"></a>00097 <span class="comment">// n._get_length()</span>
+<a name="l00098"></a>00098 <span class="comment">// Unstated parameter r is B^L</span>
+<a name="l00099"></a>00099 <span class="comment">// nPrime0 is nPrime mod B, or digit zero of nPrime</span>
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">const</span> integer B(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>);
+<a name="l00102"></a>00102 <span class="keyword">const</span> <span class="keywordtype">size_t</span> L(n._get_length()), L1(L-1);
<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <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) << (<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 <= L1);
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 t >>= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * L); <span class="comment">// Fast divide by r</span>
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> (t >= 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<cMaxK>::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<kbitdigit_t> vkbitdigit_t;
-<a name="l00129"></a>00129 <span class="keyword">typedef</span> std::vector<integer> 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) << 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 <= bits_per_digit+1,</span>
-<a name="l00133"></a>00133 <span class="comment">// it won't work properly if it isn't.</span>
-<a name="l00134"></a>00134 BOOST_STATIC_ASSERT(cMaxK <= <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<int, int> value_t;
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keyword">const</span> value_t& operator[](<span class="keywordtype">size_t</span> x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[x]; }
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="keyword">static</span> <span class="keyword">const</span> TUTable& <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=&<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<int, int> 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 & 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
-<a name="l00160"></a>00160 ++r;
-<a name="l00161"></a>00161 x >>= 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<TUTable> 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) << (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * i);
+<a name="l00110"></a>00110 } <span class="keywordflow">while</span> (++i <= L1);
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 t >>= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * L); <span class="comment">// Fast divide by r</span>
+<a name="l00113"></a>00113 <span class="keywordflow">return</span> (t >= n ? t - n : t);
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keyword">namespace </span>{
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="comment">// cMaxK sets the balance between memory/precalculations required and the number</span>
+<a name="l00119"></a>00119 <span class="comment">// of calculations required for an exponentiation. Increasing it can only reduce</span>
+<a name="l00120"></a>00120 <span class="comment">// the calculations by a small amount, whereas it increases the memory</span>
+<a name="l00121"></a>00121 <span class="comment">// requirements and number of precalculations by an exponential amount. 8</span>
+<a name="l00122"></a>00122 <span class="comment">// provides a good balance.</span>
+<a name="l00123"></a>00123 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cMaxK=8;
+<a name="l00124"></a>00124 <span class="keyword">typedef</span> boost::uint_t<cMaxK>::fast kbitdigit_t; <span class="comment">// k bits have to fit into it</span>
+<a name="l00125"></a>00125 <span class="keyword">typedef</span> std::vector<kbitdigit_t> vkbitdigit_t;
+<a name="l00126"></a>00126 <span class="keyword">typedef</span> std::vector<integer> vxint_t;
+<a name="l00127"></a><a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">00127</a> <span class="preprocessor">#define ddPowerOfTwo(p) (doubledigit_t(1) << p)</span>
+<a name="l00128"></a>00128 <span class="preprocessor"></span>
+<a name="l00129"></a>00129 <span class="comment">// The splitIntoKBitDigits function assumes that cMaxK <= bits_per_digit+1,</span>
+<a name="l00130"></a>00130 <span class="comment">// it won't work properly if it isn't.</span>
+<a name="l00131"></a>00131 BOOST_STATIC_ASSERT(cMaxK <= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>+1);
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">class </span>TUTable {
+<a name="l00134"></a>00134 <span class="keyword">public</span>:
+<a name="l00135"></a>00135 <span class="keyword">typedef</span> std::pair<int, int> value_t;
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 <span class="keyword">const</span> value_t& operator[](<span class="keywordtype">size_t</span> x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[x]; }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">const</span> TUTable& <span class="keyword">get</span>() {
+<a name="l00140"></a>00140 <span class="comment">// Construct a singleton instance on demand</span>
+<a name="l00141"></a>00141 <span class="keywordflow">if</span> (mPtr.get()==0) mPtr.reset(<span class="keyword">new</span> TUTable);
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> *mPtr;
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keyword">private</span>:
+<a name="l00146"></a>00146 TUTable(): <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>(new value_t[<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK)]) {
+<a name="l00147"></a>00147 value_t *p=&<a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>[0], *pe=p+<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(cMaxK);
+<a name="l00148"></a>00148 *p++=std::make_pair(0, 0);
+<a name="l00149"></a>00149 <span class="keywordtype">int</span> i=1;
+<a name="l00150"></a>00150 <span class="keywordflow">while</span> (p!=pe) *p++=calculateValues(i++);
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 std::pair<int, int> calculateValues(<span class="keywordtype">int</span> x) {
+<a name="l00154"></a>00154 <span class="keywordtype">int</span> r=0;
+<a name="l00155"></a>00155 <span class="keywordflow">while</span> (1) {
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (x & 0x01) <span class="keywordflow">return</span> std::make_pair(r, x);
+<a name="l00157"></a>00157 ++r;
+<a name="l00158"></a>00158 x >>= 1;
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="keyword">static</span> std::auto_ptr<TUTable> mPtr;
+<a name="l00163"></a>00163
+<a name="l00164"></a><a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">00164</a> boost::scoped_array<value_t> <a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">mTable</a>;
+<a name="l00165"></a>00165 };
<a name="l00166"></a>00166
-<a name="l00167"></a><a class="code" href="monty_8cpp.html#a934de4c9ba95abb023be91f96559097d">00167</a> boost::scoped_array<value_t> <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<TUTable> TUTable::mPtr;
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> integer& 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 > 1 && ((k - 1) * (k << ((k - 1) << 1))
-<a name="l00175"></a>00175 / (<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k) - k - 1)) >= 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& a, <span class="keyword">const</span> integer&
-<a name="l00181"></a>00181 r, <span class="keyword">const</span> integer& 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<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<TUTable> TUTable::mPtr;
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <span class="keywordtype">int</span> mostEfficientK(<span class="keyword">const</span> integer& e) {
+<a name="l00170"></a>00170 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> k=cMaxK, kTarget=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(e)-1;
+<a name="l00171"></a>00171 <span class="keywordflow">while</span> (k > 1 && ((k - 1) * (k << ((k - 1) << 1))
+<a name="l00172"></a>00172 / (<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k) - k - 1)) >= kTarget)
+<a name="l00173"></a>00173 --k;
+<a name="l00174"></a>00174 <span class="keywordflow">return</span> int(k);
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 vxint_t precalculateOddPowersOfAa(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer&
+<a name="l00178"></a>00178 r, <span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> k)
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 integer aa=a*r%n, aSquared=a*a%n;
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 vxint_t rval;
+<a name="l00183"></a>00183 rval.reserve(<span class="keywordtype">size_t</span>(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)));
+<a name="l00184"></a>00184 rval.push_back(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()); <span class="comment">// Anything to the zeroth power is one</span>
+<a name="l00185"></a>00185 rval.push_back(aa); <span class="comment">// Anything to the first power is itself</span>
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> i=3, ie=(<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k)); i<ie; i+=2) {
+<a name="l00188"></a>00188 aa=aa*aSquared%n;
+<a name="l00189"></a>00189 rval.push_back(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>()); <span class="comment">// Even powers not needed or calculated</span>
+<a name="l00190"></a>00190 rval.push_back(aa); <span class="comment">// Odd power</span>
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="keywordflow">return</span> rval;
+<a name="l00194"></a>00194 }
<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <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& 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& 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)<<k)-1;
-<a name="l00206"></a>00206 <span class="keywordflow">while</span> (eDigits-- > 0) {
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> (bitsInHopper < k && i < 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++)) << 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 > 0) {
-<a name="l00215"></a>00215 rval.push_back(kbitdigit_t(hopper & mask));
-<a name="l00216"></a>00216 hopper >>= 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">doubledigit_t</a>(1)<<k)-1;
+<a name="l00203"></a>00203 <span class="keywordflow">while</span> (eDigits-- > 0) {
+<a name="l00204"></a>00204 <span class="keywordflow">if</span> (bitsInHopper < k && i < e._get_length()) {
+<a name="l00205"></a>00205 <span class="comment">// Add more bits to the hopper</span>
+<a name="l00206"></a>00206 hopper = hopper | (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(e._get_digit(i++)) << bitsInHopper);
+<a name="l00207"></a>00207 bitsInHopper += <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 <span class="comment">// Grab k bits off the bottom</span>
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (bitsInHopper > 0) {
+<a name="l00212"></a>00212 rval.push_back(kbitdigit_t(hopper & mask));
+<a name="l00213"></a>00213 hopper >>= k;
+<a name="l00214"></a>00214 bitsInHopper-=k;
+<a name="l00215"></a>00215 } <span class="keywordflow">else</span> {
+<a name="l00216"></a>00216 rval.push_back(0);
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 }
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keywordflow">return</span> rval;
+<a name="l00221"></a>00221 }
<a name="l00222"></a>00222
-<a name="l00223"></a>00223 <span class="keywordflow">return</span> rval;
-<a name="l00224"></a>00224 }
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 } <span class="comment">// namespace</span>
-<a name="l00227"></a>00227
-<a name="l00231"></a>00231 integer <a class="code" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& n)
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 <span class="comment">// 0 <= a < n, n is odd</span>
-<a name="l00234"></a>00234 <span class="comment">// Returns a^e mod n</span>
-<a name="l00235"></a>00235
-<a name="l00236"></a>00236 <span class="keyword">const</span> TUTable &tuTable(TUTable::get());
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <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="l00239"></a>00239 <span class="keywordflow">if</span> (n.even()) {
-<a name="l00240"></a>00240 <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">"montgomeryPowerMod "</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"requires an odd modulus"</span>);
-<a name="l00242"></a>00242 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00243"></a>00243 }
+<a name="l00223"></a>00223 } <span class="comment">// namespace</span>
+<a name="l00224"></a>00224
+<a name="l00228"></a>00228 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& a, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& n)
+<a name="l00229"></a>00229 {
+<a name="l00230"></a>00230 <span class="comment">// 0 <= a < n, n is odd</span>
+<a name="l00231"></a>00231 <span class="comment">// Returns a^e mod n</span>
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 <span class="keyword">const</span> TUTable &tuTable(TUTable::get());
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
+<a name="l00236"></a>00236 <span class="keywordflow">if</span> (n.even()) <span class="keywordflow">throw</span> invalid_modulus(<span class="stringliteral">"montgomeryPowerMod requires an odd "</span>
+<a name="l00237"></a>00237 <span class="stringliteral">"modulus"</span>);
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="comment">// Precalculate some values</span>
+<a name="l00240"></a>00240 <span class="keyword">const</span> <span class="keywordtype">size_t</span> k(mostEfficientK(e));
+<a name="l00241"></a>00241 <span class="keyword">const</span> integer r(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(n));
+<a name="l00242"></a>00242 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(n));
+<a name="l00243"></a>00243 <span class="keyword">const</span> vxint_t oddPowersOfAa(precalculateOddPowersOfAa(a, r, n, k));
<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="comment">// Precalculate some values</span>
-<a name="l00246"></a>00246 <span class="keyword">const</span> <span class="keywordtype">size_t</span> k(mostEfficientK(e));
-<a name="l00247"></a>00247 <span class="keyword">const</span> integer r(<a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(n));
-<a name="l00248"></a>00248 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> nPrime0(<a class="code" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(n));
-<a name="l00249"></a>00249 <span class="keyword">const</span> vxint_t oddPowersOfAa(precalculateOddPowersOfAa(a, r, n, k));
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 <span class="comment">// Slice the exponent (e) up into k-bit digits</span>
-<a name="l00252"></a>00252 vkbitdigit_t eDigits(splitIntoKBitDigits(e, k));
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 integer pp;
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 kbitdigit_t i=eDigits.back();
-<a name="l00257"></a>00257 eDigits.pop_back();
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (i == 0) {
-<a name="l00259"></a>00259 pp=r%n;
-<a name="l00260"></a>00260 } <span class="keywordflow">else</span> {
-<a name="l00261"></a>00261 std::pair<int, int> tu=tuTable[i];
-<a name="l00262"></a>00262 pp=oddPowersOfAa[tu.second];
-<a name="l00263"></a>00263 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266 <span class="keywordflow">while</span> (!eDigits.empty()) {
-<a name="l00267"></a>00267 i=eDigits.back();
-<a name="l00268"></a>00268 eDigits.pop_back();
+<a name="l00245"></a>00245 <span class="comment">// Slice the exponent (e) up into k-bit digits</span>
+<a name="l00246"></a>00246 vkbitdigit_t eDigits(splitIntoKBitDigits(e, k));
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 integer pp;
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 kbitdigit_t i=eDigits.back();
+<a name="l00251"></a>00251 eDigits.pop_back();
+<a name="l00252"></a>00252 <span class="keywordflow">if</span> (i == 0) {
+<a name="l00253"></a>00253 pp=r%n;
+<a name="l00254"></a>00254 } <span class="keywordflow">else</span> {
+<a name="l00255"></a>00255 std::pair<int, int> tu=tuTable[i];
+<a name="l00256"></a>00256 pp=oddPowersOfAa[tu.second];
+<a name="l00257"></a>00257 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00258"></a>00258 }
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260 <span class="keywordflow">while</span> (!eDigits.empty()) {
+<a name="l00261"></a>00261 i=eDigits.back();
+<a name="l00262"></a>00262 eDigits.pop_back();
+<a name="l00263"></a>00263
+<a name="l00264"></a>00264 <span class="keywordflow">if</span> (i == 0) {
+<a name="l00265"></a>00265 <span class="keywordtype">int</span> t=int(k);
+<a name="l00266"></a>00266 <span class="keywordflow">while</span> (t-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00267"></a>00267 } <span class="keywordflow">else</span> {
+<a name="l00268"></a>00268 std::pair<int, int> tu=tuTable[i];
<a name="l00269"></a>00269
-<a name="l00270"></a>00270 <span class="keywordflow">if</span> (i == 0) {
-<a name="l00271"></a>00271 <span class="keywordtype">int</span> t=int(k);
-<a name="l00272"></a>00272 <span class="keywordflow">while</span> (t-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
-<a name="l00273"></a>00273 } <span class="keywordflow">else</span> {
-<a name="l00274"></a>00274 std::pair<int, int> tu=tuTable[i];
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276 <span class="keywordtype">size_t</span> s=k-tu.first;
-<a name="l00277"></a>00277 <span class="keywordflow">while</span> (s-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00270"></a>00270 <span class="keywordtype">size_t</span> s=k-tu.first;
+<a name="l00271"></a>00271 <span class="keywordflow">while</span> (s-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, oddPowersOfAa[tu.second], n, nPrime0);
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
+<a name="l00276"></a>00276 }
+<a name="l00277"></a>00277 }
<a name="l00278"></a>00278
-<a name="l00279"></a>00279 pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, oddPowersOfAa[tu.second], n, nPrime0);
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281 <span class="keywordflow">while</span> (tu.first-- > 0) pp=<a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, pp, n, nPrime0);
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>(), n, nPrime0);
-<a name="l00286"></a>00286 }
-<a name="l00287"></a>00287
-<a name="l00288"></a>00288 } <span class="comment">// namespace xint</span>
-<a name="l00289"></a>00289 } <span class="comment">// namespace boost</span>
+<a name="l00279"></a>00279 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(pp, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>(), n, nPrime0);
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 } <span class="comment">// namespace core</span>
+<a name="l00283"></a>00283 } <span class="comment">// namespace xint</span>
+<a name="l00284"></a>00284 } <span class="comment">// namespace boost</span>
</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
+<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
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
Copied: sandbox/xint/doc/namespaceboost.html (from r61110, /sandbox/xint/doc/namespaces.html)
==============================================================================
--- /sandbox/xint/doc/namespaces.html (original)
+++ sandbox/xint/doc/namespaceboost.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Namespace Index</title>
+<title>The Extended Integer (XInt) Library: boost Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -20,19 +20,22 @@
</div>
<div class="tabs">
<ul>
- <li class="current">Namespace List</li>
+ <li>Namespace List</li>
<li>Namespace Members</li>
</ul>
</div>
</div>
<div class="contents">
-<h1>Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="namespaceboost.html">boost</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td><td class="indexvalue">All of the functions in the XInt library are within this namespace </td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td><td class="indexvalue">The items within this namespace are meant for internal use only </td></tr>
+<h1>boost Namespace Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<br/></td></tr>
+</p>
</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
+<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
<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/namespaceboost_1_1xint.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/namespaceboost_1_1xint.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,2620 @@
+<!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 Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li class="current">Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Namespace List</li>
+ <li>Namespace Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint Namespace Reference</h1>
+<p>All of the commonly-used functions are within this namespace.
+More...</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </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 class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">detail</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The extended integer class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__base.html">invalid_base</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">invalid_modulus</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">divide_by_zero</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">cannot_represent</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">no_strong_random</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1overflow__error.html">overflow_error</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class. More...<br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef std::auto_ptr<br class="typebreak"/>
+< <a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">detail::token</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">token</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Used for the exception-blocker. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef boost::function< bool()> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">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>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an <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">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">setbit</a> (<a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to zero. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with a value of one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">bitwise_and</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">bitwise_or</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">bitwise_xor</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">shift</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, int byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>, in either direction. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">shift_left</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> by a specified number of bits. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">shift_right</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> by a specified number of bits. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">compare</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &b2, bool ignoresign)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> objects. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">opt_secure_mode</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379">opt_thread_safe</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">log2</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f6171689ef68ff6672e43a1e24ea494">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac16aa971521ae015a62ec015f1fe56d0">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">operator&</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified <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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an <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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an <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">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>, lowest byte first. <br/></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">to</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a> to a built-in integer type. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Exception-blocking and -allowing functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6b736a9df3b9afabec548528235f28b6"></a> See the <a class="el" href="exceptions.html">exception-blocking page</a> for details on these functions and how to use them. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">exceptions_allowed</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Query whether exceptions are currently allowed or blocked. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">block_exceptions</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporarily prevent the library from throwing blockable exceptions. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">allow_exceptions</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Temprarily counteract an <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a> token to allow all exceptions. <br/></td></tr>
+<tr><td 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>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">mod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &by, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an <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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &m, bool noMontgomery)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+<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> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">pow2</a> (size_t e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">sqr</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">pow</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">factorial</a> (size_t n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> for primality. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">random_prime</a> (size_t size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+<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> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">abs</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an <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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">negate</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an <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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">add</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">subtract</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">multiply</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &by)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">divide</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &dividend, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &divisor)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">divide_r</a> (const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &d1, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &d2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+<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> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with specific attributes. <br/></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">set_random_generator</a> (T *gen)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">operator<<</a> (std::basic_ostream< charT, traits > &out, const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">operator>></a> (std::basic_istream< charT, traits > &in, <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Self-Testing Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpe91fba8935c0c10717694cc0393febf3"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9d062367dfe2a79e4471c97d1ee101b2">testBitManipulations</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8b1647a9b23f45407df6d402852d06ae">testAddSubtract</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a87d760db18932efaafb906c0ebbdb50f">testMultiply</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aabf845d8d592d3576d7223fc29362b3a">testDivideMod</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca8ead732f9dac3f23f53095eacd762e">testConvert</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ace6d9f008e78329286fc9003896667cd">testStreams</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6073c3037b644655bc752120b144e804">testMontyMultiply</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a099082cd8bbd0e994870ad89859e18c1">testMontyPowerMod</a> ()</td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a> = (std::numeric_limits<size_t>::max)()</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>All of the commonly-used functions are within this namespace. </p>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a48deb76c9c428a4b3a50177b1b0cb547"></a><!-- doxytag: member="boost::xint::callback_t" ref="a48deb76c9c428a4b3a50177b1b0cb547" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef boost::function<bool ()> <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint::callback_t</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>A callback function takes no parameters and returns a bool. </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">xint::is_prime</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">xint::random_prime</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00114">114</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8554e5ef0fa7ba2da83c8f01a9bb1128"></a><!-- doxytag: member="boost::xint::token" ref="a8554e5ef0fa7ba2da83c8f01a9bb1128" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef std::auto_ptr<<a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">detail::token</a>> <a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">boost::xint::token</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Used for the exception-blocker. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00109">109</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a19a0491b2825f010e9dd66ca50ab5672"></a><!-- doxytag: member="boost::xint::abs" ref="a19a0491b2825f010e9dd66ca50ab5672" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::abs </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the absolute value of an <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> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>If <code>n</code> is zero or positive, returns <code>n</code>. Otherwise returns <code>-n</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a5f82fa6b23e9af01292440248b89210d"></a><!-- doxytag: member="boost::xint::add" ref="a5f82fa6b23e9af01292440248b89210d" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::add </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the sum of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to add.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The sum of the parameters. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a6353146e15d8912324f5fa820674a75f"></a><!-- doxytag: member="boost::xint::allow_exceptions" ref="a6353146e15d8912324f5fa820674a75f" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> boost::xint::allow_exceptions </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Temprarily counteract an <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a> token to allow all exceptions. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. Until this token is destroyed, blockable exceptions can be thrown, unless explicitly re-blocked.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>Exceptions are allowed by default.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>When the library is compiled for <a class="el" href="threadsafe.html">thread-safe operation</a>, exceptions are blocked or allowed on a per-thread basis. Otherwise they are blocked or allowed globally.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="exceptions.html">Exceptions and Exception-Blocking</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab828c0be1559b60537b959ef75092fb2"></a><!-- doxytag: member="boost::xint::bitwise_and" ref="ab828c0be1559b60537b959ef75092fb2" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_and </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Combine two integers using a bitwise <code>AND</code> operation. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with all bits that are set in both parameters turned on. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab38ce0764a4b6433e11e30efa2175fec"></a><!-- doxytag: member="boost::xint::bitwise_or" ref="ab38ce0764a4b6433e11e30efa2175fec" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_or </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Combine two integers using a bitwise <code>OR</code> operation. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with all bits that are set in either parameter turned on. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a6afd5af4550b698f6a7065f457fcb0a1"></a><!-- doxytag: member="boost::xint::bitwise_xor" ref="a6afd5af4550b698f6a7065f457fcb0a1" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_xor </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Combine two integers using a bitwise <code>XOR</code> operation. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with all bits that are set in either parameter, but not both, turned on. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a23aac788de86c99b403a691954e016ad"></a><!-- doxytag: member="boost::xint::block_exceptions" ref="a23aac788de86c99b403a691954e016ad" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> boost::xint::block_exceptions </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Temporarily prevent the library from throwing blockable exceptions. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. Until this token is destroyed, blockable exceptions are blocked, unless explicitly re-enabled.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>When the library is compiled for <a class="el" href="threadsafe.html">thread-safe operation</a>, exceptions are blocked or allowed on a per-thread basis. Otherwise they are blocked or allowed globally.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="exceptions.html">Exceptions and Exception-Blocking</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a96d452df71ac6799a7041647b4b106df"></a><!-- doxytag: member="boost::xint::clearbit" ref="a96d452df71ac6799a7041647b4b106df" args="(integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::clearbit </td>
+ <td>(</td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets a specific bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to zero. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a23f712f01d6589687d2984b1c5efea8b"></a><!-- doxytag: member="boost::xint::compare" ref="a23f712f01d6589687d2984b1c5efea8b" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::compare </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>ignoresign</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Compare two <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> objects. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b1,b2</em> </td><td>The integers to compare. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>ignoresign</em> </td><td>If <code>true</code>, the absolute values of b1 and b2 are compared, instead of their signed values. Used internally.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A negative number if <code>b1</code> < <code>b2</code>; zero if <code>b1</code> == <code>b2</code>, or a positive number if <code>b1</code> > <code>b2</code>.</dd></dl>
+<p>This is the function behind all of the comparison operators. It might sometimes be useful directly as well.</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns 0 instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a4892543bb8ccfa8acb188a63a3d4723b"></a><!-- doxytag: member="boost::xint::divide" ref="a4892543bb8ccfa8acb188a63a3d4723b" args="(const integer &dividend, const integer &divisor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::divide </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>dividend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>divisor</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>dividend,divisor</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> value of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>divisor</code> is zero. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0fff3b235a18c0b3243a1ccc01a68f23"></a><!-- doxytag: member="boost::xint::divide_r" ref="a0fff3b235a18c0b3243a1ccc01a68f23" args="(const integer &d1, const integer &d2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::pair< <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> > boost::xint::divide_r </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d1</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d2</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <code>std::pair</code> containing the quotient and remainder of <code>d1</code> divided by <code>d2</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>d2</code> is zero.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns an std::pair with two Not-a-Number values instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a389e96a85ba1c76ef5bfcf836b7e4e8a"></a><!-- doxytag: member="boost::xint::exceptions_allowed" ref="a389e96a85ba1c76ef5bfcf836b7e4e8a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::exceptions_allowed </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Query whether exceptions are currently allowed or blocked. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if exceptions are currently allowed (the default state), <code>false</code> if they're blocked.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>When the library is compiled for <a class="el" href="threadsafe.html">thread-safe operation</a>, exceptions are blocked or allowed on a per-thread basis. Otherwise they are blocked or allowed globally. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a942e346f6e6d069dc19c28e7e56634ab"></a><!-- doxytag: member="boost::xint::factorial" ref="a942e346f6e6d069dc19c28e7e56634ab" args="(size_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::factorial </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of <code>n!</code> </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> factorial, defined as <code>1*2*3*...*n</code></dd></dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>Factorials get ridiculously huge, even with fairly small values of <code>n</code>. This function, when used with a large parameter, is the easiest way to exhaust the system's memory. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a58aa7dc532f0d8a1557c9ec8f512602e"></a><!-- doxytag: member="boost::xint::from_binary" ref="a58aa7dc532f0d8a1557c9ec8f512602e" args="(const std::string &str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::from_binary </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a binary representation of a number into an <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> </td><td valign="top"><em>str</em> </td><td>An <code>std::string</code> containing the bytes to convert, lowest byte first.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> representing the bytes.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">xint::to_binary</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af263105e57d48eff5fe14d4d03ca10e1"></a><!-- doxytag: member="boost::xint::from_string" ref="af263105e57d48eff5fe14d4d03ca10e1" args="(const std::string &str, size_t base)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::from_string </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a string into an <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> </td><td valign="top"><em>str</em> </td><td>The string to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>the base that the string representation of the number is in. This can be any number between 2 and 36 (inclusive). It can also be the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>, in which case the function will follow the standard C/C++ rules for interpreting a numeric constant: any number with a zero as the first digit is assumed to be base-8; any number with a leading zero-x or zero-X (such as 0x1f) is base-16, and anything else is base-10.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with the numeric value of the string in base <code>base</code>. If the string is <code>#NaN#</code>, then it will return <a class="el" href="nan.html">Not-a-Number</a>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a></em> </td><td>if there is not enough free memory to create the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when reading an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> from a stream, or when contructing one from a string.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8" title="Create an integer from a string representation.">integer::integer(const std::string& str, size_t base)</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab551ac5968fdbcc639318b6f294da2cd"></a><!-- doxytag: member="boost::xint::gcd" ref="ab551ac5968fdbcc639318b6f294da2cd" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::gcd </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the Greatest Common Denominator of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The greatest common denominator of the two integers, which will always be a positive number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac00836bdc530b3eaf0a9b9f2e208273b"></a><!-- doxytag: member="boost::xint::getbit" ref="ac00836bdc530b3eaf0a9b9f2e208273b" args="(const integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::getbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Queries the value of a particular bit in an <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> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit you're asking about.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the specified bit is set (has a value of one), <code>false</code> if it is clear.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aec002c076eff13d0382c5d2cd6de1d60"></a><!-- doxytag: member="boost::xint::highestbit" ref="aec002c076eff13d0382c5d2cd6de1d60" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::highestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Obtains the index of the highest bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with a value of one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the highest one-bit in the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>, or <code>valueIfZero</code> if the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> contains no set bits.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a1e2477157ea768d8c57fac1c31a8f7ca"></a><!-- doxytag: member="boost::xint::invmod" ref="a1e2477157ea768d8c57fac1c31a8f7ca" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::invmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the modular inverse of a number in a modulus, if there is one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to retrieve the inverse of. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus to use.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The modular inverse of <code>n</code> in <code>m</code>. If <code>n</code> has no modular inverse in <code>m</code>, returns zero.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, it returns zero instead of throwing an exception. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a58aa3df545d1da848922c13de2a87fc9"></a><!-- doxytag: member="boost::xint::is_prime" ref="a58aa3df545d1da848922c13de2a87fc9" args="(const integer &n, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::is_prime </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tests an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> for primality. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to test. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>1 if <code>n</code> seems to be prime, 0 if it isn't, or -1 if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>n</code> is less than 2.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns -1 instead of throwing.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the Rabin-Miller probabilistic primality test. There is an infinitesimally small chance that it will think that a composite number is actually prime, but that is so small that it can be ignored for most practical purposes. If even that chance is too much, you can run this function over the number several times, it will use different random "witness" numbers each time.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0096ae57d50e4fe8b5413ea7a4e60495"></a><!-- doxytag: member="boost::xint::lcm" ref="a0096ae57d50e4fe8b5413ea7a4e60495" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::lcm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the Least Common Multiple of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The least common multiple of the two integers. If either <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> is zero, then the return value will be zero, by convention; in all other cases, the return value will be a positive number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0cd277cd7a80cda764f889781f0140cd"></a><!-- doxytag: member="boost::xint::log2" ref="a0cd277cd7a80cda764f889781f0140cd" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::log2 </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the log<sub>2</sub> value of an <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> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer log<sub>2</sub> value of the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns 0 instead of throwing.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e.">xint::pow2</a>(xint::log2(n)-1) will give you an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with the highest set bit of <code>n</code>, assuming that <code>n</code> is non-zero.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>Similar to the <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">xint::highestbit</a> function. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a783e728f8221cd424d6f7f5d5f67ec40"></a><!-- doxytag: member="boost::xint::lowestbit" ref="a783e728f8221cd424d6f7f5d5f67ec40" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::lowestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Obtains the index of the lowest bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with a value of one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the lowest one-bit in the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>, or <code>valueIfZero</code> if the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> contains no set bits.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a9b8c31b64eb9700beea8b95edec31a73"></a><!-- doxytag: member="boost::xint::mod" ref="a9b8c31b64eb9700beea8b95edec31a73" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::mod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the remainder after dividing a number by another. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> % <code>m</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac9af74aa79d9cc7f51c57cc7707824ba"></a><!-- doxytag: member="boost::xint::mulmod" ref="ac9af74aa79d9cc7f51c57cc7707824ba" args="(const integer &n, const integer &by, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::mulmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the modular product of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to multiply. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> * <code>by</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a9e0d6ad947fa3e979ed6e26d7e81ab7f"></a><!-- doxytag: member="boost::xint::multiply" ref="a9e0d6ad947fa3e979ed6e26d7e81ab7f" args="(const integer &n, const integer &by)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::multiply </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the product of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The product of the parameters.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Automatically uses the more-efficient squaring algorithm if it can trivially detect that the two parameters are copies of the same number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a84190f7b286de191e8026e440f104731"></a><!-- doxytag: member="boost::xint::negate" ref="a84190f7b286de191e8026e440f104731" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::negate </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Return the additive inverse of an <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> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>-n</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a223232e2fe1af65bbba7b67a10f14f48"></a><!-- doxytag: member="boost::xint::operator!" ref="a223232e2fe1af65bbba7b67a10f14f48" args="(const integer &num1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator! </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac5d5cb8db57fd0247aa4e36d9b25c492"></a><!-- doxytag: member="boost::xint::operator!=" ref="ac5d5cb8db57fd0247aa4e36d9b25c492" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a115e84b56b4e5e00d0b2b5c8a407ef97"></a><!-- doxytag: member="boost::xint::operator%" ref="a115e84b56b4e5e00d0b2b5c8a407ef97" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator% </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab054d123a003a31c06bac92a1f325805"></a><!-- doxytag: member="boost::xint::operator&" ref="ab054d123a003a31c06bac92a1f325805" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator& </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae3770c0e356d50b5f3e2be573e6100cd"></a><!-- doxytag: member="boost::xint::operator*" ref="ae3770c0e356d50b5f3e2be573e6100cd" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0f6171689ef68ff6672e43a1e24ea494"></a><!-- doxytag: member="boost::xint::operator+" ref="a0f6171689ef68ff6672e43a1e24ea494" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af0e2812ac56a264cd9a86243306ec0fb"></a><!-- doxytag: member="boost::xint::operator+" ref="af0e2812ac56a264cd9a86243306ec0fb" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> & boost::xint::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac16aa971521ae015a62ec015f1fe56d0"></a><!-- doxytag: member="boost::xint::operator-" ref="ac16aa971521ae015a62ec015f1fe56d0" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a92ee4f1138215a36f4374a356fa5a359"></a><!-- doxytag: member="boost::xint::operator-" ref="a92ee4f1138215a36f4374a356fa5a359" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9a2859e7b5e532eaa0cc51aba4f958c2"></a><!-- doxytag: member="boost::xint::operator/" ref="a9a2859e7b5e532eaa0cc51aba4f958c2" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af845afe18e9b1326d630e5c0696e679d"></a><!-- doxytag: member="boost::xint::operator<" ref="af845afe18e9b1326d630e5c0696e679d" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator< </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8d1a90f08d8ad3547627f2c2590ab20d"></a><!-- doxytag: member="boost::xint::operator<<" ref="a8d1a90f08d8ad3547627f2c2590ab20d" args="(std::basic_ostream< charT, traits > &out, const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_ostream<charT,traits>& boost::xint::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_ostream< charT, traits > & </td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00944">944</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7749bff2e150c55649324ba9797aa6d0"></a><!-- doxytag: member="boost::xint::operator<=" ref="a7749bff2e150c55649324ba9797aa6d0" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator<= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a66b558cce023df7b3e10ee22dfe653d0"></a><!-- doxytag: member="boost::xint::operator==" ref="a66b558cce023df7b3e10ee22dfe653d0" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab09672bca82a7f4fbdca4443492210bc"></a><!-- doxytag: member="boost::xint::operator>" ref="ab09672bca82a7f4fbdca4443492210bc" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator> </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1ace7bde7533ff9d8a3f38978e7bb046"></a><!-- doxytag: member="boost::xint::operator>=" ref="a1ace7bde7533ff9d8a3f38978e7bb046" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::operator>= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3a5967ac54c1a269f0b4ed555391ca4f"></a><!-- doxytag: member="boost::xint::operator>>" ref="a3a5967ac54c1a269f0b4ed555391ca4f" args="(std::basic_istream< charT, traits > &in, integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_istream<charT,traits>& boost::xint::operator>> </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_istream< charT, traits > & </td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00956">956</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9524e5e34757cb10a146012bc4192643"></a><!-- doxytag: member="boost::xint::operator^" ref="a9524e5e34757cb10a146012bc4192643" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator^ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4896e1fc3c8d0adb4911cf5b78304f49"></a><!-- doxytag: member="boost::xint::operator|" ref="a4896e1fc3c8d0adb4911cf5b78304f49" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::operator| </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0492c49fda91b5f498074d3f812906dd"></a><!-- doxytag: member="boost::xint::opt_secure_mode" ref="a0492c49fda91b5f498074d3f812906dd" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::opt_secure_mode </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if Secure Mode is active, <code>false</code> if it isn't. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac80750e62d5ffa2484332aae4b23d379"></a><!-- doxytag: member="boost::xint::opt_thread_safe" ref="ac80750e62d5ffa2484332aae4b23d379" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::opt_thread_safe </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if it was compiled with Thread Safe Operation enabled, <code>false</code> if it wasn't. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa7d7b30f587c98ad31b8d421b8813c61"></a><!-- doxytag: member="boost::xint::pow" ref="aa7d7b30f587c98ad31b8d421b8813c61" args="(const integer &n, const integer &e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::pow </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of n<sup>e</sup>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,e</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> to the power of <code>e</code>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af710e4b39cfa66096c202f17d12cc7b7"></a><!-- doxytag: member="boost::xint::pow2" ref="af710e4b39cfa66096c202f17d12cc7b7" args="(size_t e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::pow2 </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>e</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of 2<sup>e</sup>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>2 to the power of <code>e</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a35e7556e9f2d8fb944dbf732ed3f96cd"></a><!-- doxytag: member="boost::xint::powmod" ref="a35e7556e9f2d8fb944dbf732ed3f96cd" args="(const integer &n, const integer &e, const integer &m, bool noMontgomery)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::powmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>noMontgomery</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to exponentiate. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>noMontgomery</em> </td><td>Used for testing, leave false for normal operation.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>pow</code>(n, <code>exponent</code>) % <code>modulus</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Because this function keeps the intermediate results small, it is far faster and uses far less memory than writing out the equivalent calculations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>In addition, this function will use the Montgomery Reduction internally, if the modulus is an odd number (and if <code>noMontgomery</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac8d879e19a6608b21184236e00806be5"></a><!-- doxytag: member="boost::xint::random_by_size" ref="ac8d879e19a6608b21184236e00806be5" args="(size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::random_by_size </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>high_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>low_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>can_be_negative</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Generates a random <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with specific attributes. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bits</em> </td><td>The maximum number of bits that you want the returned number to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>high_bit_on</em> </td><td>If <code>true</code>, the returned number will have exactly the requested size. If <code>false</code>, the upper bits may be zero, resulting in a number that is slightly smaller than requested. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>low_bit_on</em> </td><td>If <code>true</code>, the returned number will always be odd. If <code>false</code>, it has an equal chance of being odd or even. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>can_be_negative</em> </td><td>If <code>true</code>, the returned value has an equal chance of being positive or negative. If <code>false</code>, it will always be positive.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A random <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with the requested attributes.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the currently-defined random generator.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aaf58d56e1a47ac55e0aa97a55e6fb2c9"></a><!-- doxytag: member="boost::xint::random_prime" ref="aaf58d56e1a47ac55e0aa97a55e6fb2c9" args="(size_t size_in_bits, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::random_prime </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>size_in_bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Generate a randomly-generated prime number of a particular bit-size. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>size_in_bits</em> </td><td>The number of bits that you want the returned value to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A randomly-generated prime <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with the specified number of bits, or zero if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function uses <a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">xint::is_prime</a>. See the description of it for details of its limitations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>It also uses the library's currently-set random number generator. See the <a class="el" href="random.html">Random Number Functions page</a> for details on its limitations and requirements, and how to get cryptographically-secure random numbers.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a201d33fafe577133130cd16dec3422b6"></a><!-- doxytag: member="boost::xint::set_random_generator" ref="a201d33fafe577133130cd16dec3422b6" args="(T *gen)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::set_random_generator </td>
+ <td>(</td>
+ <td class="paramtype">T * </td>
+ <td class="paramname"> <em>gen</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Change the random generator that the library uses. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>gen</em> </td><td>A pointer to the new generator to use.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>The generator must be a heap-allocated pointer (one created with <code>new</code>), which the XInt library assumes ownership of. Don't pass in a stack-created item, don't try to delete the item that you passed in, and don't attempt to use it separately after passing it to this function, or the behavior is undefined.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>See the <a class="el" href="random.html">Random Number page</a> for an example of how to use it. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00843">843</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6278915cf51b0d448a9db40031226182"></a><!-- doxytag: member="boost::xint::setbit" ref="a6278915cf51b0d448a9db40031226182" args="(integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::setbit </td>
+ <td>(</td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Sets a specific bit in an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aaed048f3dc3a442152ebffa3f721d014"></a><!-- doxytag: member="boost::xint::shift" ref="aaed048f3dc3a442152ebffa3f721d014" args="(const integer &n, int byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::shift </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Bit-shift an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>, in either direction. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to shift it. If positive, it will shift left, negative will shift right.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ae22c3492ecf08370a9a972c8d6fb8e96"></a><!-- doxytag: member="boost::xint::shift_left" ref="ae22c3492ecf08370a9a972c8d6fb8e96" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::shift_left </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Left-shift an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> by a specified number of bits. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to left-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aca7453fa9e276ebefacc9827b55f69d2"></a><!-- doxytag: member="boost::xint::shift_right" ref="aca7453fa9e276ebefacc9827b55f69d2" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::shift_right </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Right-shift an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> by a specified number of bits. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to right-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="afbba1eeb86e4e7610a75afbb89d594e3"></a><!-- doxytag: member="boost::xint::sqr" ref="afbba1eeb86e4e7610a75afbb89d594e3" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::sqr </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the value of n<sup>2</sup>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> times <code>n</code>.</dd></dl>
+<p>This function uses a faster algorithm than the standard multiplication one.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Rewrite this to eliminate the inefficient addOverflow. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="adb9a9cb117e7346a3b56c369cd438b0e"></a><!-- doxytag: member="boost::xint::sqrmod" ref="adb9a9cb117e7346a3b56c369cd438b0e" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::sqrmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Get the modular product of squaring an <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> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to square. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>sqr(n)</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="afdf79cc57e434b9c7f4cb3b6bd68dbd6"></a><!-- doxytag: member="boost::xint::sqrt" ref="afdf79cc57e434b9c7f4cb3b6bd68dbd6" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::sqrt </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the square root of <code>an</code> <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> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The largest <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> that, when squared, is less than or equal to <code>n</code>. If <code>n</code> is not a perfect square, then this value will not be the exact square root.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">xint::cannot_represent</a></em> </td><td>if <code>n</code> is negative. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a86eb0099596fe66bd46be244323f44e5"></a><!-- doxytag: member="boost::xint::subtract" ref="a86eb0099596fe66bd46be244323f44e5" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::subtract </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Calculate the difference between two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The difference between the parameters. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8b1647a9b23f45407df6d402852d06ae"></a><!-- doxytag: member="boost::xint::testAddSubtract" ref="a8b1647a9b23f45407df6d402852d06ae" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testAddSubtract </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9d062367dfe2a79e4471c97d1ee101b2"></a><!-- doxytag: member="boost::xint::testBitManipulations" ref="a9d062367dfe2a79e4471c97d1ee101b2" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testBitManipulations </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aca8ead732f9dac3f23f53095eacd762e"></a><!-- doxytag: member="boost::xint::testConvert" ref="aca8ead732f9dac3f23f53095eacd762e" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testConvert </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aabf845d8d592d3576d7223fc29362b3a"></a><!-- doxytag: member="boost::xint::testDivideMod" ref="aabf845d8d592d3576d7223fc29362b3a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testDivideMod </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6073c3037b644655bc752120b144e804"></a><!-- doxytag: member="boost::xint::testMontyMultiply" ref="a6073c3037b644655bc752120b144e804" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testMontyMultiply </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a099082cd8bbd0e994870ad89859e18c1"></a><!-- doxytag: member="boost::xint::testMontyPowerMod" ref="a099082cd8bbd0e994870ad89859e18c1" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testMontyPowerMod </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a87d760db18932efaafb906c0ebbdb50f"></a><!-- doxytag: member="boost::xint::testMultiply" ref="a87d760db18932efaafb906c0ebbdb50f" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testMultiply </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ace6d9f008e78329286fc9003896667cd"></a><!-- doxytag: member="boost::xint::testStreams" ref="ace6d9f008e78329286fc9003896667cd" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::testStreams </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae90546b0cb6cf2f27fc5ce65bb43a21e"></a><!-- doxytag: member="boost::xint::to" ref="ae90546b0cb6cf2f27fc5ce65bb43a21e" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">T boost::xint::to </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Efficiently converts from an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a> to a built-in integer type. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type to convert it to.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The numeric value of <code>n</code>, converted to the specified type.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">xint::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns T(0) instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00820">820</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a19124d8eeee95cc7ff1e348c36250eea"></a><!-- doxytag: member="boost::xint::to_binary" ref="a19124d8eeee95cc7ff1e348c36250eea" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::to_binary </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a binary representation of an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>, lowest byte first. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to convert.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string containing the binary representation.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function only stores the absolute value of <code>n</code>; if you need the sign, you must store it separately.</dd></dl>
+<dl class="user"><dt><b>If exceptions are blocked, returns an empty std::string instead of</b></dt><dd>throwing.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>A binary representation is sometimes used for persistent storage or transmission, as it is more space-efficient than a string representation.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">xint::from_binary</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac0454fdc47e70a493c7bf5d92dda33d4"></a><!-- doxytag: member="boost::xint::to_string" ref="ac0454fdc47e70a493c7bf5d92dda33d4" args="(const integer &n, size_t base, bool uppercase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::to_string </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>uppercase</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Creates a string representation of the specified <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> </td><td valign="top"><em>n</em> </td><td>The <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base, between 2 and 36 inclusive, to convert it to. Defaults to base 10. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>uppercase</em> </td><td>Whether to make alphabetic characters (for bases greater than ten) uppercase or not. Defaults to <code>false</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>. If <code>n</code> is Not-a-Number, returns the string <code>#NaN#</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, it returns an empty string instead of throwing an exception.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when you ask the library to write an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> to a stream, but it's more flexible because you can specify any base between 2 and 36. (Streams only allow base-8, base-10, or base-16.) </dd></dl>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a086ec65a0273dccedca0fbfbddb03398"></a><!-- doxytag: member="boost::xint::autobase" ref="a086ec65a0273dccedca0fbfbddb03398" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const size_t <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint::autobase</a> = (std::numeric_limits<size_t>::max)()</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>A value that can be used for the 'base' parameter of the string-to-integer functions </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1integer.html#a179df60f5dc32f98b9f564ec20aff5a8" title="Create an integer from a string representation.">xint::integer::integer(const std::string& str, size_t base)</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">xint::from_string</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00124">124</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a758d415a476a5eeed28dc6b5869b1696"></a><!-- doxytag: member="boost::xint::no_callback" ref="a758d415a476a5eeed28dc6b5869b1696" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> <a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">boost::xint::no_callback</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>An empty callback_t, used as a default parameter for some functions. </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">xint::is_prime</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">xint::random_prime</a> </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00119">119</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+</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
+<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/namespaceboost_1_1xint_1_1core.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,1833 @@
+<!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 Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li class="current">Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Namespace List</li>
+ <li>Namespace Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1core.html">core</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::core Namespace Reference</h1>
+<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.
+More...</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">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...<br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">setbit</a> (<a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">bitwise_and</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">bitwise_or</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">bitwise_xor</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">shift_left</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">shift_right</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">operator!</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">operator<</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator></a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator<=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator>=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">mod</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &by, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a017539f78cba665d5cbb6b6ba00e1d42">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af4587327ba62268fe3267ca09bd8f4a2">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">operator&</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">sqr</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">pow</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">factorial</a> (size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">random_prime</a> (size_t size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">negate</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">add</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">subtract</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">multiply</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">divide</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &dividend, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">divide_r</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &d1, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &d2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">to</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">operator<<</a> (std::basic_ostream< charT, traits > &out, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">operator>></a> (std::basic_istream< charT, traits > &in, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Montgomery Reduction functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpef45384829a28a8031424a8c453ceaa0"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">inverse0</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">montgomeryR</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">toMontgomeryForm</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">fromMontgomeryForm</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="mdescLeft"> </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"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">montgomeryMultiplyMod</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &a, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n, digit_t nPrime0)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">montgomeryPowerMod</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &a, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<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>
+<p>The types and functions in the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the core integer type and core functions.">xint::core</a> namespace operate exactly like those of the same names in the <a class="el" href="namespaceboost_1_1xint.html" title="All of the commonly-used functions are within this namespace.">xint</a> 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 <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>, it will throw an <a class="el" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a> exception.</p>
+<p>These functions are not documented separately; see the corresponding classes and functions in the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a> namespace for documentation on them. </p>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ab1b84a6eb65676fdb85e71c1fe06e792"></a><!-- doxytag: member="boost::xint::core::abs" ref="ab1b84a6eb65676fdb85e71c1fe06e792" args="(const integer &n)" -->
+<div class="memitem">
+<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::abs </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa8ac1151e65f51b3dca51e827c29af66"></a><!-- doxytag: member="boost::xint::core::add" ref="aa8ac1151e65f51b3dca51e827c29af66" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::add </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aab6badbf5997e33714d0dbe54c16375f"></a><!-- doxytag: member="boost::xint::core::bitwise_and" ref="aab6badbf5997e33714d0dbe54c16375f" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::bitwise_and </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a04384ebf492038c4ba83af9736412c9b"></a><!-- doxytag: member="boost::xint::core::bitwise_or" ref="a04384ebf492038c4ba83af9736412c9b" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::bitwise_or </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a86446e5e38a977b68f041dfa4b82a385"></a><!-- doxytag: member="boost::xint::core::bitwise_xor" ref="a86446e5e38a977b68f041dfa4b82a385" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::bitwise_xor </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abd43d348da182e32e931743d1837f849"></a><!-- doxytag: member="boost::xint::core::clearbit" ref="abd43d348da182e32e931743d1837f849" args="(integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::clearbit </td>
+ <td>(</td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a37bbe9d9165afb0a3f20df233a9db07f"></a><!-- doxytag: member="boost::xint::core::compare" ref="a37bbe9d9165afb0a3f20df233a9db07f" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::core::compare </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>ignoresign</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad09c66a61457feb23505d26adc116530"></a><!-- doxytag: member="boost::xint::core::divide" ref="ad09c66a61457feb23505d26adc116530" args="(const integer &dividend, const integer &divisor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::divide </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>dividend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>divisor</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a731b3943a2e1bc95ec34a32291754ad4"></a><!-- doxytag: member="boost::xint::core::divide_r" ref="a731b3943a2e1bc95ec34a32291754ad4" args="(const integer &d1, const integer &d2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::pair< <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> > boost::xint::core::divide_r </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab82432c3d99638bb2f56304cf44a405a"></a><!-- doxytag: member="boost::xint::core::factorial" ref="ab82432c3d99638bb2f56304cf44a405a" args="(size_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::factorial </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a626c8b1f3bd3f6b03a18412c8419bad8"></a><!-- doxytag: member="boost::xint::core::from_binary" ref="a626c8b1f3bd3f6b03a18412c8419bad8" args="(const std::string &str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::from_binary </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="adaa2e5c8f2ff92faee861a68bc7e4cca"></a><!-- doxytag: member="boost::xint::core::from_string" ref="adaa2e5c8f2ff92faee861a68bc7e4cca" args="(const std::string &str, size_t base)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::from_string </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1d598caa371e7bffba98f78df726674e"></a><!-- doxytag: member="boost::xint::core::fromMontgomeryForm" ref="a1d598caa371e7bffba98f78df726674e" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::fromMontgomeryForm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the <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. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab914d21c7168f03fc844746be068bf25"></a><!-- doxytag: member="boost::xint::core::gcd" ref="ab914d21c7168f03fc844746be068bf25" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::gcd </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a06f4b3f75bb5e648e865f20990f8154c"></a><!-- doxytag: member="boost::xint::core::getbit" ref="a06f4b3f75bb5e648e865f20990f8154c" args="(const integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::getbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2a32641fadc89dc7385b2f1a0af862dc"></a><!-- doxytag: member="boost::xint::core::highestbit" ref="a2a32641fadc89dc7385b2f1a0af862dc" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::core::highestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa6942deffea28a32072479fe663acaa2"></a><!-- doxytag: member="boost::xint::core::inverse0" ref="aa6942deffea28a32072479fe663acaa2" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> boost::xint::core::inverse0 </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the low digit of the inverse of a number. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4cbae3e54ac73cfb3573c4e4f316abe4"></a><!-- doxytag: member="boost::xint::core::invmod" ref="a4cbae3e54ac73cfb3573c4e4f316abe4" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::invmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a79626b71d9ebb21c2c07e105c8b1ad89"></a><!-- doxytag: member="boost::xint::core::is_prime" ref="a79626b71d9ebb21c2c07e105c8b1ad89" args="(const integer &n, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::core::is_prime </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad8783802f3252c9c3143eaca76acd9a6"></a><!-- doxytag: member="boost::xint::core::lcm" ref="ad8783802f3252c9c3143eaca76acd9a6" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::lcm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa3924902931d74fe0a7d2c6daf9ab028"></a><!-- doxytag: member="boost::xint::core::log2" ref="aa3924902931d74fe0a7d2c6daf9ab028" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::core::log2 </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afbb649428a445bd8a6e7d9bcfab69707"></a><!-- doxytag: member="boost::xint::core::lowestbit" ref="afbb649428a445bd8a6e7d9bcfab69707" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::core::lowestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae02fe53b2dc0340dcd66c44e689e7338"></a><!-- doxytag: member="boost::xint::core::mod" ref="ae02fe53b2dc0340dcd66c44e689e7338" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::mod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a902d87635063ba89629799b032e6a53d"></a><!-- doxytag: member="boost::xint::core::montgomeryMultiplyMod" ref="a902d87635063ba89629799b032e6a53d" args="(const integer &a, const integer &b, const integer &n, digit_t nPrime0)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::montgomeryMultiplyMod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">digit_t </td>
+ <td class="paramname"> <em>nPrime0</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="a407dceba39038bf606814ea84ff4d964"></a><!-- doxytag: member="boost::xint::core::montgomeryPowerMod" ref="a407dceba39038bf606814ea84ff4d964" args="(const integer &a, const integer &e, const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::montgomeryPowerMod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="aff045b62b20e88d2e086dd64dcbba02e"></a><!-- doxytag: member="boost::xint::core::montgomeryR" ref="aff045b62b20e88d2e086dd64dcbba02e" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::montgomeryR </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the most efficient R value for a number and the library's internal representation. Used internally. </p>
+
+</div>
+</div>
+<a class="anchor" id="a46494daacb938b204aba5a5a3d957e3a"></a><!-- doxytag: member="boost::xint::core::mulmod" ref="a46494daacb938b204aba5a5a3d957e3a" args="(const integer &n, const integer &by, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::mulmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1a4424b4d8b045a3484463e588368593"></a><!-- doxytag: member="boost::xint::core::multiply" ref="a1a4424b4d8b045a3484463e588368593" args="(const integer &n, const integer &by)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::multiply </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0103381c7bca2e5a904ad3b75904e982"></a><!-- doxytag: member="boost::xint::core::negate" ref="a0103381c7bca2e5a904ad3b75904e982" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::negate </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa86f6238d476cfdb8f534a8cb289a7e5"></a><!-- doxytag: member="boost::xint::core::operator!" ref="aa86f6238d476cfdb8f534a8cb289a7e5" args="(const integer &num1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::operator! </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a422409aa6897f3169f9be22fba746466"></a><!-- doxytag: member="boost::xint::core::operator!=" ref="a422409aa6897f3169f9be22fba746466" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abd7c9499bde867d7b8c7eae5b08bd54d"></a><!-- doxytag: member="boost::xint::core::operator%" ref="abd7c9499bde867d7b8c7eae5b08bd54d" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator% </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3913ac27d582f4f5c162cd2c763b91a1"></a><!-- doxytag: member="boost::xint::core::operator&" ref="a3913ac27d582f4f5c162cd2c763b91a1" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator& </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abc738f0d18724bbdda6d956dabd77b0c"></a><!-- doxytag: member="boost::xint::core::operator*" ref="abc738f0d18724bbdda6d956dabd77b0c" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a017539f78cba665d5cbb6b6ba00e1d42"></a><!-- doxytag: member="boost::xint::core::operator+" ref="a017539f78cba665d5cbb6b6ba00e1d42" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0e26ec58adc380b930eb3c47723a7d6a"></a><!-- doxytag: member="boost::xint::core::operator+" ref="a0e26ec58adc380b930eb3c47723a7d6a" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & boost::xint::core::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af4587327ba62268fe3267ca09bd8f4a2"></a><!-- doxytag: member="boost::xint::core::operator-" ref="af4587327ba62268fe3267ca09bd8f4a2" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a94dda733eac933cee9a5e307ba030b88"></a><!-- doxytag: member="boost::xint::core::operator-" ref="a94dda733eac933cee9a5e307ba030b88" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9704cdf0b9adc7cca4118b2e20737a65"></a><!-- doxytag: member="boost::xint::core::operator/" ref="a9704cdf0b9adc7cca4118b2e20737a65" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad66c54269633ec8a0609bafecad430dc"></a><!-- doxytag: member="boost::xint::core::operator<" ref="ad66c54269633ec8a0609bafecad430dc" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::operator< </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af8fd339a3a68d1de9d8c3991c4952835"></a><!-- doxytag: member="boost::xint::core::operator<<" ref="af8fd339a3a68d1de9d8c3991c4952835" args="(std::basic_ostream< charT, traits > &out, const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_ostream<charT,traits>& boost::xint::core::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_ostream< charT, traits > & </td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00852">852</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5548f1bea201f1de80fc3d847d58d8d7"></a><!-- doxytag: member="boost::xint::core::operator<=" ref="a5548f1bea201f1de80fc3d847d58d8d7" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::operator<= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab91cfea31de4287970ae678b4a951a13"></a><!-- doxytag: member="boost::xint::core::operator==" ref="ab91cfea31de4287970ae678b4a951a13" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae4725524123f4ba5544d47cce68606fb"></a><!-- doxytag: member="boost::xint::core::operator>" ref="ae4725524123f4ba5544d47cce68606fb" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::operator> </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="acd8e6b8505268237b7fe55bea9a23b2e"></a><!-- doxytag: member="boost::xint::core::operator>=" ref="acd8e6b8505268237b7fe55bea9a23b2e" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::operator>= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a39b5e2f0e689ba91809cc1eaebe40428"></a><!-- doxytag: member="boost::xint::core::operator>>" ref="a39b5e2f0e689ba91809cc1eaebe40428" args="(std::basic_istream< charT, traits > &in, integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_istream<charT,traits>& boost::xint::core::operator>> </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_istream< charT, traits > & </td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00880">880</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2c93fc2437215ef1e54c67276bfde742"></a><!-- doxytag: member="boost::xint::core::operator^" ref="a2c93fc2437215ef1e54c67276bfde742" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator^ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3124de335da66bcf5a4141dccc1a9458"></a><!-- doxytag: member="boost::xint::core::operator|" ref="a3124de335da66bcf5a4141dccc1a9458" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::operator| </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4bf3bb563c2a9a3c1dd98f8975253a30"></a><!-- doxytag: member="boost::xint::core::pow" ref="a4bf3bb563c2a9a3c1dd98f8975253a30" args="(const integer &n, const integer &e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::pow </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a72afdedb16eff4404641511681e08116"></a><!-- doxytag: member="boost::xint::core::pow2" ref="a72afdedb16eff4404641511681e08116" args="(size_t e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::pow2 </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>e</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6d465ee56d6ba0263ac4648bd8b68bc4"></a><!-- doxytag: member="boost::xint::core::powmod" ref="a6d465ee56d6ba0263ac4648bd8b68bc4" args="(const integer &n, const integer &e, const integer &m, bool noMontgomery)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::powmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>e</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>noMontgomery</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ace96723bc59d89473ab9c750330d4451"></a><!-- doxytag: member="boost::xint::core::random_by_size" ref="ace96723bc59d89473ab9c750330d4451" args="(size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::random_by_size </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>high_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>low_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>can_be_negative</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5f117503768fded4de58ded6d0c5513e"></a><!-- doxytag: member="boost::xint::core::random_prime" ref="a5f117503768fded4de58ded6d0c5513e" args="(size_t size_in_bits, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::random_prime </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>size_in_bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aae966bbb23d33801b34108f4490b0778"></a><!-- doxytag: member="boost::xint::core::setbit" ref="aae966bbb23d33801b34108f4490b0778" args="(integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::setbit </td>
+ <td>(</td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab5d1310559b3ac9857e3475889b06b1a"></a><!-- doxytag: member="boost::xint::core::shift" ref="ab5d1310559b3ac9857e3475889b06b1a" args="(const integer &n, int byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::shift </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a51a385d6a7e71b555b152de0f40cd9fc"></a><!-- doxytag: member="boost::xint::core::shift_left" ref="a51a385d6a7e71b555b152de0f40cd9fc" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::shift_left </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac456d45328b682c029af422923298253"></a><!-- doxytag: member="boost::xint::core::shift_right" ref="ac456d45328b682c029af422923298253" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::shift_right </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9bd005ab3992dc51d6c95fdee987f2fe"></a><!-- doxytag: member="boost::xint::core::sqr" ref="a9bd005ab3992dc51d6c95fdee987f2fe" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::sqr </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abaf712bcc261145845c49e2e07a8c23c"></a><!-- doxytag: member="boost::xint::core::sqrmod" ref="abaf712bcc261145845c49e2e07a8c23c" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::sqrmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9ebf35bf53baa1eddf9a84dc719a5d15"></a><!-- doxytag: member="boost::xint::core::sqrt" ref="a9ebf35bf53baa1eddf9a84dc719a5d15" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::sqrt </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa1d93a8d3a437f7b9df70ea00d48f355"></a><!-- doxytag: member="boost::xint::core::subtract" ref="aa1d93a8d3a437f7b9df70ea00d48f355" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::subtract </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2cc4b19211f94878d3fe4fc50dbe24a3"></a><!-- doxytag: member="boost::xint::core::to" ref="a2cc4b19211f94878d3fe4fc50dbe24a3" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">T boost::xint::core::to </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00792">792</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a32564e3da6e4e65ae8b937614cdca95c"></a><!-- doxytag: member="boost::xint::core::to_binary" ref="a32564e3da6e4e65ae8b937614cdca95c" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::core::to_binary </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a28e4e76808cb1a05102e9c3d66fe0027"></a><!-- doxytag: member="boost::xint::core::to_string" ref="a28e4e76808cb1a05102e9c3d66fe0027" args="(const integer &n, size_t base, bool uppercase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::core::to_string </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>uppercase</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4a33279cf67c53f80a4e5935f0515d4d"></a><!-- doxytag: member="boost::xint::core::toMontgomeryForm" ref="a4a33279cf67c53f80a4e5935f0515d4d" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> boost::xint::core::toMontgomeryForm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the Montgomery form of a number. Used for testing. </p>
+
+</div>
+</div>
+</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
+<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/namespaceboost_1_1xint_1_1detail.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,238 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::detail Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li class="current">Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Namespace List</li>
+ <li>Namespace Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1detail.html">detail</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail Namespace Reference</h1>
+<p>The items within this namespace are meant for internal use only.
+More...</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">An empty struct, used in <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Support class for the random generator code. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the internal details of an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a>. More...<br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uintmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uint_t<br class="typebreak"/>
+< std::numeric_limits<br class="typebreak"/>
+< <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> >::digits/2 ><br class="typebreak"/>
+::fast </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">set_random_generator</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a> *obj)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">get_random</a> ()</td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">nan_text</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the text representation of the Not-a-Number value. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Some constants used by the library.</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpe1f42a3ea000e0468230fb7abe73e7b1"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> = std::numeric_limits<<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>>::digits</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">digit_hibit</a> = (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>-1))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a> = (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>*2-1))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> = (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a> = <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="el" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>-1)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The items within this namespace are meant for internal use only. </p>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a46b5dc5524403d8a09d1bb419abcc347"></a><!-- doxytag: member="boost::xint::detail::digit_t" ref="a46b5dc5524403d8a09d1bb419abcc347" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef boost::uint_t<std::numeric_limits<<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>>::digits / 2>::fast <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">boost::xint::detail::digit_t</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is the type used to store information about the integer. It must contain at least half the number of bits that a doubledigit_t can hold, and is most memory-efficient when it's exactly that. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00060">60</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4a5cc16afeb1b8f5c3f0e9585f8e7d23"></a><!-- doxytag: member="boost::xint::detail::doubledigit_t" ref="a4a5cc16afeb1b8f5c3f0e9585f8e7d23" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef boost::uintmax_t <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">boost::xint::detail::doubledigit_t</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is the type used for calculations. It should be the largest built-in integral type the system can offer, for maximum processing efficiency. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00052">52</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a6486d7febde540f90921e9925d077534"></a><!-- doxytag: member="boost::xint::detail::get_random" ref="a6486d7febde540f90921e9925d077534" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int boost::xint::detail::get_random </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<dl class="return"><dt><b>Returns:</b></dt><dd>An unsigned int from the current random generator. </dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a17e1b4fcb11ff18fd2641dc43ee905b8"></a><!-- doxytag: member="boost::xint::detail::set_random_generator" ref="a17e1b4fcb11ff18fd2641dc43ee905b8" args="(base_random_generator *obj)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::set_random_generator </td>
+ <td>(</td>
+ <td class="paramtype">base_random_generator * </td>
+ <td class="paramname"> <em>obj</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Support function. </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a7502e1dd4c20a5ad799c6414b55e6818"></a><!-- doxytag: member="boost::xint::detail::bits_per_digit" ref="a7502e1dd4c20a5ad799c6414b55e6818" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const size_t <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">boost::xint::detail::bits_per_digit</a> = std::numeric_limits<<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>>::digits</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00064">64</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab7d9f30b8cad63e2e82998aa2e8d0fcd"></a><!-- doxytag: member="boost::xint::detail::digit_hibit" ref="ab7d9f30b8cad63e2e82998aa2e8d0fcd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">boost::xint::detail::digit_hibit</a> = (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>-1))</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00065">65</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aecc94d5cb515781b3a33ddf76884e8f5"></a><!-- doxytag: member="boost::xint::detail::digit_mask" ref="aecc94d5cb515781b3a33ddf76884e8f5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="el" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">boost::xint::detail::digit_mask</a> = <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(<a class="el" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>-1)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00068">68</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa743d942f784ec3a77e85816628d14cc"></a><!-- doxytag: member="boost::xint::detail::digit_overflowbit" ref="aa743d942f784ec3a77e85816628d14cc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> <a class="el" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">boost::xint::detail::digit_overflowbit</a> = (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>)</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00067">67</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a33ea157e34285642e6924bbffffc4367"></a><!-- doxytag: member="boost::xint::detail::doubledigit_hibit" ref="a33ea157e34285642e6924bbffffc4367" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">boost::xint::detail::doubledigit_hibit</a> = (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>*2-1))</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00066">66</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab0df946a2c10228501ef82bf823d0978"></a><!-- doxytag: member="boost::xint::detail::nan_text" ref="ab0df946a2c10228501ef82bf823d0978" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const std::string <a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">boost::xint::detail::nan_text</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Holds the text representation of the Not-a-Number value. </p>
+
+</div>
+</div>
+</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
+<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/namespacemembers.html
==============================================================================
--- sandbox/xint/doc/namespacemembers.html (original)
+++ sandbox/xint/doc/namespacemembers.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -59,10 +59,12 @@
<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
<li>abs()
-: <a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint</a>
</li>
<li>add()
: <a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core</a>
</li>
<li>allow_exceptions()
: <a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint</a>
@@ -78,13 +80,16 @@
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">boost::xint::detail</a>
</li>
<li>bitwise_and()
-: <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
</li>
<li>bitwise_or()
-: <a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint</a>
</li>
<li>bitwise_xor()
-: <a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint</a>
</li>
<li>block_exceptions()
: <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint</a>
@@ -97,10 +102,12 @@
: <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">boost::xint</a>
</li>
<li>clearbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
</li>
<li>compare()
-: <a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint</a>
</li>
</ul>
@@ -119,10 +126,12 @@
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">boost::xint::detail</a>
</li>
<li>divide()
-: <a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint</a>
</li>
<li>divide_r()
-: <a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint</a>
</li>
<li>doubledigit_hibit
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">boost::xint::detail</a>
@@ -142,84 +151,98 @@
<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
<li>factorial()
-: <a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint</a>
</li>
<li>from_binary()
: <a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core</a>
</li>
<li>from_string()
: <a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core</a>
</li>
<li>fromMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
<li>gcd()
-: <a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint</a>
</li>
<li>get_random()
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail</a>
</li>
<li>getbit()
-: <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>highestbit()
-: <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
<li>inverse0()
-: <a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core</a>
</li>
<li>invmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
</li>
<li>is_prime()
-: <a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
<li>lcm()
-: <a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint</a>
</li>
<li>log2()
: <a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core</a>
</li>
<li>lowestbit()
: <a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
<li>mod()
-: <a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint</a>
</li>
<li>montgomeryMultiplyMod()
-: <a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core</a>
</li>
<li>montgomeryPowerMod()
-: <a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core</a>
</li>
<li>montgomeryR()
-: <a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core</a>
</li>
<li>mulmod()
: <a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core</a>
</li>
<li>multiply()
: <a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core</a>
</li>
</ul>
@@ -229,7 +252,8 @@
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">boost::xint::detail</a>
</li>
<li>negate()
-: <a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint</a>
</li>
<li>no_callback
: <a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">boost::xint</a>
@@ -239,55 +263,73 @@
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>operator!()
-: <a class="el" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint</a>
</li>
<li>operator!=()
-: <a class="el" href="namespaceboost_1_1xint.html#abf694043a7a1d64f35e90a275208ff2a">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core</a>
</li>
<li>operator%()
-: <a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint</a>
</li>
<li>operator&()
: <a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core</a>
</li>
<li>operator*()
-: <a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint</a>
</li>
<li>operator+()
-: <a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint</a>
</li>
<li>operator-()
-: <a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af4587327ba62268fe3267ca09bd8f4a2">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core</a>
</li>
<li>operator/()
-: <a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint</a>
</li>
<li>operator<()
-: <a class="el" href="namespaceboost_1_1xint.html#a0497944d7fa977eca5e5f6a140db07c3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint</a>
</li>
<li>operator<<()
-: <a class="el" href="namespaceboost_1_1xint.html#ade3e222abd81f9935cd0c003f345ed57">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint</a>
</li>
<li>operator<=()
-: <a class="el" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint</a>
</li>
<li>operator==()
-: <a class="el" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint</a>
</li>
<li>operator>()
-: <a class="el" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core</a>
</li>
<li>operator>=()
-: <a class="el" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core</a>
</li>
<li>operator>>()
-: <a class="el" href="namespaceboost_1_1xint.html#a6828d3d928f3a859f82a04b70634e4b3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint</a>
</li>
<li>operator^()
-: <a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint</a>
</li>
<li>operator|()
-: <a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint</a>
</li>
<li>opt_secure_mode()
: <a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint</a>
@@ -300,23 +342,28 @@
<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
<li>pow()
-: <a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint</a>
</li>
<li>pow2()
: <a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core</a>
</li>
<li>powmod()
: <a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
<li>random_by_size()
-: <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
</li>
<li>random_prime()
-: <a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint</a>
</li>
</ul>
@@ -328,27 +375,35 @@
</li>
<li>setbit()
: <a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core</a>
</li>
<li>shift()
-: <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
</li>
<li>shift_left()
: <a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core</a>
</li>
<li>shift_right()
-: <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
</li>
<li>sqr()
-: <a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint</a>
</li>
<li>sqrmod()
-: <a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint</a>
</li>
<li>sqrt()
: <a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core</a>
</li>
<li>subtract()
: <a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core</a>
</li>
</ul>
@@ -380,22 +435,25 @@
</li>
<li>to()
: <a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core</a>
</li>
<li>to_binary()
-: <a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">boost::xint</a>
</li>
<li>to_string()
-: <a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">boost::xint</a>
</li>
<li>token
: <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">boost::xint</a>
</li>
<li>toMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core</a>
</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
+<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
<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/namespacemembers_func.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_func.html (original)
+++ sandbox/xint/doc/namespacemembers_func.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -59,10 +59,12 @@
<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
<li>abs()
-: <a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint</a>
</li>
<li>add()
: <a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core</a>
</li>
<li>allow_exceptions()
: <a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint</a>
@@ -72,13 +74,16 @@
<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
<li>bitwise_and()
-: <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
</li>
<li>bitwise_or()
: <a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core</a>
</li>
<li>bitwise_xor()
: <a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core</a>
</li>
<li>block_exceptions()
: <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint</a>
@@ -88,20 +93,24 @@
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>clearbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
</li>
<li>compare()
-: <a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
<li>divide()
-: <a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint</a>
</li>
<li>divide_r()
-: <a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint</a>
</li>
</ul>
@@ -115,146 +124,179 @@
<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
<li>factorial()
-: <a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint</a>
</li>
<li>from_binary()
: <a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core</a>
</li>
<li>from_string()
: <a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core</a>
</li>
<li>fromMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
<li>gcd()
-: <a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint</a>
</li>
<li>get_random()
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail</a>
</li>
<li>getbit()
-: <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>highestbit()
-: <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
<li>inverse0()
-: <a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core</a>
</li>
<li>invmod()
-: <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
</li>
<li>is_prime()
-: <a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
<li>lcm()
-: <a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint</a>
</li>
<li>log2()
: <a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core</a>
</li>
<li>lowestbit()
: <a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
<li>mod()
-: <a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint</a>
</li>
<li>montgomeryMultiplyMod()
-: <a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core</a>
</li>
<li>montgomeryPowerMod()
-: <a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core</a>
</li>
<li>montgomeryR()
-: <a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core</a>
</li>
<li>mulmod()
: <a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core</a>
</li>
<li>multiply()
: <a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
<li>negate()
-: <a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint</a>
</li>
</ul>
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>operator!()
-: <a class="el" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint</a>
</li>
<li>operator!=()
-: <a class="el" href="namespaceboost_1_1xint.html#abf694043a7a1d64f35e90a275208ff2a">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core</a>
</li>
<li>operator%()
-: <a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint</a>
</li>
<li>operator&()
: <a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core</a>
</li>
<li>operator*()
-: <a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint</a>
</li>
<li>operator+()
-: <a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint</a>
</li>
<li>operator-()
-: <a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af4587327ba62268fe3267ca09bd8f4a2">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core</a>
</li>
<li>operator/()
-: <a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint</a>
</li>
<li>operator<()
-: <a class="el" href="namespaceboost_1_1xint.html#a0497944d7fa977eca5e5f6a140db07c3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint</a>
</li>
<li>operator<<()
-: <a class="el" href="namespaceboost_1_1xint.html#ade3e222abd81f9935cd0c003f345ed57">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint</a>
</li>
<li>operator<=()
-: <a class="el" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint</a>
</li>
<li>operator==()
-: <a class="el" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint</a>
</li>
<li>operator>()
-: <a class="el" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core</a>
</li>
<li>operator>=()
-: <a class="el" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core</a>
</li>
<li>operator>>()
-: <a class="el" href="namespaceboost_1_1xint.html#a6828d3d928f3a859f82a04b70634e4b3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint</a>
</li>
<li>operator^()
-: <a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint</a>
</li>
<li>operator|()
-: <a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint</a>
</li>
<li>opt_secure_mode()
: <a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint</a>
@@ -267,23 +309,28 @@
<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
<li>pow()
-: <a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint</a>
</li>
<li>pow2()
: <a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core</a>
</li>
<li>powmod()
: <a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
<li>random_by_size()
-: <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
</li>
<li>random_prime()
-: <a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint</a>
</li>
</ul>
@@ -295,27 +342,35 @@
</li>
<li>setbit()
: <a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core</a>
</li>
<li>shift()
-: <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
</li>
<li>shift_left()
: <a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core</a>
</li>
<li>shift_right()
-: <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
</li>
<li>sqr()
-: <a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint</a>
</li>
<li>sqrmod()
-: <a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint</a>
</li>
<li>sqrt()
: <a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core</a>
</li>
<li>subtract()
: <a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core</a>
</li>
</ul>
@@ -347,19 +402,22 @@
</li>
<li>to()
: <a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core</a>
</li>
<li>to_binary()
-: <a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea">boost::xint</a>
</li>
<li>to_string()
: <a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core</a>
</li>
<li>toMontgomeryForm()
-: <a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core</a>
</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
+<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
<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/namespacemembers_type.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_type.html (original)
+++ sandbox/xint/doc/namespacemembers_type.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -49,7 +49,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
+<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
<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/namespacemembers_vars.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_vars.html (original)
+++ sandbox/xint/doc/namespacemembers_vars.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -61,7 +61,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
+<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
<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/namespaces.html
==============================================================================
--- sandbox/xint/doc/namespaces.html (original)
+++ sandbox/xint/doc/namespaces.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -28,11 +28,12 @@
<div class="contents">
<h1>Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespaceboost.html">boost</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td><td class="indexvalue">All of the functions in the XInt library are within this namespace </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td><td class="indexvalue">All of the commonly-used functions are within this namespace </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td><td class="indexvalue">Contains the <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 </td></tr>
<tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td><td class="indexvalue">The items within this namespace are meant for internal use only </td></tr>
</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
+<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
<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/nan.html
==============================================================================
--- sandbox/xint/doc/nan.html (original)
+++ sandbox/xint/doc/nan.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -25,9 +25,9 @@
<h1><a class="anchor" id="nan">The Not-a-Number Value </a></h1><p>Sometimes it's useful for a variable to have a value that doesn't represent any proper value, to indicate that it hasn't been specified or that there was an error in a calculation. For that purpose, the <code>xint::integer</code> class provides Not-a-Number.</p>
-<p>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:</p>
+<p>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:</p>
<ul>
-<li>If a function that returns a non-reference integer tries to throw a blockable exception, but exceptions are blocked.</li>
+<li>If a function that returns an integer tries to throw a blockable exception, but exceptions are blocked.</li>
<li>If the string-to-integer functions are asked to convert the string <code>"#NaN#"</code>.</li>
</ul>
<p>The only things you can do with a Not-a-Number are:</p>
@@ -36,9 +36,9 @@
<li>Convert it to a string, or write it to a stream. The result will be the string <code>"#NaN#"</code>.</li>
<li>Make a copy of it.</li>
</ul>
-<p>If you attempt to do anything else with it, you will get the non-blockable <code>xint::not_a_number</code> exception. </p>
+<p>If you attempt to do anything else with it, you will either get an <code>xint::not_a_number</code> exception, or if exceptions are blocked, a special value indicating failure (which will be another Not-a-Number, if the function you're calling returns an xint::integer). </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
+<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
<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/nan_8dox.html
==============================================================================
--- sandbox/xint/doc/nan_8dox.html (original)
+++ sandbox/xint/doc/nan_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/nan.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/operators_8cpp.html
==============================================================================
--- sandbox/xint/doc/operators_8cpp.html (original)
+++ sandbox/xint/doc/operators_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -37,10 +37,25 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core::operator+</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core::operator-</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a017539f78cba665d5cbb6b6ba00e1d42">boost::xint::core::operator+</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af4587327ba62268fe3267ca09bd8f4a2">boost::xint::core::operator-</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core::operator*</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core::operator/</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core::operator%</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core::operator&</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core::operator|</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core::operator^</a> (const integer &n1, const integer &n2)</td></tr>
<tr><td colspan="2"><div class="groupHeader">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>
@@ -60,7 +75,7 @@
<p>Definition in file <a class="el" href="operators_8cpp_source.html">operators.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
+<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
<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/operators_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/operators_8cpp_source.html (original)
+++ sandbox/xint/doc/operators_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -41,22 +41,34 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
-<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
-<a name="l00024"></a>00024 integer <a class="code" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(a); }
-<a name="l00025"></a>00025 integer <a class="code" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(num1, num2); }
-<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(num1, num2); }
-<a name="l00027"></a>00027 integer <a class="code" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(num1, num2); }
-<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(num1, num2); }
-<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(num1, num2); }
-<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(n1, n2); }
-<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(n1, n2); }
-<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(n1, n2); }
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 } <span class="comment">// namespace xint</span>
-<a name="l00035"></a>00035 } <span class="comment">// namespace boost</span>
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>core {
+<a name="l00023"></a>00023 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
+<a name="l00024"></a>00024 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">negate</a>(a); }
+<a name="l00025"></a>00025 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">add</a>(num1, num2); }
+<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">subtract</a>(num1, num2); }
+<a name="l00027"></a>00027 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">multiply</a>(num1, num2); }
+<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">divide</a>(num1, num2); }
+<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">mod</a>(num1, num2); }
+<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">bitwise_and</a>(n1, n2); }
+<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">bitwise_or</a>(n1, n2); }
+<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">bitwise_xor</a>(n1, n2); }
+<a name="l00033"></a>00033 } <span class="comment">// namespace core</span>
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
+<a name="l00036"></a>00036 integer <a class="code" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(a); }
+<a name="l00037"></a>00037 integer <a class="code" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(num1, num2); }
+<a name="l00038"></a>00038 integer <a class="code" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(num1, num2); }
+<a name="l00039"></a>00039 integer <a class="code" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(num1, num2); }
+<a name="l00040"></a>00040 integer <a class="code" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(num1, num2); }
+<a name="l00041"></a>00041 integer <a class="code" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(num1, num2); }
+<a name="l00042"></a>00042 integer <a class="code" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(n1, n2); }
+<a name="l00043"></a>00043 integer <a class="code" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(n1, n2); }
+<a name="l00044"></a>00044 integer <a class="code" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(n1, n2); }
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 } <span class="comment">// namespace xint</span>
+<a name="l00047"></a>00047 } <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
+<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
<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/pages.html
==============================================================================
--- sandbox/xint/doc/pages.html (original)
+++ sandbox/xint/doc/pages.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -25,7 +25,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
+<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
<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/powers_8cpp.html
==============================================================================
--- sandbox/xint/doc/powers_8cpp.html (original)
+++ sandbox/xint/doc/powers_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -39,10 +39,19 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core::pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core::factorial</a> (size_t n)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
<br/><br/></div></td></tr>
@@ -60,7 +69,7 @@
<p>Definition in file <a class="el" href="powers_8cpp_source.html">powers.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
+<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
<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/powers_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/powers_8cpp_source.html (original)
+++ sandbox/xint/doc/powers_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -47,109 +47,135 @@
<a name="l00025"></a>00025
<a name="l00026"></a>00026 <span class="keyword">using namespace </span>detail;
<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>{
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="keywordtype">bool</span> addOverflow(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> &n1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> n2) {
-<a name="l00031"></a>00031 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(n1>>1)+(n2>>1);
-<a name="l00032"></a>00032 <span class="keywordflow">if</span> ((n1&1) && (n2&1)) ++t;
-<a name="l00033"></a>00033 n1+=n2;
-<a name="l00034"></a>00034 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00035"></a>00035 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00036"></a>00036 }
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 } <span class="comment">// namespace</span>
-<a name="l00039"></a>00039
-<a name="l00049"></a>00049 integer <a class="code" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e.">pow2</a>(<span class="keywordtype">size_t</span> e) {
-<a name="l00050"></a>00050 integer r;
-<a name="l00051"></a>00051 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(r, e);
-<a name="l00052"></a>00052 <span class="keywordflow">return</span> r;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00065"></a>00065 integer <a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00066"></a>00066 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">const</span> data_t *ndata=n._get_data();
-<a name="l00069"></a>00069 std::vector<doubledigit_t> a(ndata->mLength*2+1, 0);
-<a name="l00070"></a>00070 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> *adigit=&a[0];
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="keywordtype">size_t</span> i, j;
-<a name="l00073"></a>00073 integer addend;
-<a name="l00074"></a>00074 data_t *addenddata=addend._get_data();
-<a name="l00075"></a>00075 addenddata->alloc(ndata->mLength*2+1);
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ndigitip=ndata->digits;
-<a name="l00078"></a>00078 <span class="keywordflow">for</span> (i=0; i<ndata->mLength; ++i, ++ndigitip) {
-<a name="l00079"></a>00079 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ndigiti=*ndigitip;
-<a name="l00080"></a>00080 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndigiti) * ndigiti);
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (addOverflow(adigit[2*i], t)) ++addenddata->digits[2*i+2];
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 for (j=i+1; j<ndata->mLength; ++j) {
-<a name="l00084"></a>00084 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndata->digits[j]) * ndigiti);
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) ++addenddata->digits[i+j+2];
-<a name="l00086"></a>00086 t<<=1;
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (addOverflow(adigit[i+j], t)) ++addenddata->digits[i+j+2];
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 integer answer;
-<a name="l00092"></a>00092 data_t *answerdata=answer._get_data();
-<a name="l00093"></a>00093 answerdata->alloc(ndata->mLength*2+1);
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> carry=0;
-<a name="l00096"></a>00096 <span class="keywordflow">for</span> (i=0, j=ndata->mLength*2+1; i<j; ++i) {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (addOverflow(carry, adigit[i])) ++addenddata->digits[i+2];
-<a name="l00098"></a>00098 answerdata->digits[i]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(carry);
-<a name="l00099"></a>00099 carry>>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 answerdata->skipLeadingZeros();
-<a name="l00103"></a>00103 addenddata->skipLeadingZeros();
-<a name="l00104"></a>00104 answer+=addend;
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> answer;
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00115"></a>00115 integer <a class="code" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61" title="Calculate the value of ne.">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
-<a name="l00116"></a>00116 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>core {
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>{
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="keywordtype">bool</span> addOverflow(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> &n1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> n2) {
+<a name="l00032"></a>00032 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(n1>>1)+(n2>>1);
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> ((n1&1) && (n2&1)) ++t;
+<a name="l00034"></a>00034 n1+=n2;
+<a name="l00035"></a>00035 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00037"></a>00037 }
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 } <span class="comment">// namespace</span>
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">pow2</a>(<span class="keywordtype">size_t</span> e) {
+<a name="l00042"></a>00042 integer r;
+<a name="l00043"></a>00043 <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">setbit</a>(r, e);
+<a name="l00044"></a>00044 <span class="keywordflow">return</span> r;
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">sqr</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00048"></a>00048 <span class="keyword">const</span> data_t *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>();
+<a name="l00049"></a>00049 std::vector<doubledigit_t> a(ndata->mLength*2+1, 0);
+<a name="l00050"></a>00050 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> *adigit=&a[0];
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keywordtype">size_t</span> i, j;
+<a name="l00053"></a>00053 integer addend;
+<a name="l00054"></a>00054 data_t *addenddata=addend._get_data();
+<a name="l00055"></a>00055 addenddata->alloc(ndata->mLength*2+1);
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ndigitip=ndata->digits;
+<a name="l00058"></a>00058 <span class="keywordflow">for</span> (i=0; i<ndata->mLength; ++i, ++ndigitip) {
+<a name="l00059"></a>00059 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ndigiti=*ndigitip;
+<a name="l00060"></a>00060 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndigiti) * ndigiti);
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (addOverflow(adigit[2*i], t)) ++addenddata->digits[2*i+2];
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 for (j=i+1; j<ndata->mLength; ++j) {
+<a name="l00064"></a>00064 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndata->digits[j]) * ndigiti);
+<a name="l00065"></a>00065 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) ++addenddata->digits[i+j+2];
+<a name="l00066"></a>00066 t<<=1;
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (addOverflow(adigit[i+j], t)) ++addenddata->digits[i+j+2];
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 integer answer;
+<a name="l00072"></a>00072 data_t *answerdata=answer._get_data();
+<a name="l00073"></a>00073 answerdata->alloc(ndata->mLength*2+1);
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> carry=0;
+<a name="l00076"></a>00076 <span class="keywordflow">for</span> (i=0, j=ndata->mLength*2+1; i<j; ++i) {
+<a name="l00077"></a>00077 <span class="keywordflow">if</span> (addOverflow(carry, adigit[i])) ++addenddata->digits[i+2];
+<a name="l00078"></a>00078 answerdata->digits[i]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(carry);
+<a name="l00079"></a>00079 carry>>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 answerdata->skipLeadingZeros();
+<a name="l00083"></a>00083 addenddata->skipLeadingZeros();
+<a name="l00084"></a>00084 answer+=addend;
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> answer;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
+<a name="l00090"></a>00090 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <span class="keywordtype">size_t</span> length=e.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>(), lastBitCount=0;
+<a name="l00093"></a>00093 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ee(e._get_digit(length-1));
+<a name="l00094"></a>00094 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(n)), answer=<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
+<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
+<a name="l00098"></a>00098 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> eee(e._get_digit(eIndex));
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount : <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00101"></a>00101 <span class="keywordflow">while</span> (bitCount-- > 0) {
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (eee & 0x01) answer*=p;
+<a name="l00103"></a>00103 p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">sqr</a>(p);
+<a name="l00104"></a>00104 eee >>= 1;
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 answer._set_negative(neg);
+<a name="l00109"></a>00109 <span class="keywordflow">return</span> answer;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">factorial</a>(<span class="keywordtype">size_t</span> n) {
+<a name="l00113"></a>00113 integer r(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
+<a name="l00114"></a>00114 <span class="keywordflow">while</span> (n > 1) { r *= n--; }
+<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 <span class="keywordtype">size_t</span> length=e.<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>(), lastBitCount=0;
-<a name="l00119"></a>00119 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ee(e._get_digit(length-1));
-<a name="l00120"></a>00120 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 integer p(<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(n)), answer=<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>();
-<a name="l00123"></a>00123 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
-<a name="l00124"></a>00124 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> eee(e._get_digit(eIndex));
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount : <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
-<a name="l00127"></a>00127 <span class="keywordflow">while</span> (bitCount-- > 0) {
-<a name="l00128"></a>00128 <span class="keywordflow">if</span> (eee & 0x01) answer*=p;
-<a name="l00129"></a>00129 p=<a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(p);
-<a name="l00130"></a>00130 eee >>= 1;
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 answer._set_negative(neg);
-<a name="l00135"></a>00135 <span class="keywordflow">return</span> answer;
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00149"></a>00149 integer <a class="code" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n) {
-<a name="l00150"></a>00150 integer r(<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>());
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (n == (std::numeric_limits<size_t>::max)()) {
-<a name="l00152"></a>00152 <span class="comment">// It's highly unlikely that the system will be able to calculate this,</span>
-<a name="l00153"></a>00153 <span class="comment">// or that anyone might want to, but someday it will be possible. This</span>
-<a name="l00154"></a>00154 <span class="comment">// code keeps the function from going into an infinite loop if/when that</span>
-<a name="l00155"></a>00155 <span class="comment">// happens.</span>
-<a name="l00156"></a>00156 r=(std::numeric_limits<size_t>::max)();
-<a name="l00157"></a>00157 --n;
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=2; i<=n; ++i) r*=i;
-<a name="l00160"></a>00160 <span class="keywordflow">return</span> r;
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 } <span class="comment">// namespace xint</span>
-<a name="l00164"></a>00164 } <span class="comment">// namespace boost</span>
+<a name="l00118"></a>00118 } <span class="comment">// namespace core</span>
+<a name="l00119"></a>00119
+<a name="l00129"></a>00129 integer <a class="code" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e.">pow2</a>(<span class="keywordtype">size_t</span> e) {
+<a name="l00130"></a>00130 integer r;
+<a name="l00131"></a>00131 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(r, e);
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> r;
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134
+<a name="l00145"></a>00145 integer <a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00146"></a>00146 <span class="keywordflow">try</span> {
+<a name="l00147"></a>00147 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(core::integer(n)));
+<a name="l00148"></a>00148 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00149"></a>00149 <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="l00150"></a>00150 <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="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153
+<a name="l00160"></a>00160 integer <a class="code" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61" title="Calculate the value of ne.">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
+<a name="l00161"></a>00161 <span class="keywordflow">try</span> {
+<a name="l00162"></a>00162 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61" title="Calculate the value of ne.">pow</a>(core::integer(n), core::integer(e)));
+<a name="l00163"></a>00163 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00164"></a>00164 <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="l00165"></a>00165 <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="l00166"></a>00166 }
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168
+<a name="l00180"></a>00180 integer <a class="code" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n) {
+<a name="l00181"></a>00181 <span class="keywordflow">try</span> {
+<a name="l00182"></a>00182 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">core::factorial</a>(n));
+<a name="l00183"></a>00183 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00184"></a>00184 <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="l00185"></a>00185 <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="l00186"></a>00186 }
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 } <span class="comment">// namespace xint</span>
+<a name="l00190"></a>00190 } <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
+<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
<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/primes.html
==============================================================================
--- sandbox/xint/doc/primes.html (original)
+++ sandbox/xint/doc/primes.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -49,7 +49,7 @@
<span class="comment">// Generate the prime number, keeping the user informed of the</span>
<span class="comment">// progress.</span>
cout << <span class="stringliteral">"Generating..."</span>;
- xint::integer p=<a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">xint::random_prime</a>(bits, callback);
+ xint::integer p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">xint::random_prime</a>(bits, callback);
<span class="comment">// Success!</span>
cout << <span class="stringliteral">"\nA random "</span> << bits << <span class="stringliteral">"-bit prime is: "</span> << p << endl;
@@ -64,7 +64,7 @@
}
</pre></div><p>(You can find it in the <code>examples</code> directory, by the name <code>genprime.cpp</code>.) </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
+<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
<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/primes_8cpp.html
==============================================================================
--- sandbox/xint/doc/primes_8cpp.html (original)
+++ sandbox/xint/doc/primes_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -38,10 +38,17 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
<br/><br/></div></td></tr>
@@ -55,7 +62,7 @@
<p>Definition in file <a class="el" href="primes_8cpp_source.html">primes.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
+<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
<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/primes_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/primes_8cpp_source.html (original)
+++ sandbox/xint/doc/primes_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -43,112 +43,127 @@
<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>{
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 std::vector<int> sieveOfEratosthenes(<span class="keywordtype">int</span> upTo) {
-<a name="l00028"></a>00028 std::vector<int> sieve;
-<a name="l00029"></a>00029 sieve.reserve(upTo);
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="comment">// Zero and one aren't prime, by this definition.</span>
-<a name="l00032"></a>00032 sieve.push_back(0);
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>core {
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>{
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 std::vector<int> sieveOfEratosthenes(<span class="keywordtype">int</span> upTo) {
+<a name="l00029"></a>00029 std::vector<int> sieve;
+<a name="l00030"></a>00030 sieve.reserve(upTo);
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="comment">// Zero and one aren't prime, by this definition.</span>
<a name="l00033"></a>00033 sieve.push_back(0);
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> p=2; p<upTo; ++p) sieve.push_back(p);
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 std::vector<int> ret;
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keywordtype">int</span> *p=&sieve[0], *e=p+upTo;
-<a name="l00040"></a>00040 <span class="keywordflow">while</span> (p<e) {
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (*p==0) { ++p; <span class="keywordflow">continue</span>; }
-<a name="l00042"></a>00042 ret.push_back(*p);
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <span class="keywordtype">int</span> *p2=p+(*p);
-<a name="l00045"></a>00045 <span class="keywordflow">while</span> (p2<e) { *p2=0; p2+=*p; }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 ++p;
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> ret;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="comment">// The Miller-Rabin Probabilistic Test of Primality</span>
-<a name="l00054"></a>00054 <span class="keywordtype">int</span> isProbablePrimeBaseB(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer &b, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>
-<a name="l00055"></a>00055 callback)
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 <span class="keyword">const</span> integer nMinus1(n - <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>());
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="comment">// Find r and a satisfying: n-1=2^a * r, r odd</span>
-<a name="l00060"></a>00060 integer r=nMinus1;
-<a name="l00061"></a>00061 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> a=0;
-<a name="l00062"></a>00062 <span class="keywordflow">while</span> (r.even()) { r >>= 1; ++a; }
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="comment">// We check the congruence class of b^((2^i)r) % n for each i</span>
-<a name="l00065"></a>00065 <span class="comment">// from 0 to a - 1. If any one is correct, then n passes.</span>
-<a name="l00066"></a>00066 <span class="comment">// Otherwise, n fails.</span>
-<a name="l00067"></a>00067 integer test=<a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(b, r, n);
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (test==<a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() || test==nMinus1) <span class="keywordflow">return</span> 1; <span class="comment">// Better than 3/4 chance it's prime</span>
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keywordflow">while</span> (a-->0) {
-<a name="l00071"></a>00071 test=<a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(test, n);
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (test==nMinus1) <span class="keywordflow">return</span> 1;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> -1;
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> 0;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 } <span class="comment">// namespace</span>
-<a name="l00080"></a>00080
-<a name="l00104"></a>00104 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
-<a name="l00105"></a>00105 <span class="keywordflow">if</span> (n < 2) {
-<a name="l00106"></a>00106 <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> std::invalid_argument(<span class="stringliteral">"xint::is_prime "</span>
-<a name="l00107"></a>00107 <span class="stringliteral">"cannot test numbers below 2"</span>);
-<a name="l00108"></a>00108 <span class="keywordflow">else</span> <span class="keywordflow">return</span> -1;
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="comment">// First we trial-divide it by the primes below 2000</span>
-<a name="l00112"></a>00112 <span class="keyword">static</span> <span class="keyword">const</span> std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
-<a name="l00113"></a>00113 std::vector<int>::const_iterator i=cLowPrimes.begin(), ie=cLowPrimes.end();
-<a name="l00114"></a>00114 <span class="keywordflow">for</span> (; i!=ie; ++i) <span class="keywordflow">if</span> ((n % *i)==0) <span class="keywordflow">return</span> (n==*i);
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="comment">// Run the number through the Miller-Rabin Probabilistic Test of Primality</span>
-<a name="l00117"></a>00117 <span class="comment">// a few times to see if it's actually (probably) prime.</span>
-<a name="l00118"></a>00118 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> count=0; count<5; ++count) {
-<a name="l00119"></a>00119 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">detail::get_random</a>();
-<a name="l00120"></a>00120 <span class="keywordtype">int</span> isP=isProbablePrimeBaseB(n, <a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(k), callback);
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (isP <= 0) <span class="keywordflow">return</span> isP;
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123 <span class="keywordflow">return</span> 1; <span class="comment">// Appears to be prime!</span>
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00148"></a>00148 integer <a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (size_in_bits < 2) {
-<a name="l00150"></a>00150 <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> std::invalid_argument(
-<a name="l00151"></a>00151 <span class="stringliteral">"xint::random_prime cannot create prime numbers smaller than two "</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"bits"</span>);
-<a name="l00153"></a>00153 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="comment">// Call the callback for the first time</span>
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 integer pe=<a class="code" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e.">pow2</a>(size_in_bits+1);
-<a name="l00160"></a>00160 <span class="keywordflow">while</span> (1) {
-<a name="l00161"></a>00161 integer p(<a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(size_in_bits, <span class="keyword">true</span>, <span class="keyword">true</span>));
-<a name="l00162"></a>00162 <span class="keywordflow">while</span> (p < pe) {
-<a name="l00163"></a>00163 <span class="keywordtype">int</span> r=<a class="code" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">is_prime</a>(p, callback);
-<a name="l00164"></a>00164 <span class="keywordflow">if</span> (r < 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00165"></a>00165 <span class="keywordflow">if</span> (r == 1) <span class="keywordflow">return</span> p;
-<a name="l00166"></a>00166 p+=2;
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 } <span class="comment">// namespace xint</span>
-<a name="l00172"></a>00172 } <span class="comment">// namespace boost</span>
+<a name="l00034"></a>00034 sieve.push_back(0);
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> p=2; p<upTo; ++p) sieve.push_back(p);
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 std::vector<int> ret;
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="keywordtype">int</span> *p=&sieve[0], *e=p+upTo;
+<a name="l00041"></a>00041 <span class="keywordflow">while</span> (p<e) {
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (*p==0) { ++p; <span class="keywordflow">continue</span>; }
+<a name="l00043"></a>00043 ret.push_back(*p);
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <span class="keywordtype">int</span> *p2=p+(*p);
+<a name="l00046"></a>00046 <span class="keywordflow">while</span> (p2<e) { *p2=0; p2+=*p; }
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 ++p;
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> ret;
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="comment">// The Miller-Rabin Probabilistic Test of Primality</span>
+<a name="l00055"></a>00055 <span class="keywordtype">int</span> isProbablePrimeBaseB(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer &b, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a>
+<a name="l00056"></a>00056 callback)
+<a name="l00057"></a>00057 {
+<a name="l00058"></a>00058 <span class="keyword">const</span> integer nMinus1(n - <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="comment">// Find r and a satisfying: n-1=2^a * r, r odd</span>
+<a name="l00061"></a>00061 integer r=nMinus1;
+<a name="l00062"></a>00062 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> a=0;
+<a name="l00063"></a>00063 <span class="keywordflow">while</span> (r.even()) { r >>= 1; ++a; }
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="comment">// We check the congruence class of b^((2^i)r) % n for each i</span>
+<a name="l00066"></a>00066 <span class="comment">// from 0 to a - 1. If any one is correct, then n passes.</span>
+<a name="l00067"></a>00067 <span class="comment">// Otherwise, n fails.</span>
+<a name="l00068"></a>00068 integer test=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">powmod</a>(b, r, n);
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (test==<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() || test==nMinus1) <span class="keywordflow">return</span> 1; <span class="comment">// Better than 3/4 chance it's prime</span>
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keywordflow">while</span> (a-->0) {
+<a name="l00072"></a>00072 test=<a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">sqrmod</a>(test, n);
+<a name="l00073"></a>00073 <span class="keywordflow">if</span> (test==nMinus1) <span class="keywordflow">return</span> 1;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> -1;
+<a name="l00077"></a>00077 <span class="keywordflow">return</span> 0;
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 } <span class="comment">// namespace</span>
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (n < 2) <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"xint::is_prime cannot test numbers "</span>
+<a name="l00084"></a>00084 <span class="stringliteral">"below 2"</span>);
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="comment">// First we trial-divide it by the primes below 2000</span>
+<a name="l00087"></a>00087 <span class="keyword">static</span> <span class="keyword">const</span> std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
+<a name="l00088"></a>00088 std::vector<int>::const_iterator i=cLowPrimes.begin(), ie=cLowPrimes.end();
+<a name="l00089"></a>00089 <span class="keywordflow">for</span> (; i!=ie; ++i) <span class="keywordflow">if</span> ((n % *i)==0) <span class="keywordflow">return</span> (n==*i);
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="comment">// Run the number through the Miller-Rabin Probabilistic Test of Primality</span>
+<a name="l00092"></a>00092 <span class="comment">// a few times to see if it's actually (probably) prime.</span>
+<a name="l00093"></a>00093 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> count=0; count<5; ++count) {
+<a name="l00094"></a>00094 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">detail::get_random</a>();
+<a name="l00095"></a>00095 <span class="keywordtype">int</span> isP=isProbablePrimeBaseB(n, <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(k), callback);
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (isP <= 0) <span class="keywordflow">return</span> isP;
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 <span class="keywordflow">return</span> 1; <span class="comment">// Appears to be prime!</span>
+<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#a5f117503768fded4de58ded6d0c5513e">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (size_in_bits < 2) <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"cannot create prime "</span>
+<a name="l00103"></a>00103 <span class="stringliteral">"numbers smaller than two bits"</span>);
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="comment">// Call the callback for the first time</span>
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 integer pe=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">pow2</a>(size_in_bits+1);
+<a name="l00109"></a>00109 <span class="keywordflow">while</span> (1) {
+<a name="l00110"></a>00110 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">random_by_size</a>(size_in_bits, <span class="keyword">true</span>, <span class="keyword">true</span>));
+<a name="l00111"></a>00111 <span class="keywordflow">while</span> (p < pe) {
+<a name="l00112"></a>00112 <span class="keywordtype">int</span> r=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">is_prime</a>(p, callback);
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (r < 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (r == 1) <span class="keywordflow">return</span> p;
+<a name="l00115"></a>00115 p+=2;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 } <span class="comment">// namespace core</span>
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122
+<a name="l00145"></a>00145 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00146"></a>00146 <span class="keywordflow">try</span> {
+<a name="l00147"></a>00147 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">is_prime</a>(core::integer(n), callback);
+<a name="l00148"></a>00148 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00149"></a>00149 <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="l00150"></a>00150 <span class="keywordflow">else</span> <span class="keywordflow">return</span> -1;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153
+<a name="l00176"></a>00176 integer <a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00177"></a>00177 <span class="keywordflow">try</span> {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">core::random_prime</a>(size_in_bits, callback));
+<a name="l00179"></a>00179 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00180"></a>00180 <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="l00181"></a>00181 <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="l00182"></a>00182 }
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 } <span class="comment">// namespace xint</span>
+<a name="l00186"></a>00186 } <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
+<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
<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/primes_8dox.html
==============================================================================
--- sandbox/xint/doc/primes_8dox.html (original)
+++ sandbox/xint/doc/primes_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/primes.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/primitives_8cpp.html
==============================================================================
--- sandbox/xint/doc/primitives_8cpp.html (original)
+++ sandbox/xint/doc/primitives_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -39,10 +39,22 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core::abs</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core::negate</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
<br/><br/></div></td></tr>
@@ -66,7 +78,7 @@
<p>Definition in file <a class="el" href="primitives_8cpp_source.html">primitives.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
+<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
<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/primitives_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/primitives_8cpp_source.html (original)
+++ sandbox/xint/doc/primitives_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -46,243 +46,298 @@
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="keyword">using namespace </span>detail;
<a name="l00026"></a>00026
-<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00034"></a>00034 <span class="keywordflow">return</span> (n < 0 ? -n : n);
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036
-<a name="l00043"></a>00043 integer <a class="code" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00044"></a>00044 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 integer nn(n);
-<a name="l00047"></a>00047 nn._make_unique();
-<a name="l00048"></a>00048 nn._get_data()->negate();
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> nn;
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00058"></a>00058 integer <a class="code" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
-<a name="l00059"></a>00059 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>(), sign2=n2.sign();
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>core {
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> (n.sign() < 0 ? -n : n);
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">negate</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00034"></a>00034 integer nn(n);
+<a name="l00035"></a>00035 nn._make_unique();
+<a name="l00036"></a>00036 nn._get_data()->negate();
+<a name="l00037"></a>00037 <span class="keywordflow">return</span> nn;
+<a name="l00038"></a>00038 }
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00041"></a>00041 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>(), sign2=n2.sign();
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (sign1 != sign2) {
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> n2;
+<a name="l00044"></a>00044 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> n1;
+<a name="l00045"></a>00045 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">subtract</a>(n1, -n2);
+<a name="l00046"></a>00046 } <span class="keywordflow">else</span> {
+<a name="l00047"></a>00047 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (n1data->mLength < n2data->mLength) std::swap(n1data, n2data);
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 integer r;
+<a name="l00051"></a>00051 data_t *rdata=r._get_data();
+<a name="l00052"></a>00052 rdata->copy(n1data, 1);
+<a name="l00053"></a>00053 rdata->add(*n2data);
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> r;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00059"></a>00059 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>(), sign2=n2.sign();
<a name="l00060"></a>00060 <span class="keywordflow">if</span> (sign1 != sign2) {
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> n2;
-<a name="l00062"></a>00062 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> n1;
-<a name="l00063"></a>00063 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(n1, -n2);
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (sign1 == 0) <span class="keywordflow">return</span> -n2;
+<a name="l00062"></a>00062 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">return</span> n1;
+<a name="l00063"></a>00063 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">add</a>(n1, -n2);
<a name="l00064"></a>00064 } <span class="keywordflow">else</span> {
-<a name="l00065"></a>00065 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
-<a name="l00066"></a>00066 <span class="keywordflow">if</span> (n1data->mLength < n2data->mLength) std::swap(n1data, n2data);
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 integer r;
-<a name="l00069"></a>00069 data_t *rdata=r._get_data();
-<a name="l00070"></a>00070 rdata->copy(n1data, 1);
-<a name="l00071"></a>00071 rdata->add(*n2data);
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> r;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00082"></a>00082 integer <a class="code" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
-<a name="l00083"></a>00083 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>(), sign2=n2.sign();
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (sign1 != sign2) {
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (sign1 == 0) <span class="keywordflow">return</span> -n2;
-<a name="l00086"></a>00086 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">return</span> n1;
-<a name="l00087"></a>00087 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(n1, -n2);
-<a name="l00088"></a>00088 } <span class="keywordflow">else</span> {
-<a name="l00089"></a>00089 <span class="keywordtype">bool</span> invert=(sign1 == (n1 < n2 ? 1 : -1));
-<a name="l00090"></a>00090 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (invert) std::swap(n1data, n2data);
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 integer r;
-<a name="l00094"></a>00094 data_t *rdata=r._get_data();
-<a name="l00095"></a>00095 rdata->copy(n1data);
-<a name="l00096"></a>00096 rdata->subtract(*n2data);
-<a name="l00097"></a>00097 <span class="keywordflow">return</span> (invert ? -r : r);
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100
-<a name="l00111"></a>00111 integer <a class="code" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
-<a name="l00112"></a>00112 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>(), bysign=by.sign();
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (nsign==0 || bysign==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keyword">const</span> data_t *ndata=n._get_data(), *bydata=by._get_data();
-<a name="l00116"></a>00116 <span class="keywordflow">if</span> (ndata == bydata) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(n);
+<a name="l00065"></a>00065 <span class="keywordtype">bool</span> invert=(sign1 == (n1 < n2 ? 1 : -1));
+<a name="l00066"></a>00066 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (invert) std::swap(n1data, n2data);
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 integer r;
+<a name="l00070"></a>00070 data_t *rdata=r._get_data();
+<a name="l00071"></a>00071 rdata->copy(n1data);
+<a name="l00072"></a>00072 rdata->subtract(*n2data);
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> (invert ? -r : r);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
+<a name="l00078"></a>00078 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>(), bysign=by.sign();
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (nsign==0 || bysign==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keyword">const</span> data_t *ndata=n._get_data(), *bydata=by._get_data();
+<a name="l00082"></a>00082 <span class="keywordflow">if</span> (ndata == bydata) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">sqr</a>(n);
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084 <span class="comment">// In multiplication, we know that the answer will be less than or equal to</span>
+<a name="l00085"></a>00085 <span class="comment">// the sum of the lengths of the operands.</span>
+<a name="l00086"></a>00086 integer answer;
+<a name="l00087"></a>00087 data_t *answerdata=answer._get_data();
+<a name="l00088"></a>00088 answerdata->alloc(ndata->mLength + bydata->mLength);
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="comment">// Now multiply the digits, starting at the least-significant digit.</span>
+<a name="l00091"></a>00091 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1 = ndata->digits, *d1e = d1 + ndata->mLength;
+<a name="l00092"></a>00092 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2e = bydata->digits + bydata->mLength;
+<a name="l00093"></a>00093 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit1=0; d1<d1e; ++digit1, ++d1) {
+<a name="l00094"></a>00094 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2=bydata->digits;
+<a name="l00095"></a>00095 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit2=0; d2<d2e; ++digit2, ++d2) {
+<a name="l00096"></a>00096 <span class="comment">// First multiply the two digits</span>
+<a name="l00097"></a>00097 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*d1) * *d2;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="comment">// Now add the result to the answer.</span>
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> carry=0;
+<a name="l00101"></a>00101 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *a = answerdata->digits + digit1 + digit2;
+<a name="l00102"></a>00102 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> addt=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*a) + (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1;
+<a name="l00104"></a>00104 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 addt=*a + ((t >> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) + carry;
+<a name="l00107"></a>00107 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1; <span class="keywordflow">else</span> carry=0;
+<a name="l00108"></a>00108 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="keywordflow">while</span> (carry) {
+<a name="l00111"></a>00111 addt=*a+1;
+<a name="l00112"></a>00112 *a++ = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (addt < <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) <span class="keywordflow">break</span>;
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 }
<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="comment">// In multiplication, we know that the answer will be less than or equal to</span>
-<a name="l00119"></a>00119 <span class="comment">// the sum of the lengths of the operands.</span>
-<a name="l00120"></a>00120 integer answer;
-<a name="l00121"></a>00121 data_t *answerdata=answer._get_data();
-<a name="l00122"></a>00122 answerdata->alloc(ndata->mLength + bydata->mLength);
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="comment">// Now multiply the digits, starting at the least-significant digit.</span>
-<a name="l00125"></a>00125 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1 = ndata->digits, *d1e = d1 + ndata->mLength;
-<a name="l00126"></a>00126 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2e = bydata->digits + bydata->mLength;
-<a name="l00127"></a>00127 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit1=0; d1<d1e; ++digit1, ++d1) {
-<a name="l00128"></a>00128 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2=bydata->digits;
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit2=0; d2<d2e; ++digit2, ++d2) {
-<a name="l00130"></a>00130 <span class="comment">// First multiply the two digits</span>
-<a name="l00131"></a>00131 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*d1) * *d2;
+<a name="l00118"></a>00118 answer._set_negative(nsign != bysign);
+<a name="l00119"></a>00119 answer._get_data()->skipLeadingZeros();
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> answer;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="keyword">namespace </span>{
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 std::pair<integer, integer> divideBySingleDigit(<span class="keyword">const</span> integer& d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2) {
+<a name="l00126"></a>00126 <span class="keyword">const</span> data_t *d1data=d1._get_data();
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 integer quotient, remainder;
+<a name="l00129"></a>00129 data_t *qdata=quotient._get_data(), *rdata=remainder._get_data();
+<a name="l00130"></a>00130 qdata->alloc(d1data->mLength);
+<a name="l00131"></a>00131 rdata->alloc(1);
<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// Now add the result to the answer.</span>
-<a name="l00134"></a>00134 <span class="keywordtype">int</span> carry=0;
-<a name="l00135"></a>00135 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *a = answerdata->digits + digit1 + digit2;
-<a name="l00136"></a>00136 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> addt=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*a) + (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1;
-<a name="l00138"></a>00138 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 addt=*a + ((t >> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) + carry;
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (addt >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) carry=1; <span class="keywordflow">else</span> carry=0;
-<a name="l00142"></a>00142 *a++=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keywordflow">while</span> (carry) {
-<a name="l00145"></a>00145 addt=*a+1;
-<a name="l00146"></a>00146 *a++ = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(addt);
-<a name="l00147"></a>00147 <span class="keywordflow">if</span> (addt < <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) <span class="keywordflow">break</span>;
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 answer._set_negative(nsign != bysign);
-<a name="l00153"></a>00153 answer._get_data()->skipLeadingZeros();
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> answer;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keyword">namespace </span>{
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 std::pair<integer, integer> divideBySingleDigit(<span class="keyword">const</span> integer& d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2) {
-<a name="l00160"></a>00160 <span class="keyword">const</span> data_t *d1data=d1._get_data();
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 integer quotient, remainder;
-<a name="l00163"></a>00163 data_t *qdata=quotient._get_data(), *rdata=remainder._get_data();
-<a name="l00164"></a>00164 qdata->alloc(d1data->mLength);
-<a name="l00165"></a>00165 rdata->alloc(1);
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> a=0;
-<a name="l00168"></a>00168 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> lomask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
-<a name="l00169"></a>00169 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> himask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00133"></a>00133 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> a=0;
+<a name="l00134"></a>00134 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> lomask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
+<a name="l00135"></a>00135 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> himask(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 <span class="keywordtype">int</span> m = int(d1data->mLength) - 1;
+<a name="l00138"></a>00138 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1p=d1data->digits+m;
+<a name="l00139"></a>00139 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *qp=qdata->digits+m;
+<a name="l00140"></a>00140 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = m; i >= 0; --i, --d1p, --qp) {
+<a name="l00141"></a>00141 a = (a & ~lomask) | *d1p;
+<a name="l00142"></a>00142 *qp = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(a / d2);
+<a name="l00143"></a>00143 a = (a & ~himask) | ((a % d2) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145 rdata->digits[0] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>((a & himask) >>
+<a name="l00146"></a>00146 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 qdata->skipLeadingZeros();
+<a name="l00149"></a>00149 rdata->skipLeadingZeros();
+<a name="l00150"></a>00150 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 std::pair<integer, integer> subDivide(integer d1, integer d2) {
+<a name="l00154"></a>00154 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *byDigits = d2._get_data()->digits;
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 <span class="comment">// The normalization step</span>
+<a name="l00157"></a>00157 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> /
+<a name="l00158"></a>00158 (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(byDigits[d2._get_length()-1])+1));
+<a name="l00159"></a>00159 <span class="keywordflow">if</span> (d > 1) {
+<a name="l00160"></a>00160 d1 *= d;
+<a name="l00161"></a>00161 d2 *= d;
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="comment">// Gotta reset this</span>
+<a name="l00164"></a>00164 byDigits = d2._get_data()->digits;
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 assert(d2._get_digit(d2._get_length()-1) >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> / 2);
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 integer quotient, r(d1);
+<a name="l00169"></a>00169 data_t *qdata=quotient._get_data();
<a name="l00170"></a>00170
-<a name="l00171"></a>00171 <span class="keywordtype">int</span> m = int(d1data->mLength) - 1;
-<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1p=d1data->digits+m;
-<a name="l00173"></a>00173 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *qp=qdata->digits+m;
-<a name="l00174"></a>00174 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = m; i >= 0; --i, --d1p, --qp) {
-<a name="l00175"></a>00175 a = (a & ~lomask) | *d1p;
-<a name="l00176"></a>00176 *qp = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(a / d2);
-<a name="l00177"></a>00177 a = (a & ~himask) | ((a % d2) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179 rdata->digits[0] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>((a & himask) >>
-<a name="l00180"></a>00180 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 qdata->skipLeadingZeros();
-<a name="l00183"></a>00183 rdata->skipLeadingZeros();
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 std::pair<integer, integer> subDivide(integer d1, integer d2) {
-<a name="l00188"></a>00188 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *byDigits = d2._get_data()->digits;
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="comment">// The normalization step</span>
-<a name="l00191"></a>00191 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> /
-<a name="l00192"></a>00192 (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(byDigits[d2._get_length()-1])+1));
-<a name="l00193"></a>00193 <span class="keywordflow">if</span> (d > 1) {
-<a name="l00194"></a>00194 d1 *= d;
-<a name="l00195"></a>00195 d2 *= d;
+<a name="l00171"></a>00171 <span class="keywordtype">size_t</span> n=d2._get_length(), m=d1._get_length() - n;
+<a name="l00172"></a>00172 <span class="keywordtype">size_t</span> i=m+n, j=m;
+<a name="l00173"></a>00173 qdata->alloc(j+1);
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 r._make_unique();
+<a name="l00176"></a>00176 <span class="keywordflow">do</span> {
+<a name="l00177"></a>00177 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> ri=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(r._get_digit(i, <span class="keyword">true</span>))
+<a name="l00178"></a>00178 << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-1, <span class="keyword">true</span>);
+<a name="l00179"></a>00179 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> q=(std::min<doubledigit_t>)(ri / byDigits[n-1], <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keywordflow">while</span> (1) {
+<a name="l00182"></a>00182 <span class="comment">// We need three digits here, a doubledigit_t won't suffice.</span>
+<a name="l00183"></a>00183 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> r2a=ri - (q * byDigits[n-1]);
+<a name="l00184"></a>00184 integer r2=(integer(r2a) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-2);
+<a name="l00185"></a>00185 <span class="keywordflow">if</span> (byDigits[n-2] * q <= r2) <span class="keywordflow">break</span>;
+<a name="l00186"></a>00186 --q;
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 integer bq=d2*q;
+<a name="l00190"></a>00190 <span class="keywordflow">if</span> (r < bq) { --q; bq -= d2; }
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 integer rtemp((r >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * (i-n))) - bq);
+<a name="l00193"></a>00193 data_t *rdata=r._get_data();
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *rdigits=rdata->digits;
<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="comment">// Gotta reset this</span>
-<a name="l00198"></a>00198 byDigits = d2._get_data()->digits;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200 assert(d2._get_digit(d2._get_length()-1) >= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> / 2);
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 integer quotient, r(d1);
-<a name="l00203"></a>00203 data_t *qdata=quotient._get_data();
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="keywordtype">size_t</span> n=d2._get_length(), m=d1._get_length() - n;
-<a name="l00206"></a>00206 <span class="keywordtype">size_t</span> i=m+n, j=m;
-<a name="l00207"></a>00207 qdata->alloc(j+1);
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209 r._make_unique();
-<a name="l00210"></a>00210 <span class="keywordflow">do</span> {
-<a name="l00211"></a>00211 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> ri=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(r._get_digit(i, <span class="keyword">true</span>))
-<a name="l00212"></a>00212 << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-1, <span class="keyword">true</span>);
-<a name="l00213"></a>00213 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> q=(std::min<doubledigit_t>)(ri / byDigits[n-1], <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>);
+<a name="l00197"></a>00197 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<=n && i-n+x < rdata->mLength; ++x)
+<a name="l00198"></a>00198 rdigits[i-n+x]=rtemp._get_digit(x, <span class="keyword">true</span>);
+<a name="l00199"></a>00199 rdata->skipLeadingZeros();
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 qdata->digits[j--]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(q);
+<a name="l00202"></a>00202 } <span class="keywordflow">while</span> (--i >= n);
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 qdata->skipLeadingZeros();
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <span class="keywordflow">if</span> (d > 1) {
+<a name="l00207"></a>00207 <span class="comment">// Denormalization step. This requires a division by a single digit_t.</span>
+<a name="l00208"></a>00208 integer remainder=divideBySingleDigit(r, d).first;
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
+<a name="l00210"></a>00210 } <span class="keywordflow">else</span> {
+<a name="l00211"></a>00211 <span class="keywordflow">return</span> std::make_pair(quotient, r);
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213 }
<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="keywordflow">while</span> (1) {
-<a name="l00216"></a>00216 <span class="comment">// We need three digits here, a doubledigit_t won't suffice.</span>
-<a name="l00217"></a>00217 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> r2a=ri - (q * byDigits[n-1]);
-<a name="l00218"></a>00218 integer r2=(integer(r2a) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>) + r._get_digit(i-2);
-<a name="l00219"></a>00219 <span class="keywordflow">if</span> (byDigits[n-2] * q <= r2) <span class="keywordflow">break</span>;
-<a name="l00220"></a>00220 --q;
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 integer bq=d2*q;
-<a name="l00224"></a>00224 <span class="keywordflow">if</span> (r < bq) { --q; bq -= d2; }
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 integer rtemp((r >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * (i-n))) - bq);
-<a name="l00227"></a>00227 data_t *rdata=r._get_data();
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *rdigits=rdata->digits;
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<=n && i-n+x < rdata->mLength; ++x)
-<a name="l00232"></a>00232 rdigits[i-n+x]=rtemp._get_digit(x, <span class="keyword">true</span>);
-<a name="l00233"></a>00233 rdata->skipLeadingZeros();
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 qdata->digits[j--]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(q);
-<a name="l00236"></a>00236 } <span class="keywordflow">while</span> (--i >= n);
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 qdata->skipLeadingZeros();
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240 <span class="keywordflow">if</span> (d > 1) {
-<a name="l00241"></a>00241 <span class="comment">// Denormalization step. This requires a division by a single digit_t.</span>
-<a name="l00242"></a>00242 integer remainder=divideBySingleDigit(r, d).first;
-<a name="l00243"></a>00243 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
-<a name="l00244"></a>00244 } <span class="keywordflow">else</span> {
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> std::make_pair(quotient, r);
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 } <span class="comment">// namespace</span>
-<a name="l00250"></a>00250
-<a name="l00259"></a>00259 integer <a class="code" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
-<a name="l00260"></a>00260 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(dividend, divisor).first;
-<a name="l00261"></a>00261 }
-<a name="l00262"></a>00262
-<a name="l00277"></a>00277 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span>
-<a name="l00278"></a>00278 integer& d2)
-<a name="l00279"></a>00279 {
-<a name="l00280"></a>00280 <span class="keywordtype">int</span> sign1=d1.sign(), sign2=d2.sign();
-<a name="l00281"></a>00281 <span class="keywordflow">if</span> (sign2==0) {
-<a name="l00282"></a>00282 <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> divide_by_zero();
-<a name="l00283"></a>00283 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::make_pair(integer(not_a_number()), integer(not_a_number()));
+<a name="l00215"></a>00215 } <span class="comment">// namespace</span>
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">divide_r</a>(dividend, divisor).first;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span> integer& d2) {
+<a name="l00222"></a>00222 <span class="keywordtype">int</span> sign1=d1.sign(), sign2=d2.sign();
+<a name="l00223"></a>00223 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">throw</span> divide_by_zero();
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 <span class="keywordtype">int</span> comp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(d1, d2, <span class="keyword">true</span>);
+<a name="l00226"></a>00226 <span class="keywordflow">if</span> (comp<0) {
+<a name="l00227"></a>00227 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(), d1);
+<a name="l00228"></a>00228 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp==0) {
+<a name="l00229"></a>00229 <span class="keywordflow">return</span> std::make_pair(sign1 != sign2 ? <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() : integer(-1),
+<a name="l00230"></a>00230 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>());
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (sign1 < 0 && sign2 < 0) {
+<a name="l00234"></a>00234 std::pair<integer, integer> a=subDivide(-d1, -d2);
+<a name="l00235"></a>00235 a.second._set_negative(<span class="keyword">true</span>);
+<a name="l00236"></a>00236 <span class="keywordflow">return</span> a;
+<a name="l00237"></a>00237 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 < 0) {
+<a name="l00238"></a>00238 std::pair<integer, integer> a=subDivide(-d1, d2);
+<a name="l00239"></a>00239 a.first._set_negative(<span class="keyword">true</span>);
+<a name="l00240"></a>00240 a.second._set_negative(<span class="keyword">true</span>);
+<a name="l00241"></a>00241 <span class="keywordflow">return</span> a;
+<a name="l00242"></a>00242 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 < 0) {
+<a name="l00243"></a>00243 std::pair<integer, integer> a=subDivide(d1, -d2);
+<a name="l00244"></a>00244 a.first._set_negative(<span class="keyword">true</span>);
+<a name="l00245"></a>00245 <span class="keywordflow">return</span> a;
+<a name="l00246"></a>00246 };
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (d2._get_data()->mLength == 1) {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> divideBySingleDigit(d1, d2._get_data()->digits[0]);
+<a name="l00250"></a>00250 } <span class="keywordflow">else</span> {
+<a name="l00251"></a>00251 <span class="keywordflow">return</span> subDivide(d1, d2);
+<a name="l00252"></a>00252 }
+<a name="l00253"></a>00253 }
+<a name="l00254"></a>00254
+<a name="l00255"></a>00255 } <span class="comment">// namespace core</span>
+<a name="l00256"></a>00256
+<a name="l00263"></a>00263 integer <a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00264"></a>00264 <span class="keywordflow">try</span> {
+<a name="l00265"></a>00265 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(core::integer(n)));
+<a name="l00266"></a>00266 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00267"></a>00267 <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="l00268"></a>00268 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00269"></a>00269 }
+<a name="l00270"></a>00270 }
+<a name="l00271"></a>00271
+<a name="l00278"></a>00278 integer <a class="code" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00279"></a>00279 <span class="keywordflow">try</span> {
+<a name="l00280"></a>00280 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(core::integer(n)));
+<a name="l00281"></a>00281 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00282"></a>00282 <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="l00283"></a>00283 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286 <span class="keywordtype">int</span> comp=<a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(d1, d2, <span class="keyword">true</span>);
-<a name="l00287"></a>00287 <span class="keywordflow">if</span> (comp<0) {
-<a name="l00288"></a>00288 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>(), d1);
-<a name="l00289"></a>00289 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp==0) {
-<a name="l00290"></a>00290 <span class="keywordflow">return</span> std::make_pair(sign1 != sign2 ? <a class="code" href="classboost_1_1xint_1_1integer.html#aa332681715634b73118ffe76090a75d3">integer::one</a>() : integer(-1),
-<a name="l00291"></a>00291 <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>());
-<a name="l00292"></a>00292 }
-<a name="l00293"></a>00293
-<a name="l00294"></a>00294 <span class="keywordflow">if</span> (sign1 < 0 && sign2 < 0) {
-<a name="l00295"></a>00295 std::pair<integer, integer> a=subDivide(-d1, -d2);
-<a name="l00296"></a>00296 a.second._set_negative(<span class="keyword">true</span>);
-<a name="l00297"></a>00297 <span class="keywordflow">return</span> a;
-<a name="l00298"></a>00298 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 < 0) {
-<a name="l00299"></a>00299 std::pair<integer, integer> a=subDivide(-d1, d2);
-<a name="l00300"></a>00300 a.first._set_negative(<span class="keyword">true</span>);
-<a name="l00301"></a>00301 a.second._set_negative(<span class="keyword">true</span>);
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> a;
-<a name="l00303"></a>00303 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 < 0) {
-<a name="l00304"></a>00304 std::pair<integer, integer> a=subDivide(d1, -d2);
-<a name="l00305"></a>00305 a.first._set_negative(<span class="keyword">true</span>);
-<a name="l00306"></a>00306 <span class="keywordflow">return</span> a;
-<a name="l00307"></a>00307 };
-<a name="l00308"></a>00308
-<a name="l00309"></a>00309 <span class="keywordflow">if</span> (d2._get_data()->mLength == 1) {
-<a name="l00310"></a>00310 <span class="keywordflow">return</span> divideBySingleDigit(d1, d2._get_data()->digits[0]);
-<a name="l00311"></a>00311 } <span class="keywordflow">else</span> {
-<a name="l00312"></a>00312 <span class="keywordflow">return</span> subDivide(d1, d2);
-<a name="l00313"></a>00313 }
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315
-<a name="l00316"></a>00316 } <span class="comment">// namespace xint</span>
-<a name="l00317"></a>00317 } <span class="comment">// namespace boost</span>
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286
+<a name="l00293"></a>00293 integer <a class="code" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00294"></a>00294 <span class="keywordflow">try</span> {
+<a name="l00295"></a>00295 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(core::integer(n1), core::integer(n2)));
+<a name="l00296"></a>00296 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00297"></a>00297 <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="l00298"></a>00298 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00299"></a>00299 }
+<a name="l00300"></a>00300 }
+<a name="l00301"></a>00301
+<a name="l00308"></a>00308 integer <a class="code" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00309"></a>00309 <span class="keywordflow">try</span> {
+<a name="l00310"></a>00310 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(core::integer(n1), core::integer(n2)));
+<a name="l00311"></a>00311 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00312"></a>00312 <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="l00313"></a>00313 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315 }
+<a name="l00316"></a>00316
+<a name="l00327"></a>00327 integer <a class="code" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
+<a name="l00328"></a>00328 <span class="keywordflow">try</span> {
+<a name="l00329"></a>00329 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(core::integer(n), core::integer(by)));
+<a name="l00330"></a>00330 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00331"></a>00331 <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="l00332"></a>00332 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00333"></a>00333 }
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335
+<a name="l00344"></a>00344 integer <a class="code" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
+<a name="l00345"></a>00345 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(dividend, divisor).first;
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347
+<a name="l00362"></a>00362 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span> integer& d2) {
+<a name="l00363"></a>00363 <span class="keywordflow">try</span> {
+<a name="l00364"></a>00364 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(core::integer(d1), core::integer(d2));
+<a name="l00365"></a>00365 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00366"></a>00366 <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="l00367"></a>00367 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>(), <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>());
+<a name="l00368"></a>00368 }
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 } <span class="comment">// namespace xint</span>
+<a name="l00372"></a>00372 } <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
+<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
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
Copied: sandbox/xint/doc/r__core_8dox.html (from r61110, /sandbox/xint/doc/random_8dox.html)
==============================================================================
--- /sandbox/xint/doc/random_8dox.html (original)
+++ sandbox/xint/doc/r__core_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/doc/dox/random.dox File Reference</title>
+<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/doc/dox/r_core.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,10 +26,10 @@
</div>
</div>
<div class="contents">
-<h1>/home/chad/projects/xint/doc/dox/random.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<h1>/home/chad/projects/xint/doc/dox/r_core.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
+<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
<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/r__cow_8dox.html
==============================================================================
--- sandbox/xint/doc/r__cow_8dox.html (original)
+++ sandbox/xint/doc/r__cow_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_cow.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r__default__necessary_8dox.html
==============================================================================
--- sandbox/xint/doc/r__default__necessary_8dox.html (original)
+++ sandbox/xint/doc/r__default__necessary_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_default_necessary.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
Copied: sandbox/xint/doc/r__exception__blocking_8dox.html (from r61110, /sandbox/xint/doc/copyonwrite_8dox.html)
==============================================================================
--- /sandbox/xint/doc/copyonwrite_8dox.html (original)
+++ sandbox/xint/doc/r__exception__blocking_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/doc/dox/copyonwrite.dox File Reference</title>
+<title>The Extended Integer (XInt) Library: /home/chad/projects/xint/doc/dox/r_exception_blocking.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -26,10 +26,10 @@
</div>
</div>
<div class="contents">
-<h1>/home/chad/projects/xint/doc/dox/copyonwrite.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
+<h1>/home/chad/projects/xint/doc/dox/r_exception_blocking.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
+<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
<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/r__insecure__default_8dox.html
==============================================================================
--- sandbox/xint/doc/r__insecure__default_8dox.html (original)
+++ sandbox/xint/doc/r__insecure__default_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_insecure_default.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r__interface_8dox.html
==============================================================================
--- sandbox/xint/doc/r__interface_8dox.html (original)
+++ sandbox/xint/doc/r__interface_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_interface.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r__interface__design__only_8dox.html
==============================================================================
--- sandbox/xint/doc/r__interface__design__only_8dox.html (original)
+++ sandbox/xint/doc/r__interface__design__only_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_interface_design_only.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r__nan_8dox.html
==============================================================================
--- sandbox/xint/doc/r__nan_8dox.html (original)
+++ sandbox/xint/doc/r__nan_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_nan.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r__negzero_8dox.html
==============================================================================
--- sandbox/xint/doc/r__negzero_8dox.html (original)
+++ sandbox/xint/doc/r__negzero_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_negzero.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r__random_8dox.html
==============================================================================
--- sandbox/xint/doc/r__random_8dox.html (original)
+++ sandbox/xint/doc/r__random_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_random.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r__shared__ptr_8dox.html
==============================================================================
--- sandbox/xint/doc/r__shared__ptr_8dox.html (original)
+++ sandbox/xint/doc/r__shared__ptr_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/r_shared_ptr.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r_core.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/r_core.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,40 @@
+<!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: What's with the \c core namespace?</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 class="current">Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="index.html">The Extended Integer (XInt) Library</a> » <a class="el" href="rationale.html">Rationales</a>
+ </div>
+</div>
+<div class="contents">
+
+
+<h1><a class="anchor" id="r_core">What's with the <code>core</code> namespace? </a></h1><p>Several people on the Boost developers' mailing list expressed reservations about the exception-blocking mechanism and the Not-a-Number value. After a spirited debate, two indisputable points emerged:</p>
+<ul>
+<li>The existence of a Not-a-Number value forced every function to check its parameters for it.</li>
+<li>The exception blocking mechanism would cause problems with any library built on this one, such as the arbitrary-precision real type that I'm certain someone will build.</li>
+</ul>
+<p>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 <code>xint::core</code> namespace.</p>
+<p>Functions in the <code>core</code> namespace will always throw an exception on any error, and will only call other functions within the <code>core</code> namespace. That ensures that the Not-a-Number value only needs to be checked for in the <code>xint::core::integer</code> 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.</p>
+<p>Every function in the <code>xint</code> namespace calls its <code>core</code> counterpart in a try/catch construct, allowing it to intercept any exceptions and either pass them through (if exceptions are allowed) or take some alternate action, such as returning a Not-a-Number value. That preserves the exception-blocking feature as well. </p>
+</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
+<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/r_cow.html
==============================================================================
--- sandbox/xint/doc/r_cow.html (original)
+++ sandbox/xint/doc/r_cow.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -27,7 +27,7 @@
<h1><a class="anchor" id="r_cow">Why use copy-on-write? I've heard that causes problems with multi-threaded code. </a></h1><p>It's the best way I found to return large <code>integer</code> objects from functions efficiently. Some of these numbers can get huge, and move semantics aren't yet in the current standard. (Once they are, I'll consider removing the copy-on-write stuff.) It is also more CPU- and memory-efficient.</p>
<p>It <em>does</em> cause problems when you try to use the library from multiple threads at the same time. To deal with that, the library can be compiled in a <a class="el" href="threadsafe.html">thread-safe mode</a>, which ensures that every <code>integer</code> gets its own unique storage, among other things. You still have to ensure that only one thread accesses a particular <code>integer</code> at a time. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r_default_necessary.html
==============================================================================
--- sandbox/xint/doc/r_default_necessary.html (original)
+++ sandbox/xint/doc/r_default_necessary.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_default_necessary">Okay, then why not make the developer provide one? </a></h1><p>Ease-of-use, and the fact that for many developers, there's little need for cryptographically-secure random numbers. This way, those that need them can take a few simple steps to get them, and those that don't can just use the library as-is. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
Copied: sandbox/xint/doc/r_exception_blocking.html (from r61110, /sandbox/xint/doc/r_shared_ptr.html)
==============================================================================
--- /sandbox/xint/doc/r_shared_ptr.html (original)
+++ sandbox/xint/doc/r_exception_blocking.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Why are you using a roll-your-own system instead of \c boost::shared_ptr for the copy-on-write stuff?</title>
+<title>The Extended Integer (XInt) Library: Why have an exception-blocking system at all? Exceptions are standard C++!</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
@@ -24,9 +24,11 @@
<div class="contents">
-<h1><a class="anchor" id="r_shared_ptr">Why are you using a roll-your-own system instead of <code>boost::shared_ptr</code> for the copy-on-write stuff? </a></h1><p>Because it's a lot faster. I tried <code>boost::shared_ptr</code>, and under Linux with GCC 4.4.1 on the same computer, running my test suite went from 1.6 seconds to 3.4 seconds. The home-grown shared pointer design may not be quite as easy to work with in an exception-safe manner, but that's completely internal to the <code>integer</code> class, so only developers working <em>on</em> the library, rather than <em>with</em> it, have to deal with that. I'll accept that trade-off. </p>
+<h1><a class="anchor" id="r_exception_blocking">Why have an exception-blocking system at all? Exceptions are standard C++! </a></h1><p>Yes, they are, but there are a number of people that dislike them intensely and won't use any library that forces its users to deal with them. But that is not the primary motivation for the exception-blocking mechanism.</p>
+<p>There are also times when exception-handling can get in the way of writing code that is easily understandable by other people. Any software developer understands calling a function and checking the return value to see if there was an error; it's a standard idiom in essentially any programming language, and it's even widely used in the C++ Standard Template Library (see std::string::find, for just one example).</p>
+<p>Writing code that is <em>human-readable</em> -- not just machine-readable -- is difficult, and there's little that anyone can do to change that. But this library's exception-blocking mechanism makes it easier to produce such code, with very little effort, by giving the developer a choice: exceptions, error codes, or both, whatever makes for the most readable and understandable code. </p>
</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
+<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
<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/r_insecure_default.html
==============================================================================
--- sandbox/xint/doc/r_insecure_default.html (original)
+++ sandbox/xint/doc/r_insecure_default.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_insecure_default">But why default to an insecure random number generator? Why not default to the secure one? </a></h1><p>Because the secure one isn't available on all systems. If I relied on <code>random_device</code> as a default, the library wouldn't compile under those systems. If I used <code>xint::strong_random_generator</code>, it would compile, but would always fail on 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
+<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
<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/r_interface.html
==============================================================================
--- sandbox/xint/doc/r_interface.html (original)
+++ sandbox/xint/doc/r_interface.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<dd>
n1744: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1744.pdf </dd></dl>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r_interface_design_only.html
==============================================================================
--- sandbox/xint/doc/r_interface_design_only.html (original)
+++ sandbox/xint/doc/r_interface_design_only.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -31,7 +31,7 @@
<li>It does not, at present, implement a multiplication scheme with better performance than the "basecase" mentioned in section 3.4 of n1692, primarily because I haven't had the time to research all of them yet. I suspect that most people using the library will usually be using numbers below the threshold where the more exotic algorithms are faster, but I plan to add at least one of them in the future, maybe several. </li>
</ul>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/r_nan.html
==============================================================================
--- sandbox/xint/doc/r_nan.html (original)
+++ sandbox/xint/doc/r_nan.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_nan">Why have a Not-a-Number value? </a></h1><p>Because it's the cleanest way I could find to return answers that don't represent a valid <code>integer</code>, which is necessary for the exception-blocking mechanism. </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
+<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
<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/r_negzero.html
==============================================================================
--- sandbox/xint/doc/r_negzero.html (original)
+++ sandbox/xint/doc/r_negzero.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -28,7 +28,7 @@
<p>The mathematical concept of zero has no sign. It's neither positive nor negative (or if you prefer, it's both). The concept of a signed zero is used in floating-point numbers to represent a value that's so small that it can't be distinguished from zero, but which may not be an actual zero. Such a non-zero number does have a sign. But mathematically, a negative zero is simply zero.</p>
<p>The concept of infinity (in either direction) comes up very rarely in an integer library. Since infinity is a concept, not a countable value, it's simply represented by the Not-a-Number value in the few places that it might be needed. </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
+<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
<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/r_random.html
==============================================================================
--- sandbox/xint/doc/r_random.html (original)
+++ sandbox/xint/doc/r_random.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_random">Why did you implement your own random number generator? You should use Boost.Random instead. </a></h1><p>Boost.Random provides <code>boost::random_device</code> to tap into the operating system's strong random number generator, but at the time of this writing, the official released version only defines it for Linux and BSD systems. The current maintainer, Steven Watanabe, says that he has just added Windows compatibility to it, so the xint::strong_random_generator class will likely be reduced to a typedef for <code>boost::random_device</code>, or a thin shell around it, in the near future. </p>
</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
+<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
<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/r_shared_ptr.html
==============================================================================
--- sandbox/xint/doc/r_shared_ptr.html (original)
+++ sandbox/xint/doc/r_shared_ptr.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="r_shared_ptr">Why are you using a roll-your-own system instead of <code>boost::shared_ptr</code> for the copy-on-write stuff? </a></h1><p>Because it's a lot faster. I tried <code>boost::shared_ptr</code>, and under Linux with GCC 4.4.1 on the same computer, running my test suite went from 1.6 seconds to 3.4 seconds. The home-grown shared pointer design may not be quite as easy to work with in an exception-safe manner, but that's completely internal to the <code>integer</code> class, so only developers working <em>on</em> the library, rather than <em>with</em> it, have to deal with that. I'll accept that trade-off. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/random.html
==============================================================================
--- sandbox/xint/doc/random.html (original)
+++ sandbox/xint/doc/random.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -28,7 +28,7 @@
<p>The XInt library provides a convenience class, xint::strong_random_generator, for both Windows and UNIX-derived systems. It will throw an exception of type xint::no_strong_random if you try to instantiate it on a system that does not have a strong random number generator.</p>
<p>See the code at the top of <a class="el" href="primes.html">the Prime Numbers page</a> for an example of how to use it. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/random_8cpp.html
==============================================================================
--- sandbox/xint/doc/random_8cpp.html (original)
+++ sandbox/xint/doc/random_8cpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -43,7 +43,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -51,10 +51,16 @@
<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">boost::xint::detail::set_random_generator</a> (base_random_generator *obj)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail::get_random</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
<br/><br/></div></td></tr>
@@ -66,7 +72,7 @@
<p>Definition in file <a class="el" href="random_8cpp_source.html">random.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
+<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
<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/random_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/random_8cpp_source.html (original)
+++ sandbox/xint/doc/random_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -196,42 +196,56 @@
<a name="l00180"></a>00180 <span class="comment">// Returns a positive (unless told otherwise) integer between zero and</span>
<a name="l00181"></a>00181 <span class="comment">// (1<<bits)-1, inclusive</span>
<a name="l00182"></a>00182
-<a name="l00203"></a>00203 integer <a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
-<a name="l00204"></a>00204 can_be_negative)
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 <span class="keywordflow">if</span> (bits<=0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 generator_t randomGenerator;
-<a name="l00209"></a>00209 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cBitsPerIteration=std::numeric_limits<generator_t::result_type>::digits;
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <span class="comment">// Grab a set of random bits, of at least the specified size</span>
-<a name="l00212"></a>00212 <span class="keywordtype">size_t</span> iterations = (bits+cBitsPerIteration-1) / cBitsPerIteration;
-<a name="l00213"></a>00213 std::vector<generator_t::result_type> v;
-<a name="l00214"></a>00214 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<iterations; ++i) v.push_back(randomGenerator());
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="keyword">const</span> <span class="keywordtype">char</span> *vptr=(<span class="keyword">const</span> <span class="keywordtype">char</span> *)&v[0], *vptr_end=vptr+(v.size() * <span class="keyword">sizeof</span>(generator_t::result_type));
-<a name="l00217"></a>00217 integer p=<a class="code" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">from_binary</a>(std::string(vptr, vptr_end));
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <span class="comment">// Trim it to the proper length</span>
-<a name="l00220"></a>00220 <span class="keywordtype">size_t</span> index=(bits/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
-<a name="l00221"></a>00221 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>))-1;
-<a name="l00222"></a>00222 <span class="keywordflow">if</span> (mask==0) { mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>; --index; }
-<a name="l00223"></a>00223 p._get_data()->digits[index] &= mask;
-<a name="l00224"></a>00224 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i=p._get_data()->digits+index+1,
-<a name="l00225"></a>00225 *ie=p._get_data()->digits+p._get_data()->mLength; i<ie; ++i) *i=0;
-<a name="l00226"></a>00226 p._get_data()->skipLeadingZeros();
-<a name="l00227"></a>00227
-<a name="l00228"></a>00228 <span class="keywordflow">if</span> (high_bit_on) <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(p, bits-1);
-<a name="l00229"></a>00229 <span class="keywordflow">if</span> (low_bit_on) <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(p, 0);
-<a name="l00230"></a>00230 <span class="keywordflow">if</span> (can_be_negative) p._set_negative(randomGenerator() & 0x01);
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 <span class="keywordflow">return</span> p;
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 } <span class="comment">// namespace xint</span>
-<a name="l00236"></a>00236 } <span class="comment">// namespace boost</span>
+<a name="l00183"></a>00183 <span class="keyword">namespace </span>core {
+<a name="l00184"></a>00184 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
+<a name="l00185"></a>00185 can_be_negative)
+<a name="l00186"></a>00186 {
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (bits<=0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 generator_t randomGenerator;
+<a name="l00190"></a>00190 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cBitsPerIteration=std::numeric_limits<generator_t::result_type>::digits;
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="comment">// Grab a set of random bits, of at least the specified size</span>
+<a name="l00193"></a>00193 <span class="keywordtype">size_t</span> iterations = (bits+cBitsPerIteration-1) / cBitsPerIteration;
+<a name="l00194"></a>00194 std::vector<generator_t::result_type> v;
+<a name="l00195"></a>00195 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<iterations; ++i) v.push_back(randomGenerator());
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keyword">const</span> <span class="keywordtype">char</span> *vptr=(<span class="keyword">const</span> <span class="keywordtype">char</span> *)&v[0], *vptr_end=vptr+(v.size() * <span class="keyword">sizeof</span>(generator_t::result_type));
+<a name="l00198"></a>00198 integer p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">from_binary</a>(std::string(vptr, vptr_end));
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 <span class="comment">// Trim it to the proper length</span>
+<a name="l00201"></a>00201 <span class="keywordtype">size_t</span> index=(bits/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00202"></a>00202 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>))-1;
+<a name="l00203"></a>00203 <span class="keywordflow">if</span> (mask==0) { mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>; --index; }
+<a name="l00204"></a>00204 p._get_data()->digits[index] &= mask;
+<a name="l00205"></a>00205 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i=p._get_data()->digits+index+1,
+<a name="l00206"></a>00206 *ie=p._get_data()->digits+p._get_data()->mLength; i<ie; ++i) *i=0;
+<a name="l00207"></a>00207 p._get_data()->skipLeadingZeros();
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (high_bit_on) <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">setbit</a>(p, bits-1);
+<a name="l00210"></a>00210 <span class="keywordflow">if</span> (low_bit_on) <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">setbit</a>(p, 0);
+<a name="l00211"></a>00211 <span class="keywordflow">if</span> (can_be_negative) p._set_negative(randomGenerator() & 0x01);
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> p;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 } <span class="comment">// namespace core</span>
+<a name="l00216"></a>00216
+<a name="l00237"></a>00237 integer <a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
+<a name="l00238"></a>00238 can_be_negative)
+<a name="l00239"></a>00239 {
+<a name="l00240"></a>00240 <span class="keywordflow">try</span> {
+<a name="l00241"></a>00241 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">core::random_by_size</a>(bits, high_bit_on, low_bit_on,
+<a name="l00242"></a>00242 can_be_negative));
+<a name="l00243"></a>00243 } <span class="keywordflow">catch</span> (std::exception&) {
+<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">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="l00249"></a>00249 } <span class="comment">// namespace xint</span>
+<a name="l00250"></a>00250 } <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
+<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
<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/random_8dox.html
==============================================================================
--- sandbox/xint/doc/random_8dox.html (original)
+++ sandbox/xint/doc/random_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/random.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/rationale.html
==============================================================================
--- sandbox/xint/doc/rationale.html (original)
+++ sandbox/xint/doc/rationale.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,6 +29,7 @@
<ul>
<li><a class="el" href="r_interface.html">Why did you do <em>X</em> in the interface?</a></li>
<li><a class="el" href="r_interface_design_only.html">Then why didn't you follow those exactly?</a></li>
+<li><a class="el" href="r_core.html">What's with the <code>core</code> namespace?</a></li>
</ul>
<h2><a class="anchor" id="scow">
Copy-on-Write</a></h2>
@@ -37,9 +38,10 @@
<li><a class="el" href="r_shared_ptr.html">Why are you using a roll-your-own system instead of <code>boost::shared_ptr</code> for the copy-on-write stuff?</a></li>
</ul>
<h2><a class="anchor" id="snan">
-Not-a-Number</a></h2>
+Not-a-Number and Exception Blocking</a></h2>
<ul>
<li><a class="el" href="r_nan.html">Why have a Not-a-Number value?</a></li>
+<li><a class="el" href="r_exception_blocking.html">Why have an exception-blocking system at all? Exceptions are standard C++!</a></li>
<li><a class="el" href="r_negzero.html">Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers?</a></li>
</ul>
<h2><a class="anchor" id="srandom">
@@ -50,7 +52,7 @@
<li><a class="el" href="r_default_necessary.html">Okay, then why not make the developer provide one?</a> </li>
</ul>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/rationale_8dox.html
==============================================================================
--- sandbox/xint/doc/rationale_8dox.html (original)
+++ sandbox/xint/doc/rationale_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/rationale.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/roots_8cpp.html
==============================================================================
--- sandbox/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/doc/roots_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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core::sqrt</a> (const integer &n)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
<br/><br/></div></td></tr>
@@ -52,7 +58,7 @@
<p>Definition in file <a class="el" href="roots_8cpp_source.html">roots.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
+<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
<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/roots_8cpp_source.html
==============================================================================
--- sandbox/xint/doc/roots_8cpp_source.html (original)
+++ sandbox/xint/doc/roots_8cpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -42,32 +42,40 @@
<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
<a name="l00022"></a>00022
-<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> integer& n) {
-<a name="l00034"></a>00034 <span class="keywordflow">if</span> (n.sign() < 0) {
-<a name="l00035"></a>00035 <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> cannot_represent(<span class="stringliteral">"library cannot "</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"represent imaginary values (tried to take sqrt of negative "</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"number)"</span>);
-<a name="l00038"></a>00038 <span class="keywordflow">else</span> <span class="keywordflow">return</span> integer(not_a_number());
-<a name="l00039"></a>00039 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">integer::zero</a>();
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="comment">// Initial guess is half the length of n, in bits</span>
-<a name="l00042"></a>00042 integer guess;
-<a name="l00043"></a>00043 <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(guess, <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(n)/2);
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="comment">// Now refine it until we're as close as integers can get</span>
-<a name="l00046"></a>00046 <span class="keywordflow">while</span> (1) {
-<a name="l00047"></a>00047 integer guess2=(guess + (n/guess)) >> 1;
-<a name="l00048"></a>00048 <span class="keywordflow">if</span> (guess == guess2) <span class="keywordflow">break</span>;
-<a name="l00049"></a>00049 guess=guess2;
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="keywordflow">return</span> guess;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 } <span class="comment">// namespace xint</span>
-<a name="l00056"></a>00056 } <span class="comment">// namespace boost</span>
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>core {
+<a name="l00024"></a>00024 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">sqrt</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00025"></a>00025 <span class="keywordflow">if</span> (n.sign() < 0) <span class="keywordflow">throw</span> cannot_represent(<span class="stringliteral">"library cannot represent "</span>
+<a name="l00026"></a>00026 <span class="stringliteral">"imaginary values (tried to take sqrt of negative number)"</span>);
+<a name="l00027"></a>00027 <span class="keywordflow">if</span> (n.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="comment">// Initial guess is half the length of n, in bits</span>
+<a name="l00030"></a>00030 integer guess;
+<a name="l00031"></a>00031 <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">setbit</a>(guess, <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(n)/2);
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="comment">// Now refine it until we're as close as integers can get</span>
+<a name="l00034"></a>00034 <span class="keywordflow">while</span> (1) {
+<a name="l00035"></a>00035 integer guess2=(guess + (n/guess)) >> 1;
+<a name="l00036"></a>00036 <span class="keywordflow">if</span> (guess == guess2) <span class="keywordflow">break</span>;
+<a name="l00037"></a>00037 guess=guess2;
+<a name="l00038"></a>00038 }
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 <span class="keywordflow">return</span> guess;
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042 } <span class="comment">// namespace core</span>
+<a name="l00043"></a>00043
+<a name="l00054"></a>00054 integer <a class="code" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00055"></a>00055 <span class="keywordflow">try</span> {
+<a name="l00056"></a>00056 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6" title="Calculate the square root of an integer.">sqrt</a>(core::integer(n)));
+<a name="l00057"></a>00057 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00059"></a>00059 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 } <span class="comment">// namespace xint</span>
+<a name="l00064"></a>00064 } <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
+<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
<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/securemode.html
==============================================================================
--- sandbox/xint/doc/securemode.html (original)
+++ sandbox/xint/doc/securemode.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -28,7 +28,7 @@
<p>To enable it, define the preprocessor symbol <code>XINT_SECURE</code> when compiling the library. You don't need to define it when using the library, only when compiling it.</p>
<p>To see whether your copy was compiled with secure-mode enabled, use the xint::opt_secure_mode function. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/securemode_8dox.html
==============================================================================
--- sandbox/xint/doc/securemode_8dox.html (original)
+++ sandbox/xint/doc/securemode_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/securemode.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,38 @@
+<!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::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a>()=0</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+</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
+<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/structboost_1_1xint_1_1detail_1_1base__random__generator.gif
==============================================================================
Binary file. No diff available.
Added: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::detail::base_random_generator Struct 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_1detail.html">detail</a>::<a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail::base_random_generator Struct Reference</h1><!-- doxytag: class="boost::xint::detail::base_random_generator" -->
+<p>The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>.
+More...</p>
+
+<p><code>#include <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></code></p>
+<div class="dynheader">
+Inheritance diagram for boost::xint::detail::base_random_generator:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="structboost_1_1xint_1_1detail_1_1base__random__generator.gif" usemap="#boost::xint::detail::base_random_generator_map" alt=""/>
+ <map id="boost::xint::detail::base_random_generator_map" name="boost::xint::detail::base_random_generator_map">
+<area href="structboost_1_1xint_1_1detail_1_1random__generator.html" alt="boost::xint::detail::random_generator< T >" shape="rect" coords="0,56,247,80"/>
+</map>
+ </div>
+</div>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a></td></tr>
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">operator()</a> ()=0</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00080">80</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Member Typedef Documentation</h2>
+<a class="anchor" id="a9694aa7d11ac533581d530037f23fd0a"></a><!-- doxytag: member="boost::xint::detail::base_random_generator::result_type" ref="a9694aa7d11ac533581d530037f23fd0a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned int <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">boost::xint::detail::base_random_generator::result_type</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00081">81</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ae6981f9d0ce6b201c150a5c9c6066814"></a><!-- doxytag: member="boost::xint::detail::base_random_generator::operator()" ref="ae6981f9d0ce6b201c150a5c9c6066814" args="()=0" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> boost::xint::detail::base_random_generator::operator() </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [pure virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Implemented in <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">boost::xint::detail::random_generator< T ></a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</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
+<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/structboost_1_1xint_1_1detail_1_1data__t-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,59 @@
+<!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::detail::data_t Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(const data_t &addend)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(size_t digits, bool copydigits=false)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a>(const data_t *c, size_t extraDigits=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a91d6951498c6df25133e987c7d347c17">data_t</a>(data_t *c)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">quickset</a>(digit_t d1, digit_t d2=0, digit_t d3=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(size_t newdigits)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(size_t byBits)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(size_t byBits)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(const data_t &subtrahend)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(digit_t *p, size_t count)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+</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
+<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/structboost_1_1xint_1_1detail_1_1data__t.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,566 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::detail::data_t Struct 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_1detail.html">detail</a>::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail::data_t Struct Reference</h1><!-- doxytag: class="boost::xint::detail::data_t" -->
+<p>Holds the internal details of an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a>.
+More...</p>
+
+<p><code>#include <<a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>></code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">QuickDigits</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds information determining how many quick-digits to use. More...<br/></td></tr>
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial1=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial2=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial3=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a91d6951498c6df25133e987c7d347c17">data_t</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> *c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a> (size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, bool copydigits=false)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a> (size_t newdigits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a> (const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> *c, size_t extraDigits=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, size_t count)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">quickset</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a> (const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> &addend)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a> (const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> &subtrahend)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a> (size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a> (size_t byBits)</td></tr>
+<tr><td colspan="2"><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> [<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>]</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Holds the internal details of an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a>. </p>
+<p>The data for an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> is stored in a separate struct so it can be shared between different copies of an identical number. </p>
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00037">37</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a37dee31093efc13f9ad64171fd9c373a"></a><!-- doxytag: member="boost::xint::detail::data_t::data_t" ref="a37dee31093efc13f9ad64171fd9c373a" args="(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::detail::data_t::data_t </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>initial1</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>initial2</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>initial3</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00027">27</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a91d6951498c6df25133e987c7d347c17"></a><!-- doxytag: member="boost::xint::detail::data_t::data_t" ref="a91d6951498c6df25133e987c7d347c17" args="(data_t *c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::detail::data_t::data_t </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td>
+ <td class="paramname"> <em>c</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00039">39</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ac723d73bc8845e6df77f3c439128b939"></a><!-- doxytag: member="boost::xint::detail::data_t::add" ref="ac723d73bc8845e6df77f3c439128b939" args="(const data_t &addend)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::add </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> & </td>
+ <td class="paramname"> <em>addend</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00208">208</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05165b7f45dea3e2459739d856d78288"></a><!-- doxytag: member="boost::xint::detail::data_t::alloc" ref="a05165b7f45dea3e2459739d856d78288" args="(size_t digits, bool copydigits=false)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::alloc </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>digits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>copydigits</em> = <code>false</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00095">95</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae5e0fb03bd1a93e834bbbcbb11dcf845"></a><!-- doxytag: member="boost::xint::detail::data_t::attach" ref="ae5e0fb03bd1a93e834bbbcbb11dcf845" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::attach </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00071">71</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8fd5f934c3ad8c1f9d38bb38ac89cfcd"></a><!-- doxytag: member="boost::xint::detail::data_t::copy" ref="a8fd5f934c3ad8c1f9d38bb38ac89cfcd" args="(const data_t *c, size_t extraDigits=0)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::copy </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> * </td>
+ <td class="paramname"> <em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>extraDigits</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00163">163</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aca622bc945c157c65cf5042b70eabd83"></a><!-- doxytag: member="boost::xint::detail::data_t::detach" ref="aca622bc945c157c65cf5042b70eabd83" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::detail::data_t::detach </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00072">72</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad082d802e78dab68eb7409e09386e974"></a><!-- doxytag: member="boost::xint::detail::data_t::invert" ref="ad082d802e78dab68eb7409e09386e974" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::invert </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00180">180</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1207c8b514f44886ae98f6632b9726a1"></a><!-- doxytag: member="boost::xint::detail::data_t::negate" ref="a1207c8b514f44886ae98f6632b9726a1" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::negate </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00201">201</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a231dab01a05e0c7f64e9c592537ddb14"></a><!-- doxytag: member="boost::xint::detail::data_t::quickset" ref="a231dab01a05e0c7f64e9c592537ddb14" args="(digit_t d1, digit_t d2=0, digit_t d3=0)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::quickset </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>d1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>d2</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> </td>
+ <td class="paramname"> <em>d3</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00084">84</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3bdd8e8ef7c5b8bc888b96725aac9dfe"></a><!-- doxytag: member="boost::xint::detail::data_t::realloc" ref="a3bdd8e8ef7c5b8bc888b96725aac9dfe" args="(size_t newdigits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::realloc </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>newdigits</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00074">74</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaa43f067c7f1a7772276cf9a57ab653c"></a><!-- doxytag: member="boost::xint::detail::data_t::shift_left" ref="aaa43f067c7f1a7772276cf9a57ab653c" args="(size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::shift_left </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00262">262</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad28012e618ecab56b69ceac7585d1741"></a><!-- doxytag: member="boost::xint::detail::data_t::shift_right" ref="ad28012e618ecab56b69ceac7585d1741" args="(size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::shift_right </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00290">290</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a284e2618d908796987c624311a42625d"></a><!-- doxytag: member="boost::xint::detail::data_t::skipLeadingZeros" ref="a284e2618d908796987c624311a42625d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::skipLeadingZeros </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Call this after every manipulation of a <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> object that could possibly leave leading zeros in the <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. </p>
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00077">77</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a138ee1d91bfa37d248c43ef66371e590"></a><!-- doxytag: member="boost::xint::detail::data_t::subtract" ref="a138ee1d91bfa37d248c43ef66371e590" args="(const data_t &subtrahend)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::subtract </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> & </td>
+ <td class="paramname"> <em>subtrahend</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00235">235</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abc03de358802a588b87fe666dd8f7c43"></a><!-- doxytag: member="boost::xint::detail::data_t::zero" ref="abc03de358802a588b87fe666dd8f7c43" args="(digit_t *p, size_t count)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::detail::data_t::zero </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> * </td>
+ <td class="paramname"> <em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>count</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00175">175</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="a0e65a16488bd7a9d0b1c2a42cc258da3"></a><!-- doxytag: member="boost::xint::detail::data_t::digits" ref="a0e65a16488bd7a9d0b1c2a42cc258da3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>* <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">boost::xint::detail::data_t::digits</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<dl class="note"><dt><b>Note:</b></dt><dd>The digits are stored lowest-digit-first. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00053">53</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a02411914c8a9d59e3521b04367352ea5"></a><!-- doxytag: member="boost::xint::detail::data_t::mAllocated" ref="a02411914c8a9d59e3521b04367352ea5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">boost::xint::detail::data_t::mAllocated</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00052">52</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6ee92e12f6b7de91f7ad85fcd481bd74"></a><!-- doxytag: member="boost::xint::detail::data_t::mCopies" ref="a6ee92e12f6b7de91f7ad85fcd481bd74" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">boost::xint::detail::data_t::mCopies</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00060">60</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abd6528e0c4f7674b4421cc7f1e2aba09"></a><!-- doxytag: member="boost::xint::detail::data_t::mIsNegative" ref="abd6528e0c4f7674b4421cc7f1e2aba09" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">boost::xint::detail::data_t::mIsNegative</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00061">61</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3b494184a00a17108f8bb80d8f07a3a4"></a><!-- doxytag: member="boost::xint::detail::data_t::mLength" ref="a3b494184a00a17108f8bb80d8f07a3a4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">boost::xint::detail::data_t::mLength</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00052">52</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af91f399a0533e8cdf46ac021616e2500"></a><!-- doxytag: member="boost::xint::detail::data_t::mQuickDigits" ref="af91f399a0533e8cdf46ac021616e2500" args="[QuickDigits::count]" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">boost::xint::detail::data_t::mQuickDigits</a>[<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>]</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00054">54</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8867fdad2325f390790c1188e6f71219"></a><!-- doxytag: member="boost::xint::detail::data_t::mStorage" ref="a8867fdad2325f390790c1188e6f71219" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector<<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>> <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">boost::xint::detail::data_t::mStorage</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00057">57</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a></li>
+<li><a class="el" href="data__t_8cpp_source.html">data_t.cpp</a></li>
+</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
+<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/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,40 @@
+<!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::detail::data_t::QuickDigits Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">count</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::detail::data_t::QuickDigits Struct 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_1detail.html">detail</a>::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a>::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">QuickDigits</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail::data_t::QuickDigits Struct Reference</h1><!-- doxytag: class="boost::xint::detail::data_t::QuickDigits" -->
+<p>Holds information determining how many quick-digits to use.
+More...</p>
+
+<p><code>#include <<a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>></code></p>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a> = std::numeric_limits<unsigned int>::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a> = (2*<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a>/<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">We want at least enough <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html" title="Holds information determining how many quick-digits to use.">QuickDigits</a> to hold two standard int types. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> = 3</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The library's code is written to depend on this value, don't change it. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">count</a> = (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a> < <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> ? <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a>)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Holds information determining how many quick-digits to use. </p>
+<p>Smaller numbers are represented in a small array of digits that are part of the <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a> structure itself, so that no additional memory allocation is needed for them. The contents of this structure determine how many of them the library uses. </p>
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00045">45</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="ae820a83ad097f0cc70ba3f53ea00ab70"></a><!-- doxytag: member="boost::xint::detail::data_t::QuickDigits::count" ref="ae820a83ad097f0cc70ba3f53ea00ab70" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">boost::xint::detail::data_t::QuickDigits::count</a> = (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a> < <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> ? <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">minimum</a> : <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">suggested</a>)<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00049">49</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adbe737b8debc83a5a1fc0f92e39c6aa7"></a><!-- doxytag: member="boost::xint::detail::data_t::QuickDigits::intbits" ref="adbe737b8debc83a5a1fc0f92e39c6aa7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">boost::xint::detail::data_t::QuickDigits::intbits</a> = std::numeric_limits<unsigned int>::<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00046">46</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8f2061e90bb9e89949f10f57accc1bbb"></a><!-- doxytag: member="boost::xint::detail::data_t::QuickDigits::minimum" ref="a8f2061e90bb9e89949f10f57accc1bbb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#a8f2061e90bb9e89949f10f57accc1bbb">boost::xint::detail::data_t::QuickDigits::minimum</a> = 3<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The library's code is written to depend on this value, don't change it. </p>
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00048">48</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aef1507c481b9f7d7326a7bee422906ae"></a><!-- doxytag: member="boost::xint::detail::data_t::QuickDigits::suggested" ref="aef1507c481b9f7d7326a7bee422906ae" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#aef1507c481b9f7d7326a7bee422906ae">boost::xint::detail::data_t::QuickDigits::suggested</a> = (2*<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#adbe737b8debc83a5a1fc0f92e39c6aa7">intbits</a>/<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>)<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>We want at least enough <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html" title="Holds information determining how many quick-digits to use.">QuickDigits</a> to hold two standard int types. </p>
+
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00047">47</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.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
+<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/structboost_1_1xint_1_1detail_1_1random__generator-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,43 @@
+<!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::detail::random_generator< T > Member List</h1>This is the complete list of members for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">genobj</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">operator()</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">random_generator</a>(T *g)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> typedef</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td></td></tr>
+</table></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.gif
==============================================================================
Binary file. No diff available.
Added: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::detail::random_generator< T > Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.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_1detail.html">detail</a>::<a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail::random_generator< T > Struct Template Reference</h1><!-- doxytag: class="boost::xint::detail::random_generator" --><!-- doxytag: inherits="boost::xint::detail::base_random_generator" -->
+<p>Support class for the random generator code.
+More...</p>
+
+<p><code>#include <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></code></p>
+<div class="dynheader">
+Inheritance diagram for boost::xint::detail::random_generator< T >:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="structboost_1_1xint_1_1detail_1_1random__generator.gif" usemap="#boost::xint::detail::random_generator< T >_map" alt=""/>
+ <map id="boost::xint::detail::random_generator< T >_map" name="boost::xint::detail::random_generator< T >_map">
+<area href="structboost_1_1xint_1_1detail_1_1base__random__generator.html" alt="boost::xint::detail::base_random_generator" shape="rect" coords="0,0,247,24"/>
+</map>
+ </div>
+</div>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uniform_int<br class="typebreak"/>
+< <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
+boost::variate_generator< T <br class="typebreak"/>
+&, <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a></td></tr>
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a551b3fe4b897e4f86c7463586c6292ce">random_generator</a> (T *g)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a46fa82c3887acbfc9a0d1f3071aa8c96">operator()</a> ()</td></tr>
+<tr><td colspan="2"><h2>Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::auto_ptr< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">genobj</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template<class T><br/>
+ struct boost::xint::detail::random_generator< T ></h3>
+
+<p>Support class for the random generator code. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00087">87</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Member Typedef Documentation</h2>
+<a class="anchor" id="ae206a1943d1e8d15efdf443f59cf1106"></a><!-- doxytag: member="boost::xint::detail::random_generator::dist_t" ref="ae206a1943d1e8d15efdf443f59cf1106" args="" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<class T> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef boost::uniform_int<<a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a>> <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator</a>< T >::<a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00088">88</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a77f59e8237e125403e5304a54bf8e418"></a><!-- doxytag: member="boost::xint::detail::random_generator::gen_t" ref="a77f59e8237e125403e5304a54bf8e418" args="" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<class T> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef boost::variate_generator<T&, <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#ae206a1943d1e8d15efdf443f59cf1106">dist_t</a>> <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator</a>< T >::<a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00089">89</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a551b3fe4b897e4f86c7463586c6292ce"></a><!-- doxytag: member="boost::xint::detail::random_generator::random_generator" ref="a551b3fe4b897e4f86c7463586c6292ce" args="(T *g)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<class T> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator</a>< T >::<a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a> </td>
+ <td>(</td>
+ <td class="paramtype">T * </td>
+ <td class="paramname"> <em>g</em></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#l00090">90</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a46fa82c3887acbfc9a0d1f3071aa8c96"></a><!-- doxytag: member="boost::xint::detail::random_generator::operator()" ref="a46fa82c3887acbfc9a0d1f3071aa8c96" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<class T> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#a9694aa7d11ac533581d530037f23fd0a">result_type</a> <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator</a>< T >::operator() </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td><code> [inline, virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Implements <a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html#ae6981f9d0ce6b201c150a5c9c6066814">boost::xint::detail::base_random_generator</a>.</p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00093">93</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="a28fd023763b7e984033a3d7e632e41df"></a><!-- doxytag: member="boost::xint::detail::random_generator::gen" ref="a28fd023763b7e984033a3d7e632e41df" args="" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<class T> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a77f59e8237e125403e5304a54bf8e418">gen_t</a> <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator</a>< T >::<a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a28fd023763b7e984033a3d7e632e41df">gen</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00095">95</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6283923082acfdbeceb294acb0ee1075"></a><!-- doxytag: member="boost::xint::detail::random_generator::genobj" ref="a6283923082acfdbeceb294acb0ee1075" args="" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<class T> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::auto_ptr<T> <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator</a>< T >::<a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html#a6283923082acfdbeceb294acb0ee1075">genobj</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00094">94</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</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
+<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/structboost_1_1xint_1_1detail_1_1token.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: boost::xint::detail::token Struct 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_1detail.html">detail</a>::<a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::detail::token Struct Reference</h1><!-- doxytag: class="boost::xint::detail::token" -->
+<p>An empty struct, used in <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>.
+More...</p>
+
+<p><code>#include <<a class="el" href="xint_8hpp_source.html">xint.hpp</a>></code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>An empty struct, used in <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00077">77</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="xint_8hpp_source.html">xint.hpp</a></li>
+</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
+<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/testing.html
==============================================================================
--- sandbox/xint/doc/testing.html (original)
+++ sandbox/xint/doc/testing.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -27,7 +27,7 @@
<h1><a class="anchor" id="testing">The Self-Testing Program </a></h1><p>The library has a self-testing program that you can build and run to confirm that it is working properly. You can find the source code for it in the <code>test</code> subdirectory under the main <code>xint</code> directory. All of the major functions are thoroughly exercised, and many of the minor ones as well.</p>
<p>The source code for the testing program also demonstrates how to use many of the library's functions. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/testing_8dox.html
==============================================================================
--- sandbox/xint/doc/testing_8dox.html (original)
+++ sandbox/xint/doc/testing_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/testing.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/threadsafe.html
==============================================================================
--- sandbox/xint/doc/threadsafe.html (original)
+++ sandbox/xint/doc/threadsafe.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -28,7 +28,7 @@
<p>To enable thread-safe operations, define the preprocessor symbol <code>XINT_THREADSAFE</code> when compiling the library. You don't need to define it when using the library, only when compiling it.</p>
<p>To see whether your copy was compiled with thread-safe operation enabled, use the xint::opt_thread_safe function. </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
+<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
<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/threadsafe_8dox.html
==============================================================================
--- sandbox/xint/doc/threadsafe_8dox.html (original)
+++ sandbox/xint/doc/threadsafe_8dox.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -29,7 +29,7 @@
<h1>/home/chad/projects/xint/doc/dox/threadsafe.dox File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
</table>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/todo.html
==============================================================================
--- sandbox/xint/doc/todo.html (original)
+++ sandbox/xint/doc/todo.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -33,7 +33,7 @@
<dd>the xint::to_string function could be made more efficient by using only doubledigit_t-sized pieces of the integer at a time, and dividing the whole thing by the total of the divisions done to get the digits. Same with the xint::from_string function. </dd>
</dl>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/xint_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint_8hpp.html (original)
+++ sandbox/xint/doc/xint_8hpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -52,6 +52,8 @@
<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support class for the random generator code. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">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...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1integer.html">boost::xint::integer</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The extended integer class. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td></tr>
@@ -78,7 +80,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -86,6 +88,11 @@
<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uintmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">boost::xint::detail::doubledigit_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uint_t<br class="typebreak"/>
@@ -100,6 +107,70 @@
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">boost::xint::detail::set_random_generator</a> (base_random_generator *obj)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail::get_random</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core::abs</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core::negate</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core::pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core::factorial</a> (size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core::sqrt</a> (const integer &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core::to</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core::to_binary</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core::from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core::shift_right</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core::invmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core::operator+</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core::operator-</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a017539f78cba665d5cbb6b6ba00e1d42">boost::xint::core::operator+</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af4587327ba62268fe3267ca09bd8f4a2">boost::xint::core::operator-</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core::operator*</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core::operator/</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core::operator%</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core::operator&</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core::operator|</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core::log2</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core::lcm</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Exception-blocking and -allowing functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6b736a9df3b9afabec548528235f28b6"></a> See the <a class="el" href="exceptions.html">exception-blocking page</a> for details on these functions and how to use them. </p>
<br/><br/></div></td></tr>
@@ -209,13 +280,13 @@
<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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">boost::xint::operator!</a> (const xint::integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0497944d7fa977eca5e5f6a140db07c3">boost::xint::operator<</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">boost::xint::operator></a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">boost::xint::operator<=</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">boost::xint::operator>=</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">boost::xint::operator==</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#abf694043a7a1d64f35e90a275208ff2a">boost::xint::operator!=</a> (const xint::integer &num1, const xint::integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">boost::xint::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint::operator+</a> (const integer &a)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint::operator-</a> (const integer &a)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f6171689ef68ff6672e43a1e24ea494">boost::xint::operator+</a> (const integer &num1, const integer &num2)</td></tr>
@@ -246,10 +317,10 @@
<br/><br/></div></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ade3e222abd81f9935cd0c003f345ed57">boost::xint::operator<<</a> (std::basic_ostream< charT, traits > &out, const xint::integer &n)</td></tr>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6828d3d928f3a859f82a04b70634e4b3">boost::xint::operator>></a> (std::basic_istream< charT, traits > &in, xint::integer &n)</td></tr>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">boost::xint::detail::nan_text</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the text representation of the Not-a-Number value. <br/></td></tr>
@@ -270,7 +341,7 @@
<p>Definition in file <a class="el" href="xint_8hpp_source.html">xint.hpp</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
+<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
<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/xint_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint_8hpp_source.html (original)
+++ sandbox/xint/doc/xint_8hpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -107,403 +107,629 @@
<a name="l00120"></a>00120
<a name="l00124"></a><a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">00124</a> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>=(std::numeric_limits<size_t>::max)();
<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>;
+<a name="l00126"></a>00126 <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>;
<a name="l00127"></a>00127
-<a name="l00129"></a>00129 <span class="comment">// The integer class</span>
-<a name="l00130"></a>00130
-<a name="l00142"></a><a class="code" href="classboost_1_1xint_1_1integer.html">00142</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> {
+<a name="l00139"></a>00139 <span class="keyword">namespace </span>core {
+<a name="l00140"></a>00140
+<a name="l00142"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html">00142</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> {
<a name="l00143"></a>00143 <span class="keyword">public</span>:
<a name="l00144"></a>00144
-<a name="l00147"></a>00147 <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="l00148"></a>00148 <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
-<a name="l00149"></a>00149 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00150"></a>00150 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
-<a name="l00151"></a>00151 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
-<a name="l00152"></a>00152 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00153"></a>00153 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
-<a name="l00154"></a>00154 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
-<a name="l00155"></a>00155 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
-<a name="l00156"></a>00156 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>&);
-<a name="l00157"></a>00157 <a class="code" href="classboost_1_1xint_1_1integer.html#a3e254c8874a7a1f9a17a41505a18df35">~integer</a>();
+<a name="l00147"></a>00147 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>();
+<a name="l00148"></a>00148 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00149"></a>00149 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>(const ::boost::xint::integer& b);
+<a name="l00150"></a>00150 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00151"></a>00151 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00152"></a>00152 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
+<a name="l00153"></a>00153 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00154"></a>00154 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00155"></a>00155 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+<a name="l00156"></a>00156 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00157"></a>00157 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">~integer</a>();
<a name="l00159"></a>00159
-<a name="l00168"></a>00168 <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#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &c);
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c);
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00165"></a>00165 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00166"></a>00166 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00167"></a>00167 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00168"></a>00168 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <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#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
-<a name="l00171"></a>00171 <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#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
-<a name="l00172"></a>00172 <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#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
-<a name="l00173"></a>00173 <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#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
-<a name="l00174"></a>00174 <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#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <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">operator++</a>();
-<a name="l00177"></a>00177 <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">operator--</a>();
-<a name="l00178"></a>00178 <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">operator++</a>(<span class="keywordtype">int</span>);
-<a name="l00179"></a>00179 <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">operator--</a>(<span class="keywordtype">int</span>);
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 <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#a717edb41c50edbd4b601c38b1fc6a8b0">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00182"></a>00182 <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#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00183"></a>00183 <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#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<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="classboost_1_1xint_1_1integer.html#abc90075da0adaef0da2d0083e59af414">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) <span class="keyword">const</span>;
-<a name="l00185"></a>00185 <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">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
-<a name="l00186"></a>00186 <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#a33f0a1167639a60ac8ad8ef0f3d3f585">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
-<a name="l00187"></a>00187 <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#a0ca39c4cb36160461fb9848cc9e7f2d4">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00170"></a>00170 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a>();
+<a name="l00171"></a>00171 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a>();
+<a name="l00172"></a>00172 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a>(<span class="keywordtype">int</span>);
+<a name="l00173"></a>00173 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a>(<span class="keywordtype">int</span>);
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00176"></a>00176 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00177"></a>00177 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00178"></a>00178 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>) <span class="keyword">const</span>;
+<a name="l00179"></a>00179 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
+<a name="l00180"></a>00180 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00181"></a>00181 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00183"></a>00183
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a>();
+<a name="l00187"></a>00187 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>();
<a name="l00189"></a>00189
-<a name="l00198"></a>00198 <span class="keyword">static</span> <span class="keyword">const</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_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a>();
-<a name="l00199"></a>00199 <span class="keyword">static</span> <span class="keyword">const</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_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>();
-<a name="l00201"></a>00201
-<a name="l00204"></a>00204 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1" title="Tests the lowest bit of *this to determine oddness.">odd</a>() <span class="keyword">const</span>;
-<a name="l00205"></a>00205 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb" title="Tests the lowest bit of *this to determine evenness.">even</a>() <span class="keyword">const</span>;
-<a name="l00206"></a>00206 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() <span class="keyword">const</span>;
-<a name="l00207"></a>00207 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>() <span class="keyword">const</span>;
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f" title="Tells you roughly how large an integer is.">hex_digits</a>() <span class="keyword">const</span>;
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211
-<a name="l00217"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">00217</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>() { <span class="keywordflow">return</span> data; }
-<a name="l00218"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">00218</a> <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">_get_data</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }
-<a name="l00219"></a>00219 <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">_get_digit</a>(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span>;
-<a name="l00220"></a>00220 <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">_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>) <span class="keyword">const</span>;
-<a name="l00221"></a>00221 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>() <span class="keyword">const</span>;
-<a name="l00222"></a>00222 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">_set_negative</a>(<span class="keywordtype">bool</span> negative);
-<a name="l00223"></a>00223 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
-<a name="l00224"></a>00224 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>() <span class="keyword">const</span>;
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227 <span class="keyword">private</span>:
-<a name="l00228"></a>00228 <span class="keywordtype">void</span> _init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0);
-<a name="l00229"></a>00229 <span class="keywordtype">void</span> _init(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &c);
-<a name="l00230"></a>00230 <span class="keywordtype">void</span> _init(boost::uintmax_t n);
-<a name="l00231"></a>00231 <span class="keywordtype">void</span> _attach();
-<a name="l00232"></a>00232 <span class="keywordtype">void</span> _detach();
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <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="l00235"></a>00235 };
-<a name="l00236"></a>00236
+<a name="l00192"></a>00192 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">odd</a>() <span class="keyword">const</span>;
+<a name="l00193"></a>00193 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">even</a>() <span class="keyword">const</span>;
+<a name="l00194"></a>00194 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() <span class="keyword">const</span>;
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">hex_digits</a>() <span class="keyword">const</span>;
+<a name="l00198"></a>00198
+<a name="l00200"></a>00200
+<a name="l00201"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">00201</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab0f5826f4653322ed8ff31a74bade0d4">_get_data</a>() { <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>; }
+<a name="l00202"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5f004409e37511908168a4ee9961c6a1">00202</a> <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5f004409e37511908168a4ee9961c6a1">_get_data</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>; }
+<a name="l00203"></a>00203 <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">_get_digit</a>(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span>;
+<a name="l00204"></a>00204 <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">_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>) <span class="keyword">const</span>;
+<a name="l00205"></a>00205 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>() <span class="keyword">const</span>;
+<a name="l00206"></a>00206 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keywordtype">bool</span> negative);
+<a name="l00207"></a>00207 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 <span class="keyword">protected</span>:
+<a name="l00211"></a>00211 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0);
+<a name="l00212"></a>00212 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c);
+<a name="l00213"></a>00213 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t n);
+<a name="l00214"></a>00214 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a36b2dd01107d790e21121f9a90972e77">_attach</a>();
+<a name="l00215"></a>00215 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad03731b064ba24811f506e793b75c9e7">_detach</a>();
+<a name="l00216"></a>00216
+<a name="l00217"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">00217</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a8abb914b0ac16a933a0f7792dc56a0fc">data</a>;
+<a name="l00218"></a>00218 };
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 } <span class="comment">// namespace core</span>
+<a name="l00221"></a>00221
+<a name="l00223"></a>00223 <span class="comment">// The integer class</span>
+<a name="l00224"></a>00224
+<a name="l00236"></a><a class="code" href="classboost_1_1xint_1_1integer.html">00236</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> {
+<a name="l00237"></a>00237 <span class="keyword">public</span>:
<a name="l00238"></a>00238
-<a name="l00246"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html">00246</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">strong_random_generator</a> {
-<a name="l00247"></a>00247 <span class="keyword">public</span>:
-<a name="l00248"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">00248</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
-<a name="l00249"></a>00249
-<a name="l00250"></a>00250 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a>();
-<a name="l00251"></a>00251 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a>();
-<a name="l00252"></a>00252 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>();
-<a name="l00253"></a>00253
-<a name="l00254"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">00254</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">has_fixed_range</a>;
-<a name="l00255"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">00255</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">min_value</a>;
-<a name="l00256"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">00256</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">max_value</a>;
-<a name="l00257"></a>00257 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">min</a>() <span class="keyword">const</span>;
-<a name="l00258"></a>00258 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">max</a>() <span class="keyword">const</span>;
-<a name="l00259"></a>00259 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">entropy</a>() <span class="keyword">const</span>;
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261 <span class="keyword">private</span>:
-<a name="l00262"></a>00262 <span class="keyword">struct </span>impl_t;
-<a name="l00263"></a>00263 impl_t *impl;
-<a name="l00264"></a>00264 };
-<a name="l00265"></a>00265
-<a name="l00267"></a>00267
+<a name="l00241"></a>00241 <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="l00242"></a>00242 <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
+<a name="l00243"></a>00243 <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>& b);
+<a name="l00244"></a>00244 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00245"></a>00245 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00246"></a>00246 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
+<a name="l00247"></a>00247 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00248"></a>00248 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00249"></a>00249 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+<a name="l00250"></a>00250 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00252"></a>00252
+<a name="l00261"></a>00261 <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#a9ae8cfa93f2e43cf0471266c54b06be2">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &c);
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 <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#a8ba263f6a5e51c15e3c51241d113c35e">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
+<a name="l00264"></a>00264 <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#a92f8f3cb4e080c43d889103e7606b7ba">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
+<a name="l00265"></a>00265 <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#a3452b0a1af51a556bdcb6a3d087b44db">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
+<a name="l00266"></a>00266 <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#a9e630e1f2cf12d29ad01de9c44dc8e3c">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
+<a name="l00267"></a>00267 <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#a1acfe3b61f26b7168fd103521f6deee9">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& b);
+<a name="l00268"></a>00268
+<a name="l00269"></a>00269 <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">operator++</a>();
+<a name="l00270"></a>00270 <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">operator--</a>();
+<a name="l00271"></a>00271 <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">operator++</a>(<span class="keywordtype">int</span>);
+<a name="l00272"></a>00272 <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">operator--</a>(<span class="keywordtype">int</span>);
<a name="l00273"></a>00273
-<a name="l00274"></a>00274 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>();
-<a name="l00275"></a>00275 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">block_exceptions</a>();
-<a name="l00276"></a>00276 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
-<a name="l00278"></a>00278
-<a name="l00280"></a>00280
-<a name="l00283"></a>00283 <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#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00284"></a>00284 <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#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00285"></a>00285 <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#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& addend);
-<a name="l00286"></a>00286 <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#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& subtrahend);
-<a name="l00287"></a>00287 <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#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& multiplicand);
-<a name="l00288"></a>00288 <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#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& divisor);
-<a name="l00289"></a>00289 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&
-<a name="l00290"></a>00290 divisor);
+<a name="l00274"></a>00274 <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#a717edb41c50edbd4b601c38b1fc6a8b0">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
+<a name="l00275"></a>00275 <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#a1fa48e6c6cefec7ae672156d27e79ec6">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
+<a name="l00276"></a>00276 <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#a40fdf2cd80d53e173aa5129fe02289c3">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
+<a name="l00277"></a>00277 <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">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>) <span class="keyword">const</span>;
+<a name="l00278"></a>00278 <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">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
+<a name="l00279"></a>00279 <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#a33f0a1167639a60ac8ad8ef0f3d3f585">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00280"></a>00280 <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#a0ca39c4cb36160461fb9848cc9e7f2d4">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00282"></a>00282
+<a name="l00285"></a>00285 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1" title="Tests the lowest bit of *this to determine oddness.">odd</a>() <span class="keyword">const</span>;
+<a name="l00286"></a>00286 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#afa36410b307d227f66657ea6f2116bdb" title="Tests the lowest bit of *this to determine evenness.">even</a>() <span class="keyword">const</span>;
+<a name="l00287"></a>00287 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12" title="Tests the sign of *this.">sign</a>() <span class="keyword">const</span>;
+<a name="l00288"></a>00288 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>() <span class="keyword">const</span>;
+<a name="l00289"></a>00289
+<a name="l00290"></a>00290 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f" title="Tells you roughly how large an integer is.">hex_digits</a>() <span class="keyword">const</span>;
<a name="l00292"></a>00292
-<a name="l00294"></a>00294
-<a name="l00297"></a>00297 <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#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00298"></a>00298 <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#aa7d7b30f587c98ad31b8d421b8813c61" title="Calculate the value of ne.">pow</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& exponent);
-<a name="l00299"></a>00299 <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#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e.">pow2</a>(<span class="keywordtype">size_t</span> exponent);
-<a name="l00300"></a>00300 <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#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n);
-<a name="l00301"></a>00301 <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#afdf79cc57e434b9c7f4cb3b6bd68dbd6" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00303"></a>00303
+<a name="l00301"></a>00301 <span class="keyword">static</span> <span class="keyword">const</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_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">zero</a>();
+<a name="l00302"></a>00302 <span class="keyword">static</span> <span class="keyword">const</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_1integer.html#aa332681715634b73118ffe76090a75d3">one</a>();
+<a name="l00303"></a>00303 <span class="keyword">static</span> <span class="keyword">const</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_1integer.html#a379808d01a0e66ac61f309f211c4fb44">nan</a>();
<a name="l00305"></a>00305
-<a name="l00308"></a>00308 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00309"></a>00309 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
-<a name="l00310"></a>00310 <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#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
-<a name="l00311"></a>00311 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00312"></a>00312 <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#a58aa7dc532f0d8a1557c9ec8f512602e" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string& s);
-<a name="l00314"></a>00314
-<a name="l00316"></a>00316
-<a name="l00319"></a>00319 <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>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00320"></a>00320 <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>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00321"></a>00321 <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>& n, <span class="keywordtype">size_t</span> bit);
-<a name="l00322"></a>00322 <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>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
-<a name="l00323"></a>00323 <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>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
-<a name="l00324"></a>00324 <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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00325"></a>00325 <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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00326"></a>00326 <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>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00327"></a>00327 <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>& n, <span class="keywordtype">int</span> byBits);
-<a name="l00328"></a>00328 <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>& n, <span class="keywordtype">size_t</span> byBits);
-<a name="l00329"></a>00329 <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>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00311"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">00311</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1integer.html#a638bbe92022faee60d3009b60cc1e556">_get_data</a>() { <span class="keywordflow">return</span> data; }
+<a name="l00312"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">00312</a> <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1integer.html#a0e1746983d1ee61685a09a052278866e">_get_data</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }
+<a name="l00313"></a>00313 <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">_get_digit</a>(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span>;
+<a name="l00314"></a>00314 <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">_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>) <span class="keyword">const</span>;
+<a name="l00315"></a>00315 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>() <span class="keyword">const</span>;
+<a name="l00316"></a>00316 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">_set_negative</a>(<span class="keywordtype">bool</span> negative);
+<a name="l00317"></a>00317 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1integer.html#a04331a88bb2a975a7349e0c04cb230de">_make_unique</a>();
+<a name="l00319"></a>00319
+<a name="l00320"></a>00320 <span class="keyword">private</span>:
+<a name="l00321"></a>00321 <span class="keywordtype">void</span> _init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0);
+<a name="l00322"></a>00322 <span class="keywordtype">void</span> _init(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &c);
+<a name="l00323"></a>00323 <span class="keywordtype">void</span> _init(boost::uintmax_t n);
+<a name="l00324"></a>00324 <span class="keywordtype">void</span> _attach();
+<a name="l00325"></a>00325 <span class="keywordtype">void</span> _detach();
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 <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="l00328"></a>00328 };
+<a name="l00329"></a>00329
<a name="l00331"></a>00331
-<a name="l00333"></a>00333
-<a name="l00339"></a>00339
-<a name="l00340"></a>00340 <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#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& modBy);
-<a name="l00341"></a>00341 <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#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& by, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& modulus);
-<a name="l00342"></a>00342 <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#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& modulus);
-<a name="l00343"></a>00343 <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#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& exponent, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&
-<a name="l00344"></a>00344 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
-<a name="l00345"></a>00345 <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#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& modulus);
-<a name="l00347"></a>00347
-<a name="l00349"></a>00349
-<a name="l00352"></a>00352 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen);
-<a name="l00353"></a>00353 <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#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
-<a name="l00354"></a>00354 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
-<a name="l00356"></a>00356
+<a name="l00339"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html">00339</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">strong_random_generator</a> {
+<a name="l00340"></a>00340 <span class="keyword">public</span>:
+<a name="l00341"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">00341</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
+<a name="l00342"></a>00342
+<a name="l00343"></a>00343 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a>();
+<a name="l00344"></a>00344 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a>();
+<a name="l00345"></a>00345 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>();
+<a name="l00346"></a>00346
+<a name="l00347"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">00347</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">has_fixed_range</a>;
+<a name="l00348"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">00348</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">min_value</a>;
+<a name="l00349"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">00349</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">max_value</a>;
+<a name="l00350"></a>00350 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">min</a>() <span class="keyword">const</span>;
+<a name="l00351"></a>00351 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">max</a>() <span class="keyword">const</span>;
+<a name="l00352"></a>00352 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">entropy</a>() <span class="keyword">const</span>;
+<a name="l00353"></a>00353
+<a name="l00354"></a>00354 <span class="keyword">private</span>:
+<a name="l00355"></a>00355 <span class="keyword">struct </span>impl_t;
+<a name="l00356"></a>00356 impl_t *impl;
+<a name="l00357"></a>00357 };
<a name="l00358"></a>00358
-<a name="l00361"></a>00361 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
-<a name="l00362"></a>00362 <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#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
-<a name="l00364"></a>00364
+<a name="l00360"></a>00360
<a name="l00366"></a>00366
+<a name="l00367"></a>00367 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>();
+<a name="l00368"></a>00368 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">block_exceptions</a>();
+<a name="l00369"></a>00369 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
<a name="l00371"></a>00371
-<a name="l00372"></a>00372 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac2d1ae62e7e6d741531d6e232b851935">operator!</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1);
-<a name="l00373"></a>00373 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0497944d7fa977eca5e5f6a140db07c3">operator<</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00374"></a>00374 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aa378abd0c3687df031cd2fc314a27940">operator></a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00375"></a>00375 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0af77b5d4ce9b3b997794b28ae0d4a8b">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00376"></a>00376 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7666d6d0603654e5c43a807e8907177c">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00377"></a>00377 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ae95207d18c8f5159d57807726676f6d6">operator==</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00378"></a>00378 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#abf694043a7a1d64f35e90a275208ff2a">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00379"></a>00379
-<a name="l00380"></a>00380 <span class="keyword">const</span> <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#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& a);
-<a name="l00381"></a>00381 <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#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& a);
-<a name="l00382"></a>00382 <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#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00383"></a>00383 <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#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00384"></a>00384 <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#ae3770c0e356d50b5f3e2be573e6100cd">operator*</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00385"></a>00385 <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#a9a2859e7b5e532eaa0cc51aba4f958c2">operator/</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00386"></a>00386 <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#a115e84b56b4e5e00d0b2b5c8a407ef97">operator%</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00387"></a>00387 <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#ab054d123a003a31c06bac92a1f325805">operator&</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00388"></a>00388 <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#a4896e1fc3c8d0adb4911cf5b78304f49">operator|</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00389"></a>00389 <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#a9524e5e34757cb10a146012bc4192643">operator^</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n2);
-<a name="l00391"></a>00391
-<a name="l00393"></a>00393
-<a name="l00396"></a>00396 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd" title="Tells whether the library was compiled with Secure Mode enabled.">opt_secure_mode</a>();
-<a name="l00397"></a>00397 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379" title="Tells whether the library was compiled with the Thread Safe Operation option enabled...">opt_thread_safe</a>();
-<a name="l00398"></a>00398 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
-<a name="l00399"></a>00399 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
-<a name="l00400"></a>00400 <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#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& num2);
-<a name="l00401"></a>00401 <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#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& num2);
-<a name="l00403"></a>00403
-<a name="l00405"></a>00405 <span class="comment">// Exception classes</span>
+<a name="l00373"></a>00373
+<a name="l00376"></a>00376 <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#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
+<a name="l00377"></a>00377 <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#a84190f7b286de191e8026e440f104731" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
+<a name="l00378"></a>00378 <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#a5f82fa6b23e9af01292440248b89210d" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& addend);
+<a name="l00379"></a>00379 <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#a86eb0099596fe66bd46be244323f44e5" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& subtrahend);
+<a name="l00380"></a>00380 <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#a9e0d6ad947fa3e979ed6e26d7e81ab7f" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& multiplicand);
+<a name="l00381"></a>00381 <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#a4892543bb8ccfa8acb188a63a3d4723b" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& divisor);
+<a name="l00382"></a>00382 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&
+<a name="l00383"></a>00383 divisor);
+<a name="l00384"></a>00384
+<a name="l00385"></a>00385 <span class="keyword">namespace </span>core {
+<a name="l00386"></a>00386 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
+<a name="l00387"></a>00387 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n);
+<a name="l00388"></a>00388 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& addend);
+<a name="l00389"></a>00389 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& subtrahend);
+<a name="l00390"></a>00390 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& multiplicand);
+<a name="l00391"></a>00391 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& divisor);
+<a name="l00392"></a>00392 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>&
+<a name="l00393"></a>00393 divisor);
+<a name="l00394"></a>00394 } <span class="comment">// namespace core</span>
+<a name="l00396"></a>00396 <span class="comment"></span>
+<a name="l00398"></a>00398
+<a name="l00401"></a>00401 integer <a class="code" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3" title="Calculate the value of n2.">sqr</a>(<span class="keyword">const</span> integer& n);
+<a name="l00402"></a>00402 integer <a class="code" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61" title="Calculate the value of ne.">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& exponent);
+<a name="l00403"></a>00403 integer <a class="code" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7" title="Calculate the value of 2e.">pow2</a>(<span class="keywordtype">size_t</span> exponent);
+<a name="l00404"></a>00404 integer <a class="code" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n);
+<a name="l00405"></a>00405 integer <a class="code" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> integer& n);
<a name="l00406"></a>00406
-<a name="l00409"></a>00409
-<a name="l00413"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html">00413</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">invalid_base</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00414"></a>00414 <span class="keyword">public</span>:
-<a name="l00415"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">00415</a> <a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">invalid_base</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid base"</span>): invalid_argument(what)
-<a name="l00416"></a>00416 { }
-<a name="l00417"></a>00417 };
-<a name="l00418"></a>00418
-<a name="l00423"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html">00423</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">invalid_digit</a>: <span class="keyword">public</span> std::range_error {
-<a name="l00424"></a>00424 <span class="keyword">public</span>:
-<a name="l00425"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">00425</a> <a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">invalid_digit</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid digit"</span>): range_error(what)
-<a name="l00426"></a>00426 { }
-<a name="l00427"></a>00427 };
-<a name="l00428"></a>00428
-<a name="l00433"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html">00433</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">invalid_modulus</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00434"></a>00434 <span class="keyword">public</span>:
-<a name="l00435"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">00435</a> <a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">invalid_modulus</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid modulus"</span>):
-<a name="l00436"></a>00436 invalid_argument(what) { }
-<a name="l00437"></a>00437 };
-<a name="l00438"></a>00438
-<a name="l00443"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html">00443</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">divide_by_zero</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00444"></a>00444 <span class="keyword">public</span>:
-<a name="l00445"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">00445</a> <a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">divide_by_zero</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"divide by zero error"</span>):
-<a name="l00446"></a>00446 invalid_argument(what) { }
-<a name="l00447"></a>00447 };
-<a name="l00448"></a>00448
-<a name="l00453"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html">00453</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">cannot_represent</a>: <span class="keyword">public</span> std::invalid_argument {
-<a name="l00454"></a>00454 <span class="keyword">public</span>:
-<a name="l00455"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">00455</a> <a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">cannot_represent</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00456"></a>00456 <span class="stringliteral">"cannot represent the requested value"</span>): invalid_argument(what) { }
-<a name="l00457"></a>00457 };
-<a name="l00458"></a>00458
-<a name="l00463"></a><a class="code" href="classboost_1_1xint_1_1too__big.html">00463</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>: <span class="keyword">public</span> std::range_error {
-<a name="l00464"></a>00464 <span class="keyword">public</span>:
-<a name="l00465"></a><a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">00465</a> <a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">too_big</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00466"></a>00466 <span class="stringliteral">"value out of range for requested conversion"</span>): range_error(what) { }
-<a name="l00467"></a>00467 };
-<a name="l00468"></a>00468
-<a name="l00486"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html">00486</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>: <span class="keyword">public</span> std::runtime_error {
-<a name="l00487"></a>00487 <span class="keyword">public</span>:
-<a name="l00488"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">00488</a> <a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">not_a_number</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"attempted to use a Not-a-Number"</span>):
-<a name="l00489"></a>00489 runtime_error(what) { }
-<a name="l00490"></a>00490 };
-<a name="l00491"></a>00491
-<a name="l00498"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html">00498</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1no__strong__random.html" title="Exception class.">no_strong_random</a>: <span class="keyword">public</span> std::runtime_error {
-<a name="l00499"></a>00499 <span class="keyword">public</span>:
-<a name="l00500"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">00500</a> <a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">no_strong_random</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00501"></a>00501 <span class="stringliteral">"system does not have a strong random generator"</span>):
-<a name="l00502"></a>00502 runtime_error(what) { }
-<a name="l00503"></a>00503 };
-<a name="l00504"></a>00504
-<a name="l00517"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html">00517</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a> {
-<a name="l00518"></a>00518 <span class="keyword">public</span>:
-<a name="l00519"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">00519</a> <a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">overflow_error</a>(<span class="keyword">const</span> std::string& what=
-<a name="l00520"></a>00520 <span class="stringliteral">"overflow error: can't obtain enough memory to represent the requested number"</span>):
-<a name="l00521"></a>00521 std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>(what) { }
-<a name="l00522"></a>00522 };
+<a name="l00407"></a>00407 <span class="keyword">namespace </span>core {
+<a name="l00408"></a>00408 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">sqr</a>(<span class="keyword">const</span> integer& n);
+<a name="l00409"></a>00409 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& exponent);
+<a name="l00410"></a>00410 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">pow2</a>(<span class="keywordtype">size_t</span> exponent);
+<a name="l00411"></a>00411 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">factorial</a>(<span class="keywordtype">size_t</span> n);
+<a name="l00412"></a>00412 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">sqrt</a>(<span class="keyword">const</span> integer& n);
+<a name="l00413"></a>00413 } <span class="comment">// namespace core</span>
+<a name="l00415"></a>00415 <span class="comment"></span>
+<a name="l00417"></a>00417
+<a name="l00420"></a>00420 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> integer& n);
+<a name="l00421"></a>00421 std::string <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
+<a name="l00422"></a>00422 integer <a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00423"></a>00423 std::string <a class="code" href="namespaceboost_1_1xint.html#a19124d8eeee95cc7ff1e348c36250eea" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> integer& n);
+<a name="l00424"></a>00424 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& s);
+<a name="l00425"></a>00425
+<a name="l00426"></a>00426 <span class="keyword">namespace </span>core {
+<a name="l00427"></a>00427 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">to</a>(<span class="keyword">const</span> integer& n);
+<a name="l00428"></a>00428 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">to_string</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
+<a name="l00429"></a>00429 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00430"></a>00430 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">to_binary</a>(<span class="keyword">const</span> integer& n);
+<a name="l00431"></a>00431 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">from_binary</a>(<span class="keyword">const</span> std::string& s);
+<a name="l00432"></a>00432 } <span class="comment">// namespace core</span>
+<a name="l00434"></a>00434 <span class="comment"></span>
+<a name="l00436"></a>00436
+<a name="l00439"></a>00439 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00440"></a>00440 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182" title="Sets a specific bit in an integer to one.">setbit</a>(integer& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00441"></a>00441 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df" title="Sets a specific bit in an integer to zero.">clearbit</a>(integer& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00442"></a>00442 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00443"></a>00443 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00444"></a>00444 integer <a class="code" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00445"></a>00445 integer <a class="code" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec" title="Combine two integers using a bitwise OR operation.">bitwise_or</a> (<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00446"></a>00446 integer <a class="code" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00447"></a>00447 integer <a class="code" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">int</span> byBits);
+<a name="l00448"></a>00448 integer <a class="code" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00449"></a>00449 integer <a class="code" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00450"></a>00450
+<a name="l00451"></a>00451 <span class="keyword">namespace </span>core {
+<a name="l00452"></a>00452 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">getbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00453"></a>00453 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">setbit</a>(integer& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00454"></a>00454 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">clearbit</a>(integer& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00455"></a>00455 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">lowestbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00456"></a>00456 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">highestbit</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00457"></a>00457 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">bitwise_and</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00458"></a>00458 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">bitwise_or</a> (<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00459"></a>00459 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">bitwise_xor</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00460"></a>00460 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">shift</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">int</span> byBits);
+<a name="l00461"></a>00461 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">shift_left</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00462"></a>00462 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">shift_right</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00463"></a>00463 } <span class="comment">// namespace core</span>
+<a name="l00465"></a>00465 <span class="comment"></span>
+<a name="l00467"></a>00467
+<a name="l00473"></a>00473
+<a name="l00474"></a>00474 integer <a class="code" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& modBy);
+<a name="l00475"></a>00475 integer <a class="code" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& modulus);
+<a name="l00476"></a>00476 integer <a class="code" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& modulus);
+<a name="l00477"></a>00477 integer <a class="code" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& exponent, <span class="keyword">const</span> integer&
+<a name="l00478"></a>00478 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
+<a name="l00479"></a>00479 integer <a class="code" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& modulus);
+<a name="l00480"></a>00480
+<a name="l00481"></a>00481 <span class="keyword">namespace </span>core {
+<a name="l00482"></a>00482 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">mod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& modBy);
+<a name="l00483"></a>00483 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">mulmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& modulus);
+<a name="l00484"></a>00484 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& modulus);
+<a name="l00485"></a>00485 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">powmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& exponent, <span class="keyword">const</span> integer&
+<a name="l00486"></a>00486 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
+<a name="l00487"></a>00487 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">invmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& modulus);
+<a name="l00488"></a>00488 } <span class="comment">// namespace core</span>
+<a name="l00490"></a>00490 <span class="comment"></span>
+<a name="l00492"></a>00492
+<a name="l00495"></a>00495 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen);
+<a name="l00496"></a>00496 integer <a class="code" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
+<a name="l00497"></a>00497 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
+<a name="l00498"></a>00498
+<a name="l00499"></a>00499 <span class="keyword">namespace </span>core {
+<a name="l00500"></a>00500 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
+<a name="l00501"></a>00501 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
+<a name="l00502"></a>00502 } <span class="comment">// namespace core</span>
+<a name="l00504"></a>00504 <span class="comment"></span>
+<a name="l00506"></a>00506
+<a name="l00509"></a>00509 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00510"></a>00510 integer <a class="code" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00511"></a>00511
+<a name="l00512"></a>00512 <span class="keyword">namespace </span>core {
+<a name="l00513"></a>00513 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00514"></a>00514 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00515"></a>00515 } <span class="comment">// namespace core</span>
+<a name="l00517"></a>00517 <span class="comment"></span>
+<a name="l00519"></a>00519
<a name="l00524"></a>00524
-<a name="l00526"></a>00526 <span class="comment">// Template function definitions</span>
-<a name="l00527"></a>00527
-<a name="l00541"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acf287891cafa7f5b20f5e56476fa1fc6">00541</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00542"></a>00542 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
-<a name="l00543"></a>00543 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
-<a name="l00544"></a>00544 {
-<a name="l00545"></a>00545 <span class="keywordflow">if</span> (n >= 0) {
-<a name="l00546"></a>00546 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
-<a name="l00547"></a>00547 _init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
-<a name="l00548"></a>00548 <span class="keywordflow">else</span> _init(boost::uintmax_t(n));
-<a name="l00549"></a>00549 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n == (std::numeric_limits<T>::min)()) {
-<a name="l00550"></a>00550 <span class="comment">// Have to treat the minimum number carefully, because -n is not</span>
-<a name="l00551"></a>00551 <span class="comment">// what you'd think it is.</span>
-<a name="l00552"></a>00552 _init(boost::uintmax_t(-(n+1)));
-<a name="l00553"></a>00553 <a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">_set_negative</a>(<span class="keyword">true</span>);
-<a name="l00554"></a>00554 --(*this);
-<a name="l00555"></a>00555 } <span class="keywordflow">else</span> {
-<a name="l00556"></a>00556 _init(boost::uintmax_t(-n));
-<a name="l00557"></a>00557 <a class="code" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">_set_negative</a>(<span class="keyword">true</span>);
-<a name="l00558"></a>00558 }
-<a name="l00559"></a>00559 }
-<a name="l00560"></a>00560
-<a name="l00574"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">00574</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
-<a name="l00575"></a>00575 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
-<a name="l00576"></a>00576 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
-<a name="l00577"></a>00577 {
-<a name="l00578"></a>00578 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
-<a name="l00579"></a>00579 _init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
-<a name="l00580"></a>00580 <span class="keywordflow">else</span> _init(boost::uintmax_t(n));
-<a name="l00581"></a>00581 }
-<a name="l00582"></a>00582
-<a name="l00593"></a>00593 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00594"></a><a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">00594</a> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n) {
-<a name="l00595"></a>00595 n.<a class="code" href="classboost_1_1xint_1_1integer.html#a488e6040ec9bd3cd97279ef53c014773">_throw_if_nan</a>();
-<a name="l00596"></a>00596 <span class="keywordflow">if</span> (n < (std::numeric_limits<T>::min)()
-<a name="l00597"></a>00597 || n > (std::numeric_limits<T>::max)())
-<a name="l00598"></a>00598 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>(<span class="stringliteral">"value out of range for requested conversion"</span>);
-<a name="l00599"></a>00599
-<a name="l00600"></a>00600 T rval=0;
-<a name="l00601"></a>00601 <span class="keywordtype">size_t</span> len=n.<a class="code" href="classboost_1_1xint_1_1integer.html#ad4a65fa154847321803888988d18d244">_get_length</a>();
-<a name="l00602"></a>00602 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<len; ++x)
-<a name="l00603"></a>00603 rval=static_cast<T>((rval * <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">detail::digit_overflowbit</a>)
-<a name="l00604"></a>00604 + n.<a class="code" href="classboost_1_1xint_1_1integer.html#acb5a0571dc9544921e603c00a0c6c93a">_get_digit</a>(len-x-1));
-<a name="l00605"></a>00605 <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) rval *= -1;
-<a name="l00606"></a>00606 <span class="keywordflow">return</span> rval;
-<a name="l00607"></a>00607 }
-<a name="l00608"></a>00608
-<a name="l00622"></a>00622 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00623"></a><a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">00623</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen) {
-<a name="l00624"></a>00624 <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a> *obj=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a>(gen);
-<a name="l00625"></a>00625 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">detail::set_random_generator</a>(obj);
-<a name="l00626"></a>00626 }
-<a name="l00627"></a>00627
-<a name="l00630"></a>00630 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
-<a name="l00631"></a><a class="code" href="namespaceboost_1_1xint.html#ade3e222abd81f9935cd0c003f345ed57">00631</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#ade3e222abd81f9935cd0c003f345ed57">operator<<</a>(std::basic_ostream<charT,
-<a name="l00632"></a>00632 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a>& n)
-<a name="l00633"></a>00633 {
-<a name="l00634"></a>00634 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) {
-<a name="l00635"></a>00635 out << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>;
-<a name="l00636"></a>00636 } <span class="keywordflow">else</span> {
-<a name="l00637"></a>00637 <span class="keywordtype">int</span> base=((out.flags() & std::ios::hex) ? 16
-<a name="l00638"></a>00638 : (out.flags() & std::ios::oct) ? 8
-<a name="l00639"></a>00639 : 10);
-<a name="l00640"></a>00640 <span class="keywordtype">bool</span> upperCase=(out.flags() & std::ios::uppercase ? <span class="keyword">true</span> : <span class="keyword">false</span>);
-<a name="l00641"></a>00641
-<a name="l00642"></a>00642 <span class="keywordflow">if</span> (out.flags() & std::ios::showbase) {
-<a name="l00643"></a>00643 <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) out << <span class="stringliteral">"-"</span>;
-<a name="l00644"></a>00644
-<a name="l00645"></a>00645 <span class="keywordflow">if</span> (base==16 && upperCase) out << <span class="stringliteral">"0X"</span>;
-<a name="l00646"></a>00646 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==16) out << <span class="stringliteral">"0x"</span>;
-<a name="l00647"></a>00647 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==8) out << <span class="stringliteral">"0"</span>;
-<a name="l00648"></a>00648
-<a name="l00649"></a>00649 out << <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">xint::to_string</a>(<a class="code" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672" title="Returns the absolute value of an integer.">abs</a>(n), base, upperCase);
-<a name="l00650"></a>00650 } <span class="keywordflow">else</span> {
-<a name="l00651"></a>00651 out << <a class="code" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4" title="Creates a string representation of the specified integer.">xint::to_string</a>(n, base, upperCase);
-<a name="l00652"></a>00652 }
-<a name="l00653"></a>00653 }
-<a name="l00654"></a>00654 <span class="keywordflow">return</span> out;
-<a name="l00655"></a>00655 }
-<a name="l00656"></a>00656
-<a name="l00657"></a>00657 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
-<a name="l00658"></a><a class="code" href="namespaceboost_1_1xint.html#a6828d3d928f3a859f82a04b70634e4b3">00658</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#a6828d3d928f3a859f82a04b70634e4b3">operator>></a>(std::basic_istream<charT,
-<a name="l00659"></a>00659 traits>& in, <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a>& n)
-<a name="l00660"></a>00660 {
-<a name="l00661"></a>00661 <span class="keywordtype">int</span> hex=(in.flags() & std::ios::hex) ? 1 : 0;
-<a name="l00662"></a>00662 <span class="keywordtype">int</span> dec=(in.flags() & std::ios::dec) ? 1 : 0;
-<a name="l00663"></a>00663 <span class="keywordtype">int</span> oct=(in.flags() & std::ios::oct) ? 1 : 0;
-<a name="l00664"></a>00664 <span class="keywordtype">int</span> count=hex+dec+oct;
-<a name="l00665"></a>00665
-<a name="l00666"></a>00666 <span class="keywordtype">size_t</span> base=<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>;
-<a name="l00667"></a>00667 <span class="keywordflow">if</span> (count==1) {
-<a name="l00668"></a>00668 <span class="keywordflow">if</span> (hex) base=16;
-<a name="l00669"></a>00669 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (oct) base=8;
-<a name="l00670"></a>00670 <span class="keywordflow">else</span> base=10;
-<a name="l00671"></a>00671 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count>1) base=10;
-<a name="l00672"></a>00672 <span class="comment">// else auto-base</span>
-<a name="l00673"></a>00673
-<a name="l00674"></a>00674 std::string s;
-<a name="l00675"></a>00675 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'+'</span>) {
-<a name="l00676"></a>00676 in.ignore();
-<a name="l00677"></a>00677 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'-'</span>) {
-<a name="l00678"></a>00678 in.ignore();
-<a name="l00679"></a>00679 s.push_back(<span class="charliteral">'-'</span>);
-<a name="l00680"></a>00680 }
-<a name="l00681"></a>00681
-<a name="l00682"></a>00682 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
-<a name="l00683"></a>00683 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'0'</span>) {
-<a name="l00684"></a>00684 in.ignore();
-<a name="l00685"></a>00685 <span class="keywordtype">int</span> c=in.peek();
-<a name="l00686"></a>00686 <span class="keywordflow">if</span> (c==<span class="charliteral">'x'</span> || c==<span class="charliteral">'X'</span>) {
-<a name="l00687"></a>00687 in.ignore();
-<a name="l00688"></a>00688 base=16;
-<a name="l00689"></a>00689 } <span class="keywordflow">else</span> base=8;
-<a name="l00690"></a>00690 } <span class="keywordflow">else</span> base=10;
-<a name="l00691"></a>00691 }
-<a name="l00692"></a>00692
-<a name="l00693"></a>00693 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'#'</span>) {
-<a name="l00694"></a>00694 <span class="comment">// Must be either #NaN# or an error</span>
-<a name="l00695"></a>00695 <span class="keywordtype">char</span> buffer[6];
-<a name="l00696"></a>00696 std::streamsize size=in.readsome(buffer, 5);
-<a name="l00697"></a>00697 buffer[size]=0;
-<a name="l00698"></a>00698 std::string str(buffer);
-<a name="l00699"></a>00699
-<a name="l00700"></a>00700 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) n=<a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>(<a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>());
-<a name="l00701"></a>00701 <span class="keywordflow">else</span> in.setstate(std::ios::failbit);
-<a name="l00702"></a>00702 } <span class="keywordflow">else</span> {
-<a name="l00703"></a>00703 <span class="keywordflow">while</span> (in) {
-<a name="l00704"></a>00704 <span class="keywordtype">int</span> c=in.peek();
-<a name="l00705"></a>00705 <span class="keywordflow">if</span> ((base==8 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'7'</span>)) ||
-<a name="l00706"></a>00706 (base==10 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>)) ||
-<a name="l00707"></a>00707 (base==16 && ((c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>) || (c>=<span class="charliteral">'a'</span> && c<=<span class="charliteral">'f'</span>) ||
-<a name="l00708"></a>00708 (c>=<span class="charliteral">'A'</span> && c<=<span class="charliteral">'F'</span>))))
-<a name="l00709"></a>00709 {
-<a name="l00710"></a>00710 in.ignore();
-<a name="l00711"></a>00711 s.push_back(<span class="keywordtype">char</span>(c));
-<a name="l00712"></a>00712 } <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
-<a name="l00713"></a>00713 }
-<a name="l00714"></a>00714
-<a name="l00715"></a>00715 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> allow=<a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
-<a name="l00716"></a>00716 <span class="keywordflow">try</span> {
-<a name="l00717"></a>00717 <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a> testValue=<a class="code" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">xint::from_string</a>(s, base);
-<a name="l00718"></a>00718 n=testValue;
-<a name="l00719"></a>00719 } <span class="keywordflow">catch</span> (<a class="code" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a>&) {
-<a name="l00720"></a>00720 <span class="comment">// Catch invalid strings</span>
-<a name="l00721"></a>00721 in.setstate(std::ios::failbit);
-<a name="l00722"></a>00722 }
+<a name="l00525"></a>00525 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a223232e2fe1af65bbba7b67a10f14f48">operator!</a>(<span class="keyword">const</span> integer& n1);
+<a name="l00526"></a>00526 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">operator<</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00527"></a>00527 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">operator></a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00528"></a>00528 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">operator<=</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00529"></a>00529 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">operator>=</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00530"></a>00530 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">operator==</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00531"></a>00531 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">operator!=</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> integer& a);
+<a name="l00534"></a>00534 integer <a class="code" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> integer& a);
+<a name="l00535"></a>00535 integer <a class="code" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">operator+</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00536"></a>00536 integer <a class="code" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">operator-</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00537"></a>00537 integer <a class="code" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">operator*</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00538"></a>00538 integer <a class="code" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">operator/</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00539"></a>00539 integer <a class="code" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">operator%</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00540"></a>00540 integer <a class="code" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00541"></a>00541 integer <a class="code" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00542"></a>00542 integer <a class="code" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00543"></a>00543
+<a name="l00544"></a>00544 <span class="keyword">namespace </span>core {
+<a name="l00545"></a>00545 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">operator!</a>(<span class="keyword">const</span> integer& n1);
+<a name="l00546"></a>00546 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">operator<</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00547"></a>00547 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator></a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00548"></a>00548 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator<=</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00549"></a>00549 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator>=</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00550"></a>00550 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">operator==</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00551"></a>00551 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">operator!=</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00552"></a>00552
+<a name="l00553"></a>00553 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& a);
+<a name="l00554"></a>00554 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& a);
+<a name="l00555"></a>00555 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00556"></a>00556 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00557"></a>00557 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">operator*</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00558"></a>00558 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">operator/</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00559"></a>00559 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">operator%</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00560"></a>00560 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00561"></a>00561 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00562"></a>00562 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2);
+<a name="l00563"></a>00563 } <span class="comment">// namespace core</span>
+<a name="l00565"></a>00565 <span class="comment"></span>
+<a name="l00567"></a>00567
+<a name="l00570"></a>00570 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd" title="Tells whether the library was compiled with Secure Mode enabled.">opt_secure_mode</a>();
+<a name="l00571"></a>00571 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379" title="Tells whether the library was compiled with the Thread Safe Operation option enabled...">opt_thread_safe</a>();
+<a name="l00572"></a>00572
+<a name="l00573"></a>00573 <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 &n1, <span class="keyword">const</span> integer &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
+<a name="l00574"></a>00574 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> integer& n);
+<a name="l00575"></a>00575 integer <a class="code" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2);
+<a name="l00576"></a>00576 integer <a class="code" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2);
+<a name="l00577"></a>00577
+<a name="l00578"></a>00578 <span class="keyword">namespace </span>core {
+<a name="l00579"></a>00579 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">compare</a>(<span class="keyword">const</span> integer &n1, <span class="keyword">const</span> integer &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
+<a name="l00580"></a>00580 <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& n);
+<a name="l00581"></a>00581 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">gcd</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2);
+<a name="l00582"></a>00582 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">lcm</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2);
+<a name="l00583"></a>00583 } <span class="comment">// namespace core</span>
+<a name="l00585"></a>00585 <span class="comment"></span>
+<a name="l00587"></a>00587 <span class="comment">// Exception classes</span>
+<a name="l00588"></a>00588
+<a name="l00591"></a>00591
+<a name="l00595"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html">00595</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">invalid_base</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00596"></a>00596 <span class="keyword">public</span>:
+<a name="l00597"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">00597</a> <a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">invalid_base</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid base"</span>): invalid_argument(what)
+<a name="l00598"></a>00598 { }
+<a name="l00599"></a>00599 };
+<a name="l00600"></a>00600
+<a name="l00605"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html">00605</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">invalid_digit</a>: <span class="keyword">public</span> std::range_error {
+<a name="l00606"></a>00606 <span class="keyword">public</span>:
+<a name="l00607"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">00607</a> <a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">invalid_digit</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid digit"</span>): range_error(what)
+<a name="l00608"></a>00608 { }
+<a name="l00609"></a>00609 };
+<a name="l00610"></a>00610
+<a name="l00615"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html">00615</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">invalid_modulus</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00616"></a>00616 <span class="keyword">public</span>:
+<a name="l00617"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">00617</a> <a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">invalid_modulus</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid modulus"</span>):
+<a name="l00618"></a>00618 invalid_argument(what) { }
+<a name="l00619"></a>00619 };
+<a name="l00620"></a>00620
+<a name="l00625"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html">00625</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">divide_by_zero</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00626"></a>00626 <span class="keyword">public</span>:
+<a name="l00627"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">00627</a> <a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">divide_by_zero</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"divide by zero error"</span>):
+<a name="l00628"></a>00628 invalid_argument(what) { }
+<a name="l00629"></a>00629 };
+<a name="l00630"></a>00630
+<a name="l00635"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html">00635</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">cannot_represent</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00636"></a>00636 <span class="keyword">public</span>:
+<a name="l00637"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">00637</a> <a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">cannot_represent</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00638"></a>00638 <span class="stringliteral">"cannot represent the requested value"</span>): invalid_argument(what) { }
+<a name="l00639"></a>00639 };
+<a name="l00640"></a>00640
+<a name="l00645"></a><a class="code" href="classboost_1_1xint_1_1too__big.html">00645</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>: <span class="keyword">public</span> std::range_error {
+<a name="l00646"></a>00646 <span class="keyword">public</span>:
+<a name="l00647"></a><a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">00647</a> <a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">too_big</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00648"></a>00648 <span class="stringliteral">"value out of range for requested conversion"</span>): range_error(what) { }
+<a name="l00649"></a>00649 };
+<a name="l00650"></a>00650
+<a name="l00662"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html">00662</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>: <span class="keyword">public</span> std::runtime_error {
+<a name="l00663"></a>00663 <span class="keyword">public</span>:
+<a name="l00664"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">00664</a> <a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">not_a_number</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"attempted to use a Not-a-Number"</span>):
+<a name="l00665"></a>00665 runtime_error(what) { }
+<a name="l00666"></a>00666 };
+<a name="l00667"></a>00667
+<a name="l00680"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html">00680</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1no__strong__random.html" title="Exception class.">no_strong_random</a>: <span class="keyword">public</span> std::runtime_error {
+<a name="l00681"></a>00681 <span class="keyword">public</span>:
+<a name="l00682"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">00682</a> <a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">no_strong_random</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00683"></a>00683 <span class="stringliteral">"system does not have a strong random generator"</span>):
+<a name="l00684"></a>00684 runtime_error(what) { }
+<a name="l00685"></a>00685 };
+<a name="l00686"></a>00686
+<a name="l00694"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html">00694</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a> {
+<a name="l00695"></a>00695 <span class="keyword">public</span>:
+<a name="l00696"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">00696</a> <a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">overflow_error</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00697"></a>00697 <span class="stringliteral">"overflow error: can't obtain enough memory to represent the requested number"</span>):
+<a name="l00698"></a>00698 std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>(what) { }
+<a name="l00699"></a>00699 };
+<a name="l00701"></a>00701
+<a name="l00703"></a>00703 <span class="comment">// Template function definitions</span>
+<a name="l00704"></a>00704
+<a name="l00705"></a>00705 <span class="keyword">namespace </span>core {
+<a name="l00706"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">00706</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00707"></a>00707 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00708"></a>00708 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
+<a name="l00709"></a>00709 {
+<a name="l00710"></a>00710 <span class="keywordflow">if</span> (n >= 0) {
+<a name="l00711"></a>00711 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
+<a name="l00712"></a>00712 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
+<a name="l00713"></a>00713 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(n));
+<a name="l00714"></a>00714 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n == (std::numeric_limits<T>::min)()) {
+<a name="l00715"></a>00715 <span class="comment">// Have to treat the minimum number carefully, because -n is not</span>
+<a name="l00716"></a>00716 <span class="comment">// what you'd think it is.</span>
+<a name="l00717"></a>00717 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(-(n+1)));
+<a name="l00718"></a>00718 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keyword">true</span>);
+<a name="l00719"></a>00719 --(*this);
+<a name="l00720"></a>00720 } <span class="keywordflow">else</span> {
+<a name="l00721"></a>00721 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(-n));
+<a name="l00722"></a>00722 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keyword">true</span>);
<a name="l00723"></a>00723 }
-<a name="l00724"></a>00724
-<a name="l00725"></a>00725 <span class="keywordflow">return</span> in;
-<a name="l00726"></a>00726 }
-<a name="l00728"></a>00728
-<a name="l00729"></a>00729 } <span class="comment">// namespace xint</span>
-<a name="l00730"></a>00730 } <span class="comment">// namespace boost</span>
-<a name="l00731"></a>00731
-<a name="l00732"></a>00732 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_H</span>
+<a name="l00724"></a>00724 }
+<a name="l00725"></a>00725 } <span class="comment">// namespace core</span>
+<a name="l00726"></a>00726
+<a name="l00727"></a>00727 <span class="keyword">namespace </span>core {
+<a name="l00728"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">00728</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00729"></a>00729 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00730"></a>00730 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
+<a name="l00731"></a>00731 {
+<a name="l00732"></a>00732 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
+<a name="l00733"></a>00733 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
+<a name="l00734"></a>00734 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(n));
+<a name="l00735"></a>00735 }
+<a name="l00736"></a>00736 } <span class="comment">// namespace core</span>
+<a name="l00737"></a>00737
+<a name="l00750"></a><a class="code" href="classboost_1_1xint_1_1integer.html#acf287891cafa7f5b20f5e56476fa1fc6">00750</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00751"></a>00751 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00752"></a>00752 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
+<a name="l00753"></a>00753 {
+<a name="l00754"></a>00754 data=0;
+<a name="l00755"></a>00755 <span class="keywordflow">try</span> {
+<a name="l00756"></a>00756 *<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>(n));
+<a name="l00757"></a>00757 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00758"></a>00758 <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="l00759"></a>00759 <span class="keyword">delete</span> data;
+<a name="l00760"></a>00760 data=0;
+<a name="l00761"></a>00761 }
+<a name="l00762"></a>00762 }
+<a name="l00763"></a>00763
+<a name="l00776"></a><a class="code" href="classboost_1_1xint_1_1integer.html#a9941bbf92bcfa48233110c451e676f64">00776</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1integer.html#a33ad2603be1c3ae3823523265f7ee600" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00777"></a>00777 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00778"></a>00778 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
+<a name="l00779"></a>00779 {
+<a name="l00780"></a>00780 data=0;
+<a name="l00781"></a>00781 <span class="keywordflow">try</span> {
+<a name="l00782"></a>00782 *<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>(n));
+<a name="l00783"></a>00783 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00784"></a>00784 <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="l00785"></a>00785 <span class="keyword">delete</span> data;
+<a name="l00786"></a>00786 data=0;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788 }
+<a name="l00789"></a>00789
+<a name="l00790"></a>00790 <span class="keyword">namespace </span>core {
+<a name="l00791"></a>00791 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00792"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">00792</a> T <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) {
+<a name="l00793"></a>00793 <span class="keywordflow">if</span> (n < (std::numeric_limits<T>::min)()
+<a name="l00794"></a>00794 || n > (std::numeric_limits<T>::max)())
+<a name="l00795"></a>00795 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>(<span class="stringliteral">"value out of range for requested conversion"</span>);
+<a name="l00796"></a>00796
+<a name="l00797"></a>00797 T rval=0;
+<a name="l00798"></a>00798 <span class="keywordtype">size_t</span> len=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61ca83a82f49f63b3de8729cc9857f0c">_get_length</a>();
+<a name="l00799"></a>00799 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<len; ++x)
+<a name="l00800"></a>00800 rval=static_cast<T>((rval * <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">detail::digit_overflowbit</a>)
+<a name="l00801"></a>00801 + n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a78bf0cc9214b8f0b1217d4b815a06827">_get_digit</a>(len-x-1));
+<a name="l00802"></a>00802 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>() < 0) rval *= -1;
+<a name="l00803"></a>00803 <span class="keywordflow">return</span> rval;
+<a name="l00804"></a>00804 }
+<a name="l00805"></a>00805 } <span class="comment">// namespace core</span>
+<a name="l00806"></a>00806
+<a name="l00819"></a>00819 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00820"></a><a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">00820</a> T <a class="code" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n) {
+<a name="l00821"></a>00821 <span class="keywordflow">try</span> {
+<a name="l00822"></a>00822 <span class="keywordflow">return</span> to<T>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
+<a name="l00823"></a>00823 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00824"></a>00824 <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="l00825"></a>00825 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00826"></a>00826 }
+<a name="l00827"></a>00827 }
+<a name="l00828"></a>00828
+<a name="l00842"></a>00842 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00843"></a><a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">00843</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen) {
+<a name="l00844"></a>00844 <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a> *obj=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a>(gen);
+<a name="l00845"></a>00845 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">detail::set_random_generator</a>(obj);
+<a name="l00846"></a>00846 }
+<a name="l00847"></a>00847
+<a name="l00850"></a>00850 <span class="keyword">namespace </span>core {
+<a name="l00851"></a>00851 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00852"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">00852</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">operator<<</a>(std::basic_ostream<charT,
+<a name="l00853"></a>00853 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n)
+<a name="l00854"></a>00854 {
+<a name="l00855"></a>00855 <span class="keywordtype">int</span> base=((out.flags() & std::ios::hex) ? 16
+<a name="l00856"></a>00856 : (out.flags() & std::ios::oct) ? 8
+<a name="l00857"></a>00857 : 10);
+<a name="l00858"></a>00858 <span class="keywordtype">bool</span> upperCase=(out.flags() & std::ios::uppercase ? <span class="keyword">true</span> : <span class="keyword">false</span>);
+<a name="l00859"></a>00859
+<a name="l00860"></a>00860 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a>();
+<a name="l00861"></a>00861 <span class="keywordflow">if</span> ((out.flags() & std::ios::showpos) && nsign >= 0) out << <span class="stringliteral">"+"</span>;
+<a name="l00862"></a>00862
+<a name="l00863"></a>00863 <span class="keywordflow">if</span> (out.flags() & std::ios::showbase) {
+<a name="l00864"></a>00864 <span class="keywordflow">if</span> (nsign < 0) out << <span class="stringliteral">"-"</span>;
+<a name="l00865"></a>00865
+<a name="l00866"></a>00866 <span class="keywordflow">if</span> (base==16 && upperCase) out << <span class="stringliteral">"0X"</span>;
+<a name="l00867"></a>00867 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==16) out << <span class="stringliteral">"0x"</span>;
+<a name="l00868"></a>00868 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==8) out << <span class="stringliteral">"0"</span>;
+<a name="l00869"></a>00869
+<a name="l00870"></a>00870 out << <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">to_string</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">abs</a>(n), base, upperCase);
+<a name="l00871"></a>00871 } <span class="keywordflow">else</span> {
+<a name="l00872"></a>00872 out << <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">to_string</a>(n, base, upperCase);
+<a name="l00873"></a>00873 }
+<a name="l00874"></a>00874 <span class="keywordflow">return</span> out;
+<a name="l00875"></a>00875 }
+<a name="l00876"></a>00876 } <span class="comment">// namespace core</span>
+<a name="l00877"></a>00877
+<a name="l00878"></a>00878 <span class="keyword">namespace </span>core {
+<a name="l00879"></a>00879 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00880"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">00880</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">operator>></a>(std::basic_istream<charT,
+<a name="l00881"></a>00881 traits>& in, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n)
+<a name="l00882"></a>00882 {
+<a name="l00883"></a>00883 <span class="keywordtype">int</span> hex=(in.flags() & std::ios::hex) ? 1 : 0;
+<a name="l00884"></a>00884 <span class="keywordtype">int</span> dec=(in.flags() & std::ios::dec) ? 1 : 0;
+<a name="l00885"></a>00885 <span class="keywordtype">int</span> oct=(in.flags() & std::ios::oct) ? 1 : 0;
+<a name="l00886"></a>00886 <span class="keywordtype">int</span> count=hex+dec+oct;
+<a name="l00887"></a>00887
+<a name="l00888"></a>00888 <span class="keywordtype">size_t</span> base=<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>;
+<a name="l00889"></a>00889 <span class="keywordflow">if</span> (count==1) {
+<a name="l00890"></a>00890 <span class="keywordflow">if</span> (hex) base=16;
+<a name="l00891"></a>00891 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (oct) base=8;
+<a name="l00892"></a>00892 <span class="keywordflow">else</span> base=10;
+<a name="l00893"></a>00893 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count>1) base=10;
+<a name="l00894"></a>00894 <span class="comment">// else auto-base</span>
+<a name="l00895"></a>00895
+<a name="l00896"></a>00896 std::string s;
+<a name="l00897"></a>00897 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'+'</span>) {
+<a name="l00898"></a>00898 in.ignore();
+<a name="l00899"></a>00899 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'-'</span>) {
+<a name="l00900"></a>00900 in.ignore();
+<a name="l00901"></a>00901 s.push_back(<span class="charliteral">'-'</span>);
+<a name="l00902"></a>00902 }
+<a name="l00903"></a>00903
+<a name="l00904"></a>00904 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
+<a name="l00905"></a>00905 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'0'</span>) {
+<a name="l00906"></a>00906 in.ignore();
+<a name="l00907"></a>00907 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00908"></a>00908 <span class="keywordflow">if</span> (c==<span class="charliteral">'x'</span> || c==<span class="charliteral">'X'</span>) {
+<a name="l00909"></a>00909 in.ignore();
+<a name="l00910"></a>00910 base=16;
+<a name="l00911"></a>00911 } <span class="keywordflow">else</span> base=8;
+<a name="l00912"></a>00912 } <span class="keywordflow">else</span> base=10;
+<a name="l00913"></a>00913 }
+<a name="l00914"></a>00914
+<a name="l00915"></a>00915 <span class="keywordflow">while</span> (in) {
+<a name="l00916"></a>00916 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00917"></a>00917 <span class="keywordflow">if</span> ((base==8 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'7'</span>)) ||
+<a name="l00918"></a>00918 (base==10 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>)) ||
+<a name="l00919"></a>00919 (base==16 && ((c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>) || (c>=<span class="charliteral">'a'</span> && c<=<span class="charliteral">'f'</span>) ||
+<a name="l00920"></a>00920 (c>=<span class="charliteral">'A'</span> && c<=<span class="charliteral">'F'</span>))))
+<a name="l00921"></a>00921 {
+<a name="l00922"></a>00922 in.ignore();
+<a name="l00923"></a>00923 s.push_back(<span class="keywordtype">char</span>(c));
+<a name="l00924"></a>00924 } <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
+<a name="l00925"></a>00925 }
+<a name="l00926"></a>00926
+<a name="l00927"></a>00927 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> allow=<a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
+<a name="l00928"></a>00928 <span class="keywordflow">try</span> {
+<a name="l00929"></a>00929 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> testValue=<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">from_string</a>(s, base);
+<a name="l00930"></a>00930 n=testValue;
+<a name="l00931"></a>00931 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00932"></a>00932 <span class="comment">// Catch invalid strings</span>
+<a name="l00933"></a>00933 in.setstate(std::ios::failbit);
+<a name="l00934"></a>00934 }
+<a name="l00935"></a>00935
+<a name="l00936"></a>00936 <span class="keywordflow">return</span> in;
+<a name="l00937"></a>00937 }
+<a name="l00938"></a>00938 } <span class="comment">// namespace core</span>
+<a name="l00940"></a>00940 <span class="comment"></span>
+<a name="l00943"></a>00943 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00944"></a><a class="code" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">00944</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">operator<<</a>(std::basic_ostream<charT,
+<a name="l00945"></a>00945 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n)
+<a name="l00946"></a>00946 {
+<a name="l00947"></a>00947 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00948"></a>00948 out << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>;
+<a name="l00949"></a>00949 <span class="keywordflow">return</span> out;
+<a name="l00950"></a>00950 } <span class="keywordflow">else</span> {
+<a name="l00951"></a>00951 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">core::operator<<</a>(out, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
+<a name="l00952"></a>00952 }
+<a name="l00953"></a>00953 }
+<a name="l00954"></a>00954
+<a name="l00955"></a>00955 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00956"></a><a class="code" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">00956</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">operator>></a>(std::basic_istream<charT,
+<a name="l00957"></a>00957 traits>& in, <a class="code" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>& n)
+<a name="l00958"></a>00958 {
+<a name="l00959"></a>00959 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'#'</span>) {
+<a name="l00960"></a>00960 <span class="comment">// Must be either #NaN# or an error</span>
+<a name="l00961"></a>00961 <span class="keywordtype">char</span> buffer[6];
+<a name="l00962"></a>00962 std::streamsize size=in.readsome(buffer, 5);
+<a name="l00963"></a>00963 buffer[size]=0;
+<a name="l00964"></a>00964 std::string str(buffer);
+<a name="l00965"></a>00965
+<a name="l00966"></a>00966 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) n=<a class="code" href="classboost_1_1xint_1_1integer.html#a379808d01a0e66ac61f309f211c4fb44">integer::nan</a>();
+<a name="l00967"></a>00967 <span class="keywordflow">else</span> in.setstate(std::ios::failbit);
+<a name="l00968"></a>00968 } <span class="keywordflow">else</span> {
+<a name="l00969"></a>00969 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a> nn;
+<a name="l00970"></a>00970 <a class="code" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">core::operator>></a>(in, nn);
+<a name="l00971"></a>00971 <span class="keywordflow">if</span> (in) n=nn;
+<a name="l00972"></a>00972 }
+<a name="l00973"></a>00973
+<a name="l00974"></a>00974 <span class="keywordflow">return</span> in;
+<a name="l00975"></a>00975 }
+<a name="l00977"></a>00977
+<a name="l00978"></a>00978 } <span class="comment">// namespace xint</span>
+<a name="l00979"></a>00979 } <span class="comment">// namespace boost</span>
+<a name="l00980"></a>00980
+<a name="l00981"></a>00981 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_H</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
+<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
<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/xint__data__t_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint__data__t_8hpp.html (original)
+++ sandbox/xint/doc/xint__data__t_8hpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -42,7 +42,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -57,7 +57,7 @@
<p>Definition in file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</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
+<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
<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/xint__data__t_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint__data__t_8hpp_source.html (original)
+++ sandbox/xint/doc/xint__data__t_8hpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -104,7 +104,7 @@
<a name="l00097"></a>00097
<a name="l00098"></a>00098 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_DATA_T_H</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
+<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
<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/xint__monty_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint__monty_8hpp.html (original)
+++ sandbox/xint/doc/xint__monty_8hpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -36,25 +36,30 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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 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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac">boost::xint::inverse0</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395">boost::xint::montgomeryR</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860">boost::xint::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4">boost::xint::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37">boost::xint::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4">boost::xint::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core::inverse0</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core::montgomeryR</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the most efficient R value for a number and the library's internal representation. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d">boost::xint::core::toMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core::fromMontgomeryForm</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the <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 </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Internally-used functions. </p>
@@ -62,7 +67,7 @@
<p>Definition in file <a class="el" href="xint__monty_8hpp_source.html">xint_monty.hpp</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
+<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
<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/xint__monty_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint__monty_8hpp_source.html (original)
+++ sandbox/xint/doc/xint__monty_8hpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -42,21 +42,23 @@
<a name="l00023"></a>00023 <span class="preprocessor"></span>
<a name="l00024"></a>00024 <span class="keyword">namespace </span>boost {
<a name="l00025"></a>00025 <span class="keyword">namespace </span>xint {
-<a name="l00026"></a>00026
-<a name="l00029"></a>00029 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="namespaceboost_1_1xint.html#a50ceb8725ce5a326ef1e43a4d593efac" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer& n);
-<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint.html#a5a7360e7330dcc35838ba324c523b395" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& n);
-<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint.html#a512ff2447d52a228c1c9f99fea8fd860" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
-<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint.html#a07914d9486e835d2dcea3268937296c4" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
-<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint.html#ab62e3e69cbc7781a86fc9a0192ef5d37" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& y, <span class="keyword">const</span> integer&
-<a name="l00034"></a>00034 m, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> nPrime0);
-<a name="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint.html#a9e0c8f5da23ce668a7b428256f6b8ed4" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m);
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 } <span class="comment">// namespace xint</span>
-<a name="l00039"></a>00039 } <span class="comment">// namespace boost</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MONTY_H</span>
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>core {
+<a name="l00027"></a>00027
+<a name="l00030"></a>00030 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2" title="Returns the low digit of the inverse of a number. Used internally.">inverse0</a>(<span class="keyword">const</span> integer& n);
+<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(<span class="keyword">const</span> integer& n);
+<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4a33279cf67c53f80a4e5935f0515d4d" title="Returns the Montgomery form of a number. Used for testing.">toMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
+<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e" title="Returns the integer from the Montgomery form of a number. Used for testing.">fromMontgomeryForm</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m);
+<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d" title="Returns the Montgomery equivalent of mulmod(a, b, n). Used internally.">montgomeryMultiplyMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& y, <span class="keyword">const</span> integer&
+<a name="l00035"></a>00035 m, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> nPrime0);
+<a name="l00036"></a>00036 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<span class="keyword">const</span> integer& x, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m);
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 } <span class="comment">// namespace core</span>
+<a name="l00040"></a>00040 } <span class="comment">// namespace xint</span>
+<a name="l00041"></a>00041 } <span class="comment">// namespace boost</span>
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_MONTY_H</span>
</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
+<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
<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/xint__test_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint__test_8hpp.html (original)
+++ sandbox/xint/doc/xint__test_8hpp.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -36,7 +36,7 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the functions in the XInt library are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </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>
@@ -57,7 +57,7 @@
<p>Definition in file <a class="el" href="xint__test_8hpp_source.html">xint_test.hpp</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
+<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
<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/xint__test_8hpp_source.html
==============================================================================
--- sandbox/xint/doc/xint__test_8hpp_source.html (original)
+++ sandbox/xint/doc/xint__test_8hpp_source.html 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -57,7 +57,7 @@
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_TEST_H</span>
</pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 10:52:51 2010 for The Extended Integer (XInt) Library by
+<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
<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/src/bit_manipulations.cpp
==============================================================================
--- sandbox/xint/src/bit_manipulations.cpp (original)
+++ sandbox/xint/src/bit_manipulations.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -23,16 +23,9 @@
using namespace detail;
-/*! \brief Queries the value of a particular bit in an integer.
-
-\param[in] n The integer to query.
-\param[in] bit The zero-based index of the bit you're asking about.
+namespace core {
-\returns \c true if the specified bit is set (has a value of one), \c false if
-it is clear.
-*/
bool getbit(const integer& n, size_t bit) {
- n._throw_if_nan();
size_t index=bit/bits_per_digit;
if (index < n._get_length()) {
digit_t mask=(digit_t(1) << (bit % bits_per_digit));
@@ -40,15 +33,7 @@
} else return false;
}
-/*! \brief Sets a specific bit in an integer to one.
-
-\param[in,out] n The integer to operate on.
-\param[in] bit The zero-based index of the bit to change.
-
-\returns Nothing.
-*/
void setbit(integer& n, size_t bit) {
- n._throw_if_nan();
n._make_unique();
detail::data_t *ndata=n._get_data();
@@ -60,15 +45,7 @@
ndata->skipLeadingZeros();
}
-/*! \brief Sets a specific bit in an integer to zero.
-
-\param[in,out] n The integer to operate on.
-\param[in] bit The zero-based index of the bit to change.
-
-\returns Nothing.
-*/
void clearbit(integer& n, size_t bit) {
- n._throw_if_nan();
size_t index=bit/bits_per_digit;
if (index < n._get_length()) {
n._make_unique();
@@ -78,15 +55,6 @@
}
}
-/*! \brief Obtains the index of the lowest bit in an integer with a value of one.
-
-\param[in] n The integer to query.
-\param[in] valueIfZero The value to return if \c n is zero (as there is no
-correct answer in that case).
-
-\returns The zero-based index of the lowest one-bit in the integer, or \c
-valueIfZero if the integer contains no set bits.
-*/
size_t lowestbit(const integer& n, size_t valueIfZero) {
if (n.sign()==0) return valueIfZero;
@@ -106,30 +74,12 @@
return r;
}
-/*! \brief Obtains the index of the highest bit in an integer with a value of one.
-
-\param[in] n The integer to query.
-\param[in] valueIfZero The value to return if \c n is zero (as there is no
-correct answer in that case).
-
-\returns The zero-based index of the highest one-bit in the integer, or \c
-valueIfZero if the integer contains no set bits.
-*/
size_t highestbit(const integer& n, size_t valueIfZero) {
if (n.sign()==0) return valueIfZero;
return static_cast<size_t>(log2(n)-1);
}
-/*! \brief Combine two integers using a bitwise \c AND operation.
-
-\param[in] n1, n2 The integers to operate on.
-
-\returns An integer with all bits that are set in both parameters turned on.
-*/
integer bitwise_and(const integer& n1, const integer& n2) {
- n1._throw_if_nan();
- n2._throw_if_nan();
-
const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
@@ -146,16 +96,7 @@
return r;
}
-/*! \brief Combine two integers using a bitwise \c OR operation.
-
-\param[in] n1, n2 The integers to operate on.
-
-\returns An integer with all bits that are set in either parameter turned on.
-*/
integer bitwise_or(const integer& n1, const integer& n2) {
- n1._throw_if_nan();
- n2._throw_if_nan();
-
const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
@@ -174,17 +115,7 @@
return r;
}
-/*! \brief Combine two integers using a bitwise \c XOR operation.
-
-\param[in] n1, n2 The integers to operate on.
-
-\returns An integer with all bits that are set in either parameter, but not
-both, turned on.
-*/
integer bitwise_xor(const integer& n1, const integer& n2) {
- n1._throw_if_nan();
- n2._throw_if_nan();
-
const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
@@ -203,6 +134,170 @@
return r;
}
+integer shift(const integer& n, int byBits) {
+ if (byBits > 0) return shift_left(n, byBits);
+ else return shift_right(n, -byBits);
+}
+
+integer shift_left(const integer& n, size_t byBits) {
+ if (byBits==0) return n;
+
+ integer nn(n);
+ nn._make_unique();
+ nn._get_data()->shift_left(byBits);
+ return nn;
+}
+
+integer shift_right(const integer& n, size_t byBits) {
+ if (byBits==0) return n;
+
+ integer nn(n);
+ nn._make_unique();
+ nn._get_data()->shift_right(byBits);
+ return nn;
+}
+
+} // namespace core
+
+/*! \brief Queries the value of a particular bit in an integer.
+
+\param[in] n The integer to query.
+\param[in] bit The zero-based index of the bit you're asking about.
+
+\returns \c true if the specified bit is set (has a value of one), \c false if
+it is clear.
+
+\note If exceptions are blocked, returns false instead of throwing.
+*/
+bool getbit(const integer& n, size_t bit) {
+ try {
+ return getbit(core::integer(n), bit);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return false;
+ }
+}
+
+/*! \brief Sets a specific bit in an integer to one.
+
+\param[in,out] n The integer to operate on.
+\param[in] bit The zero-based index of the bit to change.
+
+\returns Nothing.
+*/
+void setbit(integer& n, size_t bit) {
+ try {
+ core::integer nn(n);
+ setbit(nn, bit);
+ n=integer(nn);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+/*! \brief Sets a specific bit in an integer to zero.
+
+\param[in,out] n The integer to operate on.
+\param[in] bit The zero-based index of the bit to change.
+
+\returns Nothing.
+*/
+void clearbit(integer& n, size_t bit) {
+ try {
+ core::integer nn(n);
+ clearbit(nn, bit);
+ n=integer(nn);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+/*! \brief Obtains the index of the lowest bit in an integer with a value of one.
+
+\param[in] n The integer to query.
+\param[in] valueIfZero The value to return if \c n is zero (as there is no
+correct answer in that case).
+
+\returns The zero-based index of the lowest one-bit in the integer, or \c
+valueIfZero if the integer contains no set bits.
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+size_t lowestbit(const integer& n, size_t valueIfZero) {
+ try {
+ return lowestbit(core::integer(n), valueIfZero);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+/*! \brief Obtains the index of the highest bit in an integer with a value of one.
+
+\param[in] n The integer to query.
+\param[in] valueIfZero The value to return if \c n is zero (as there is no
+correct answer in that case).
+
+\returns The zero-based index of the highest one-bit in the integer, or \c
+valueIfZero if the integer contains no set bits.
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+size_t highestbit(const integer& n, size_t valueIfZero) {
+ try {
+ return highestbit(core::integer(n), valueIfZero);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+/*! \brief Combine two integers using a bitwise \c AND operation.
+
+\param[in] n1, n2 The integers to operate on.
+
+\returns An integer with all bits that are set in both parameters turned on.
+*/
+integer bitwise_and(const integer& n1, const integer& n2) {
+ try {
+ return integer(bitwise_and(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \brief Combine two integers using a bitwise \c OR operation.
+
+\param[in] n1, n2 The integers to operate on.
+
+\returns An integer with all bits that are set in either parameter turned on.
+*/
+integer bitwise_or(const integer& n1, const integer& n2) {
+ try {
+ return integer(bitwise_or(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \brief Combine two integers using a bitwise \c XOR operation.
+
+\param[in] n1, n2 The integers to operate on.
+
+\returns An integer with all bits that are set in either parameter, but not
+both, turned on.
+*/
+integer bitwise_xor(const integer& n1, const integer& n2) {
+ try {
+ return integer(bitwise_xor(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
/*! \brief Bit-shift an integer, in either direction.
\param[in] n The integer to operate on.
@@ -224,14 +319,12 @@
\returns The bit-shifted integer.
*/
integer shift_left(const integer& n, size_t byBits) {
- n._throw_if_nan();
-
- if (byBits==0) return n;
-
- integer nn(n);
- nn._make_unique();
- nn._get_data()->shift_left(byBits);
- return nn;
+ try {
+ return integer(shift_left(core::integer(n), byBits));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
}
/*! \brief Right-shift an integer by a specified number of bits.
@@ -242,14 +335,12 @@
\returns The bit-shifted integer.
*/
integer shift_right(const integer& n, size_t byBits) {
- n._throw_if_nan();
-
- if (byBits==0) return n;
-
- integer nn(n);
- nn._make_unique();
- nn._get_data()->shift_right(byBits);
- return nn;
+ try {
+ return integer(shift_right(core::integer(n), byBits));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
}
} // namespace xint
Modified: sandbox/xint/src/compare.cpp
==============================================================================
--- sandbox/xint/src/compare.cpp (original)
+++ sandbox/xint/src/compare.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -17,26 +17,14 @@
#include "../boost/xint/xint.hpp"
#include "../boost/xint/xint_data_t.hpp"
+#include <functional>
namespace boost {
namespace xint {
-/*! \brief Compare two integer objects.
-
-\param[in] b1, b2 The integers to compare.
-\param[in] ignoresign If \c true, the absolute values of b1 and b2 are compared,
-instead of their signed values. Used internally.
+namespace core {
-\returns A negative number if \c b1 < \c b2; zero if \c b1 == \c b2, or a
-positive number if \c b1 > \c b2.
-
-This is the function behind all of the comparison operators. It might sometimes
-be useful directly as well.
-*/
int compare(const integer &b1, const integer &b2, bool ignoresign) {
- b1._throw_if_nan();
- b2._throw_if_nan();
-
if (!ignoresign) {
int sign1=b1.sign(), sign2=b2.sign();
if (sign1==0 && sign2==0) return 0;
@@ -65,13 +53,78 @@
return answer;
}
-bool operator!(const xint::integer &num1) { return num1.sign()==0; }
-bool operator==(const xint::integer &num1, const xint::integer &num2) { return xint::compare(num1, num2)==0; }
-bool operator!=(const xint::integer& num1, const xint::integer& num2) { return xint::compare(num1, num2)!=0; }
-bool operator<(const xint::integer& num1, const xint::integer& num2) { return xint::compare(num1, num2)<0; }
-bool operator>(const xint::integer& num1, const xint::integer& num2) { return xint::compare(num1, num2)>0; }
-bool operator<=(const xint::integer& num1, const xint::integer& num2) { return xint::compare(num1, num2)<=0; }
-bool operator>=(const xint::integer& num1, const xint::integer& num2) { return xint::compare(num1, num2)>=0; }
+bool operator!(const integer &num1) { return num1.sign()==0; }
+bool operator==(const integer &num1, const integer &num2) {
+ return compare(num1, num2)==0; }
+bool operator!=(const integer& num1, const integer& num2) {
+ return compare(num1, num2)!=0; }
+bool operator<(const integer& num1, const integer& num2) {
+ return compare(num1, num2)<0; }
+bool operator>(const integer& num1, const integer& num2) {
+ return compare(num1, num2)>0; }
+bool operator<=(const integer& num1, const integer& num2) {
+ return compare(num1, num2)<=0; }
+bool operator>=(const integer& num1, const integer& num2) {
+ return compare(num1, num2)>=0; }
+
+} // namespace core
+
+/*! \brief Compare two integer objects.
+
+\param[in] b1, b2 The integers to compare.
+\param[in] ignoresign If \c true, the absolute values of b1 and b2 are compared,
+instead of their signed values. Used internally.
+
+\returns A negative number if \c b1 < \c b2; zero if \c b1 == \c b2, or a
+positive number if \c b1 > \c b2.
+
+This is the function behind all of the comparison operators. It might sometimes
+be useful directly as well.
+
+\note If exceptions are blocked, returns 0 instead of throwing.
+*/
+int compare(const integer &b1, const integer &b2, bool ignoresign) {
+ try {
+ return compare(core::integer(b1), core::integer(b2));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+namespace {
+template <typename T>
+bool cmp(const integer &num1, const integer &num2, const T& t) {
+ try {
+ return t(compare(core::integer(num1), core::integer(num2)), 0);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return false;
+ }
+}
+} // namespace
+
+bool operator!(const integer &num1) {
+ try {
+ return operator!(core::integer(num1));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return false;
+ }
+}
+
+bool operator==(const integer &num1, const integer &num2) {
+ return cmp(num1, num2, std::equal_to<int>()); }
+bool operator!=(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::not_equal_to<int>()); }
+bool operator<(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::less<int>()); }
+bool operator>(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::greater<int>()); }
+bool operator<=(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::less_equal<int>()); }
+bool operator>=(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::greater_equal<int>()); }
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/convert.cpp
==============================================================================
--- sandbox/xint/src/convert.cpp (original)
+++ sandbox/xint/src/convert.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -45,33 +45,10 @@
} // namespace
-/*! \brief Creates a string representation of the specified integer.
-
-\param[in] n The integer to convert.
-\param[in] base The base, between 2 and 36 inclusive, to convert it to. Defaults
-to base 10.
-\param[in] uppercase Whether to make alphabetic characters (for bases greater
-than ten) uppercase or not. Defaults to \c false.
-
-\returns The string value of \c n. If \c n is Not-a-Number, returns the string
-\c \#NaN#.
-
-\exception xint::invalid_base if base is less than two or greater than 36.
-
-\note If exceptions are blocked, it returns an empty string instead of throwing
-an exception.
+namespace core {
-\remarks
-This is the function that's called when you ask the library to write an integer
-to a stream, but it's more flexible because you can specify any base between 2
-and 36. (Streams only allow base-8, base-10, or base-16.)
-*/
std::string to_string(const integer& n, size_t base, bool uppercase) {
- if (n.is_nan()) return detail::nan_text;
- if (base<2 || base>36) {
- if (exceptions_allowed()) throw invalid_base();
- else return std::string();
- }
+ if (base<2 || base>36) throw invalid_base();
if (n.sign()==0) return "0";
@@ -121,35 +98,7 @@
}
}
-/*! \brief Converts a string into an integer.
-
-\param[in] str The string to convert.
-\param[in] base the base that the string representation of the number is in.
-This can be any number between 2 and 36 (inclusive). It can also be the constant
-xint::autobase, in which case the function will follow the standard C/C++ rules
-for interpreting a numeric constant: any number with a zero as the first digit
-is assumed to be base-8; any number with a leading zero-x or zero-X (such as
-0x1f) is base-16, and anything else is base-10.
-
-\returns An integer with the numeric value of the string in base \c base. If the
-string is \c \#NaN#, then it will return \link nan Not-a-Number\endlink.
-
-\exception xint::overflow_error if there is not enough free memory to create the
-integer.
-\exception xint::invalid_base if the base parameter is not between 2 and 36
-(inclusive) or the constant xint::autobase.
-\exception xint::invalid_digit if the string contains any digit that cannot be
-part of a number in the specified base, or if there are no valid digits.
-
-\remarks
-This is the function that's called when reading an integer from a stream, or
-when contructing one from a string.
-
-\see integer::integer(const std::string& str, size_t base)
-*/
integer from_string(const std::string& str, size_t base) {
- if (str==detail::nan_text) return integer(not_a_number());
-
bool negate=false;
const char *c=str.c_str();
if (*c=='+') ++c;
@@ -165,15 +114,8 @@
} else base=10;
}
- if (base<2 || base>36) {
- if (exceptions_allowed()) throw invalid_base();
- else return integer(not_a_number());
- }
-
- if (*c==0) {
- if (exceptions_allowed()) throw invalid_digit("No valid digits");
- else return integer(not_a_number());
- }
+ if (base<2 || base>36) throw invalid_base();
+ if (*c==0) throw invalid_digit("No valid digits");
const integer shift(base);
@@ -183,15 +125,11 @@
if (*c>='0' && *c<='9') digit=*c-'0';
else if (*c>='A' && *c<='Z') digit=*c-'A'+10;
else if (*c>='a' && *c<='z') digit=*c-'a'+10;
- else {
- if (exceptions_allowed()) throw invalid_digit("encountered non-alphanumeric character in string");
- else return integer(not_a_number());
- }
+ else throw invalid_digit("encountered non-alphanumeric character in "
+ "string");
- if (digit >= base) {
- if (exceptions_allowed()) throw invalid_digit("encountered digit greater than base allows");
- else return integer(not_a_number());
- }
+ if (digit >= base) throw invalid_digit("encountered digit greater than "
+ "base allows");
r = (r * shift) + digit;
++c;
@@ -200,15 +138,6 @@
return r;
}
-/*! \brief Converts a binary representation of a number into an integer.
-
-\param[in] str An \c std::string containing the bytes to convert, lowest byte
-first.
-
-\returns An integer representing the bytes.
-
-\see xint::to_binary
-*/
integer from_binary(const std::string& str) {
const size_t bytesPerDigit=sizeof(digit_t);
const size_t bitsPerByte=std::numeric_limits<unsigned char>::digits;
@@ -229,25 +158,7 @@
return r;
}
-/*! \brief Creates a binary representation of an integer, lowest byte first.
-
-\param[in] n The integer to convert.
-
-\returns A string containing the binary representation.
-
-\note
-This function only stores the absolute value of \c n; if you need the sign, you
-must store it separately.
-
-\remarks
-A binary representation is sometimes used for persistent storage or
-transmission, as it is more space-efficient than a string representation.
-
-\see xint::from_binary
-*/
std::string to_binary(const integer& n) {
- n._throw_if_nan();
-
const size_t bytesPerDigit=sizeof(digit_t);
const size_t bitsPerByte=std::numeric_limits<unsigned char>::digits;
std::vector<unsigned char> temp;
@@ -267,5 +178,119 @@
return std::string(c, c+temp.size());
}
+} // namespace core
+
+/*! \brief Creates a string representation of the specified integer.
+
+\param[in] n The integer to convert.
+\param[in] base The base, between 2 and 36 inclusive, to convert it to. Defaults
+to base 10.
+\param[in] uppercase Whether to make alphabetic characters (for bases greater
+than ten) uppercase or not. Defaults to \c false.
+
+\returns The string value of \c n. If \c n is Not-a-Number, returns the string
+\c \#NaN#.
+
+\exception xint::invalid_base if base is less than two or greater than 36.
+
+\note If exceptions are blocked, it returns an empty string instead of throwing
+an exception.
+
+\remarks
+This is the function that's called when you ask the library to write an integer
+to a stream, but it's more flexible because you can specify any base between 2
+and 36. (Streams only allow base-8, base-10, or base-16.)
+*/
+std::string to_string(const integer& n, size_t base, bool uppercase) {
+ try {
+ return to_string(core::integer(n), base, uppercase);
+ } catch (exception&) {
+ if (exceptions_allowed()) throw;
+ else return std::string();
+ }
+}
+
+/*! \brief Converts a string into an integer.
+
+\param[in] str The string to convert.
+\param[in] base the base that the string representation of the number is in.
+This can be any number between 2 and 36 (inclusive). It can also be the constant
+xint::autobase, in which case the function will follow the standard C/C++ rules
+for interpreting a numeric constant: any number with a zero as the first digit
+is assumed to be base-8; any number with a leading zero-x or zero-X (such as
+0x1f) is base-16, and anything else is base-10.
+
+\returns An integer with the numeric value of the string in base \c base. If the
+string is \c \#NaN#, then it will return \link nan Not-a-Number\endlink.
+
+\exception xint::overflow_error if there is not enough free memory to create the
+integer.
+\exception xint::invalid_base if the base parameter is not between 2 and 36
+(inclusive) or the constant xint::autobase.
+\exception xint::invalid_digit if the string contains any digit that cannot be
+part of a number in the specified base, or if there are no valid digits.
+
+\remarks
+This is the function that's called when reading an integer from a stream, or
+when contructing one from a string.
+
+\see integer::integer(const std::string& str, size_t base)
+*/
+integer from_string(const std::string& str, size_t base) {
+ try {
+ if (str==detail::nan_text) return integer::nan();
+ return integer(core::from_string(str, base));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \brief Converts a binary representation of a number into an integer.
+
+\param[in] str An \c std::string containing the bytes to convert, lowest byte
+first.
+
+\returns An integer representing the bytes.
+
+\see xint::to_binary
+*/
+integer from_binary(const std::string& str) {
+ try {
+ return integer(core::from_binary(str));
+ } catch (exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \brief Creates a binary representation of an integer, lowest byte first.
+
+\param[in] n The integer to convert.
+
+\returns A string containing the binary representation.
+
+\note
+This function only stores the absolute value of \c n; if you need the sign, you
+must store it separately.
+
+\par If exceptions are blocked, returns an empty std::string instead of
+throwing.
+
+\remarks
+A binary representation is sometimes used for persistent storage or
+transmission, as it is more space-efficient than a string representation.
+
+\see xint::from_binary
+*/
+std::string to_binary(const integer& n) {
+ try {
+ return to_binary(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return std::string();
+ }
+}
+
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/gcd.cpp
==============================================================================
--- sandbox/xint/src/gcd.cpp (original)
+++ sandbox/xint/src/gcd.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -21,7 +21,7 @@
namespace boost {
namespace xint {
-
+namespace core {
namespace {
struct gcd_core {
@@ -58,17 +58,7 @@
} // namespace
-/*! \brief Calculate the Greatest Common Denominator of two integers.
-
-\param[in] num1, num2 The integers to operate on.
-
-\returns The greatest common denominator of the two integers, which will always
-be a positive number.
-*/
integer gcd(const integer& num1, const integer& num2) {
- num1._throw_if_nan();
- num2._throw_if_nan();
-
int sign1=num1.sign(), sign2=num2.sign();
if (sign1==0 && sign2==0) return integer::zero();
else if (sign1==0) return num2;
@@ -85,49 +75,25 @@
return integer::one() << k;
}
-/*! \brief Calculate the Least Common Multiple of two integers.
-
-\param[in] num1, num2 The integers to operate on.
-
-\returns The least common multiple of the two integers. If either integer is
-zero, then the return value will be zero, by convention; in all other cases, the
-return value will be a positive number.
-*/
integer lcm(const integer& num1, const integer& num2) {
if (num1.sign() == 0 || num2.sign() == 0) return integer::zero();
return abs(num1 * num2) / gcd(num1, num2);
}
-/*! \brief Get the modular inverse of a number in a modulus, if there is one.
-
-\param[in] n The number to retrieve the inverse of.
-\param[in] m The modulus to use.
-
-\returns The modular inverse of \c n in \c m. If \c n has no modular inverse in
-\c m, returns zero.
-
-\exception xint::invalid_modulus if the modulus is less than one.
-
-\note If exceptions are blocked, it returns zero instead of throwing an
-exception.
-*/
integer invmod(const integer& n, const integer& m) {
// Calculates the modular inverse of n mod m, or (n^(-1)) mod m
// Defined as b, where n*b corresponds to 1 (mod m)
- if (m < integer::one()) {
- if (exceptions_allowed()) throw invalid_modulus();
- else return integer::zero();
- }
+ if (m < integer::one()) throw invalid_modulus();
int sign=n.sign();
if (sign==0) {
- return integer(not_a_number());
+ return integer::zero();
} else if (n.sign() < 0) {
integer _n(n);
_n._set_negative(false);
integer nn=invmod(_n, m);
- if (nn.is_nan()) return nn;
+ if (nn.sign()==0) return nn;
nn._set_negative(true);
return nn + m;
@@ -141,5 +107,62 @@
return core.u1;
}
+} // namespace core
+
+/*! \brief Calculate the Greatest Common Denominator of two integers.
+
+\param[in] num1, num2 The integers to operate on.
+
+\returns The greatest common denominator of the two integers, which will always
+be a positive number.
+*/
+integer gcd(const integer& num1, const integer& num2) {
+ try {
+ return integer(gcd(core::integer(num1), core::integer(num2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \brief Calculate the Least Common Multiple of two integers.
+
+\param[in] num1, num2 The integers to operate on.
+
+\returns The least common multiple of the two integers. If either integer is
+zero, then the return value will be zero, by convention; in all other cases, the
+return value will be a positive number.
+*/
+integer lcm(const integer& num1, const integer& num2) {
+ try {
+ return integer(lcm(core::integer(num1), core::integer(num2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \brief Get the modular inverse of a number in a modulus, if there is one.
+
+\param[in] n The number to retrieve the inverse of.
+\param[in] m The modulus to use.
+
+\returns The modular inverse of \c n in \c m. If \c n has no modular inverse in
+\c m, returns zero.
+
+\exception xint::invalid_modulus if the modulus is less than one.
+
+\note If exceptions are blocked, it returns zero instead of throwing an
+exception.
+*/
+integer invmod(const integer& n, const integer& m) {
+ try {
+ return integer(invmod(core::integer(n), core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/integer.cpp
==============================================================================
--- sandbox/xint/src/integer.cpp (original)
+++ sandbox/xint/src/integer.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -24,74 +24,41 @@
namespace boost {
namespace xint {
+namespace core {
namespace {
std::auto_ptr<integer> cZero, cOne;
}
-const std::string detail::nan_text("#NaN#");
+////////////////////////////////////////////////////////////////////////////////
+// The core integer class
-//! \brief Creates a new integer with an initial value of zero.
integer::integer() {
_init();
}
-/*! \brief Creates a copy of an existing integer.
-
-\param[in] b An existing integer. If passed a Not-a-Number, it will create
-another Not-a-Number.
-
-\note
-This library can use a \link cow copy-on-write technique\endlink, making copying
-(even of large numbers) a very inexpensive operation.
-
-\overload
-*/
integer::integer(const integer& b) {
- if (b.is_nan()) data=0;
- else _init(b);
+ _init(b);
}
-/*! \brief Create an integer from a string representation.
-
-\param[in] str A string representation of a number.
-\param[in] base The base of the number, or xint::autobase.
+integer::integer(const ::boost::xint::integer& b) {
+ if (b.is_nan()) throw xint::not_a_number();
-\exception xint::invalid_base if the base parameter is not between 2 and 36
-(inclusive) or the constant xint::autobase.
-\exception xint::invalid_digit if the string contains any digit that cannot be
-part of a number in the specified base, or if there are no valid digits.
-
-\remarks
-This will convert a string representation of a number into an integer. See the
-description of the xint::from_string function for details on its behavior.
-
-\par
-This is the most common way to initialize values that are too large to fit into
-a native integral type.
+ // Have to const_cast here, because xint::integer and xint::core::integer
+ // aren't directly related. It's safe though.
+ detail::data_t *bdata(const_cast<detail::data_t*>(b._get_data()));
+ #ifdef XINT_DISABLE_COPY_ON_WRITE
+ data=new detail::data_t(bdata);
+ #else
+ data=bdata;
+ #endif
+ _attach();
+}
-\overload
-*/
integer::integer(const std::string& str, size_t base) {
_init(from_string(str, base));
}
-/*! \brief Creates an integer with the value of Not-a-Number.
-
-\param[in] n An xint::not_a_number object (normally used as an exception class).
-
-\remarks
-This is the official way to create an integer with the Not-a-Number value, if
-you ever wish to use that value for your own purposes.
-
-\see \ref nan
-
-\overload
-*/
-integer::integer(const not_a_number& n) {
- data=0;
-}
-
integer::~integer() {
_detach();
}
@@ -107,7 +74,7 @@
void integer::_init(const integer &c) {
#ifdef XINT_DISABLE_COPY_ON_WRITE
- data=(c.data ? new detail::data_t(c.data) : 0);
+ data=new detail::data_t(c.data);
#else
data=c.data;
#endif
@@ -139,6 +106,7 @@
void integer::_detach() {
if (data && data->detach()) delete data;
+ data=0;
}
void integer::_make_unique() {
@@ -155,56 +123,27 @@
}
void integer::_set_negative(bool negative) {
- if (negative != (sign() < 0)) *this=negate(*this);
+ if (data->mIsNegative != negative) {
+ _make_unique();
+ data->mIsNegative=negative;
+ data->skipLeadingZeros();
+ }
}
-/*! \brief Tests the lowest bit of \c *this to determine oddness.
-
-\returns \c true if \c *this is odd, otherwise \c false.
-*/
bool integer::odd() const {
- _throw_if_nan();
return ((_get_digit(0) & 0x01)==1);
}
-/*! \brief Tests the lowest bit of \c *this to determine evenness.
-
-\returns \c true if \c *this is even, otherwise \c false.
-*/
bool integer::even() const {
- _throw_if_nan();
return ((_get_digit(0) & 0x01)==0);
}
-/*! \brief Tests the sign of \c *this.
-
-\returns -1 if \c *this is negative, 0 if it's zero, or 1 if it's greater than
-zero.
-*/
int integer::sign() const {
- _throw_if_nan();
- if (data->mIsNegative) return -1;
if (_get_length()==1 && _get_digit(0)==0) return 0;
- return 1;
+ else return (data->mIsNegative ? -1 : 1);
}
-/*! \brief Tests \c *this for Not-a-Number.
-
-\returns \c true if \c *this is Not-a-Number, otherwise \c false.
-
-\see \ref nan
-*/
-bool integer::is_nan() const {
- return (data==0);
-}
-
-/*! \brief Tells you roughly how large an integer is.
-
-\returns The number of hexadecimal digits that would be required to encode \c
-*this.
-*/
size_t integer::hex_digits() const {
- _throw_if_nan();
size_t bits=log2(*this);
return (bits+3)/4; // Four bits per hex digit, rounded up
}
@@ -238,7 +177,7 @@
integer& integer::operator=(const integer &c) {
_detach();
#ifdef XINT_DISABLE_COPY_ON_WRITE
- data=(c.data ? new detail::data_t(c.data) : 0);
+ data=new detail::data_t(c.data);
#else
data=c.data;
#endif
@@ -300,8 +239,342 @@
return data->mLength;
}
-void integer::_throw_if_nan() const {
- if (is_nan()) throw not_a_number();
+} // namespace core
+
+////////////////////////////////////////////////////////////////////////////////
+// The non-core integer class
+
+namespace {
+ std::auto_ptr<integer> cZero, cOne, cNaN;
+}
+
+const std::string detail::nan_text("#NaN#");
+
+//! \brief Creates a new integer with an initial value of zero.
+integer::integer() {
+ _init();
+}
+
+/*! \brief Creates a copy of an existing integer.
+
+\param[in] b An existing integer. If passed a Not-a-Number, it will create
+another Not-a-Number.
+
+\note
+This library can use a \link cow copy-on-write technique\endlink, making
+copying (even of large numbers) a very inexpensive operation.
+
+\overload
+*/
+integer::integer(const integer& b) {
+ if (b.is_nan()) data=0;
+ else _init(b);
+}
+
+/*! \brief Creates an integer from a core::integer.
+
+\param[in] b An existing core::integer.
+
+\note
+This library can use a \link cow copy-on-write technique\endlink, making
+copying (even of large numbers) a very inexpensive operation.
+
+\overload
+*/
+integer::integer(const core::integer& b) {
+ // Have to const_cast here, because xint::integer and xint::core::integer
+ // aren't directly related. It's safe though.
+ detail::data_t *bdata(const_cast<detail::data_t*>(b._get_data()));
+ #ifdef XINT_DISABLE_COPY_ON_WRITE
+ data=new detail::data_t(bdata);
+ #else
+ data=bdata;
+ #endif
+ _attach();
+}
+
+/*! \brief Create an integer from a string representation.
+
+\param[in] str A string representation of a number.
+\param[in] base The base of the number, or xint::autobase.
+
+\exception xint::invalid_base if the base parameter is not between 2 and 36
+(inclusive) or the constant xint::autobase.
+\exception xint::invalid_digit if the string contains any digit that cannot be
+part of a number in the specified base, or if there are no valid digits.
+
+\remarks
+This will convert a string representation of a number into an integer. See the
+description of the xint::from_string function for details on its behavior.
+
+\par
+This is the most common way to initialize values that are too large to fit into
+a native integral type.
+
+\overload
+*/
+integer::integer(const std::string& str, size_t base) {
+ try {
+ data=0;
+ _init(from_string(str, base));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ delete data;
+ data=0;
+ }
+}
+
+/*! \brief Tests the lowest bit of \c *this to determine oddness.
+
+\returns \c true if \c *this is odd, otherwise \c false.
+
+\note If exceptions are blocked, returns false instead of throwing.
+*/
+bool integer::odd() const {
+ if (is_nan()) {
+ if (exceptions_allowed()) throw not_a_number();
+ else return false;
+ }
+ return ((_get_digit(0) & 0x01)==1);
+}
+
+/*! \brief Tests the lowest bit of \c *this to determine evenness.
+
+\returns \c true if \c *this is even, otherwise \c false.
+
+\note If exceptions are blocked, returns false instead of throwing.
+*/
+bool integer::even() const {
+ if (is_nan()) {
+ if (exceptions_allowed()) throw not_a_number();
+ else return false;
+ }
+ return ((_get_digit(0) & 0x01)==0);
+}
+
+/*! \brief Tests the sign of \c *this.
+
+\returns -1 if \c *this is negative, 0 if it's zero, or 1 if it's greater than
+zero.
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+int integer::sign() const {
+ if (is_nan()) {
+ if (exceptions_allowed()) throw not_a_number();
+ else return 0;
+ }
+ if (_get_length()==1 && _get_digit(0)==0) return 0;
+ return (data->mIsNegative ? -1 : 1);
+}
+
+/*! \brief Tells you roughly how large an integer is.
+
+\returns The number of hexadecimal digits that would be required to encode \c
+*this.
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+size_t integer::hex_digits() const {
+ try {
+ return core::integer(*this).hex_digits();
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+/*! \brief Tests \c *this for Not-a-Number.
+
+\returns \c true if \c *this is Not-a-Number, otherwise \c false.
+
+\see \ref nan
+*/
+bool integer::is_nan() const {
+ return (data==0);
+}
+
+integer& integer::operator+=(const integer& addend) {
+ try {
+ *this=integer(core::integer(*this).operator+=(core::integer(addend)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+integer& integer::operator-=(const integer& subtrahend) {
+ try {
+ *this=integer(core::integer(*this).operator-=(core::integer(subtrahend)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+integer& integer::operator=(const integer &c) {
+ _detach();
+ try {
+ #ifdef XINT_DISABLE_COPY_ON_WRITE
+ data=(c.data ? new detail::data_t(c.data) : 0);
+ #else
+ data=c.data;
+ #endif
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ data=0;
+ }
+ _attach();
+ return *this;
+}
+
+integer& integer::operator*=(const integer& b) { *this=multiply(*this, b); return *this; }
+integer& integer::operator/=(const integer& b) { *this=divide(*this, b); return *this; }
+integer& integer::operator%=(const integer& b) { *this=mod(*this, b); return *this; }
+
+integer& integer::operator++() { *this += one(); return *this; }
+integer& integer::operator--() { *this -= one(); return *this; }
+integer integer::operator++(int) { integer s=*this; *this += one(); return s; }
+integer integer::operator--(int) { integer s=*this; *this -= one(); return s; }
+
+integer integer::operator<<(size_t shift) const { return shift_left(*this, shift); }
+integer integer::operator>>(size_t shift) const { return shift_right(*this, shift); }
+integer& integer::operator&=(const integer& n) { *this=bitwise_and(*this, n); return *this; }
+integer& integer::operator|=(const integer& n) { *this=bitwise_or(*this, n); return *this; }
+integer& integer::operator^=(const integer& n) { *this=bitwise_xor(*this, n); return *this; }
+
+integer& integer::operator<<=(size_t shift) {
+ try {
+ *this=integer(core::integer(*this).operator<<=(shift));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+integer& integer::operator>>=(size_t shift) {
+ try {
+ *this=integer(core::integer(*this).operator>>=(shift));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+const integer& integer::zero() {
+ if (cZero.get()==0) cZero.reset(new integer(core::integer::zero()));
+ return *cZero;
+}
+
+const integer& integer::one() {
+ if (cOne.get()==0) cOne.reset(new integer(core::integer::one()));
+ return *cOne;
+}
+
+const integer& integer::nan() {
+ if (cNaN.get()==0) {
+ integer *n=new integer();
+ n->_detach(); // Get rid of the data
+ n->data=0;
+ cNaN.reset(n);
+ }
+ return *cNaN;
+}
+
+detail::digit_t integer::_get_digit(size_t index) const {
+ return data->digits[index];
+}
+
+detail::digit_t integer::_get_digit(size_t index, bool) const {
+ if (index >= data->mLength) return 0;
+ return data->digits[index];
+}
+
+size_t integer::_get_length() const {
+ return data->mLength;
+}
+
+void integer::_init(detail::digit_t init) {
+ try {
+ data=new detail::data_t(init);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ data=0;
+ }
+ _attach();
+}
+
+void integer::_init(const integer &c) {
+ try {
+ #ifdef XINT_DISABLE_COPY_ON_WRITE
+ data=(c.data ? new detail::data_t(c.data) : 0);
+ #else
+ data=c.data;
+ #endif
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ data=0;
+ }
+ _attach();
+}
+
+void integer::_init(boost::uintmax_t n) {
+ static int bits=std::numeric_limits<boost::uintmax_t>::digits;
+ static int maxDigits=(bits+detail::bits_per_digit-1)/detail::bits_per_digit;
+
+ data=0;
+ try {
+ data=new detail::data_t;
+ _attach();
+
+ data->alloc(maxDigits);
+ for (int x=0; n != 0; ++x) {
+ data->digits[x]=detail::digit_t(n & detail::digit_mask);
+ n >>= detail::bits_per_digit;
+ }
+ data->skipLeadingZeros();
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ delete data;
+ data=0;
+ }
+}
+
+void integer::_attach() {
+ if (data) data->attach();
+}
+
+void integer::_detach() {
+ if (data && data->detach()) delete data;
+ data=0;
+}
+
+void integer::_make_unique() {
+ if (data && data->mCopies > 1) {
+ detail::data_t *newstore=0;
+ try {
+ newstore=new detail::data_t(data);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ newstore=0;
+ }
+
+ _detach();
+ data=newstore;
+ _attach();
+ }
+}
+
+void integer::_set_negative(bool negative) {
+ if (data->mIsNegative != negative) {
+ _make_unique();
+ data->mIsNegative=negative;
+ data->skipLeadingZeros();
+ }
}
} // namespace xint
Modified: sandbox/xint/src/misc.cpp
==============================================================================
--- sandbox/xint/src/misc.cpp (original)
+++ sandbox/xint/src/misc.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -47,12 +47,27 @@
#endif
}
+namespace core {
+size_t log2(const integer& n) {
+ size_t r=detail::bits_per_digit * n._get_length();
+ detail::digit_t mask=detail::digit_hibit, d=n._get_digit(n._get_length()-1);
+ while (mask!=0) {
+ if ((mask & d)!=0) break;
+ mask>>=1;
+ --r;
+ }
+ return r;
+}
+} // namespace core
+
/*! \brief Get the log<sub>2</sub> value of an integer.
\param[in] n The integer to operate on.
\returns The %integer log<sub>2</sub> value of the integer.
+\note If exceptions are blocked, returns 0 instead of throwing.
+
\remarks
xint::pow2(xint::log2(n)-1) will give you an integer with the highest set bit of
\c n, assuming that \c n is non-zero.
@@ -61,16 +76,12 @@
Similar to the xint::highestbit function.
*/
size_t log2(const integer& n) {
- n._throw_if_nan();
-
- size_t r=detail::bits_per_digit * n._get_length();
- detail::digit_t mask=detail::digit_hibit, d=n._get_digit(n._get_length()-1);
- while (mask!=0) {
- if ((mask & d)!=0) break;
- mask>>=1;
- --r;
+ try {
+ return log2(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
}
- return r;
}
} // namespace xint
Modified: sandbox/xint/src/modular.cpp
==============================================================================
--- sandbox/xint/src/modular.cpp (original)
+++ sandbox/xint/src/modular.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -23,6 +23,61 @@
namespace boost {
namespace xint {
+namespace core {
+
+integer mod(const integer& n, const integer& m) {
+ integer r=divide_r(n, m).second;
+ if (r.sign() < 0) r+=abs(m);
+ return r;
+}
+
+integer mulmod(const integer& n, const integer& by, const integer& m) {
+ return mod(n * by, m);
+}
+
+integer sqrmod(const integer& n, const integer& m) {
+ return mod(sqr(n), m);
+}
+
+integer powmod(const integer& n, const integer& e, const integer& m, bool
+ noMontgomery)
+{
+ if (m < integer::one()) throw invalid_modulus();
+ if (e.sign()==0) return integer::one();
+
+ bool neg=(n.sign() < 0 && e.odd());
+
+ integer answer(integer::one());
+
+ // Montgomery's method is often noticeably faster, but only works if the
+ // m is odd.
+ if (m.odd() && !noMontgomery) {
+ answer=montgomeryPowerMod(abs(n) % m, abs(e), m);
+ } else {
+ integer p(abs(n));
+
+ size_t length=e._get_length(), lastBitCount=0;
+ detail::digit_t ee(e._get_digit(length-1));
+ while (ee != 0) { ee >>= 1; ++lastBitCount; }
+
+ for (size_t eIndex=0; eIndex < length; ++eIndex) {
+ detail::digit_t ee(e._get_digit(eIndex));
+
+ int bitCount(int(eIndex == length-1 ? lastBitCount :
+ detail::bits_per_digit));
+ while (bitCount-- > 0) {
+ if (ee & 0x01) answer=mulmod(answer, p, m);
+ p=sqrmod(p, m);
+ ee >>= 1;
+ }
+ }
+ }
+
+ answer._set_negative(neg);
+ return answer;
+}
+
+} // namespace core
/*! \brief Get the remainder after dividing a number by another.
@@ -32,9 +87,12 @@
\returns The result of \c n % \c m.
*/
integer mod(const integer& n, const integer& m) {
- integer r=divide_r(n, m).second;
- if (r.sign() < 0) r+=abs(m);
- return r;
+ try {
+ return integer(mod(core::integer(n), core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
}
/*! \brief Get the modular product of two integers.
@@ -50,7 +108,13 @@
writing out the calculation.
*/
integer mulmod(const integer& n, const integer& by, const integer& m) {
- return mod(n * by, m);
+ try {
+ return integer(mod(core::integer(n) * core::integer(by),
+ core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
}
/*! \brief Get the modular product of squaring an integer.
@@ -66,7 +130,12 @@
writing out the calculation.
*/
integer sqrmod(const integer& n, const integer& m) {
- return mod(sqr(n), m);
+ try {
+ return integer(mod(sqr(core::integer(n)), core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
}
/*! \brief Get the result of \c n<sup>e</sup> % \c m, keeping the intermediate
@@ -93,42 +162,13 @@
integer powmod(const integer& n, const integer& e, const integer& m, bool
noMontgomery)
{
- if (m < integer::one()) {
- if (exceptions_allowed()) throw invalid_modulus();
- else return integer(not_a_number());
- }
- if (e.sign()==0) return integer::one();
-
- bool neg=(n.sign() < 0 && e.odd());
-
- integer answer(integer::one());
-
- // Montgomery's method is often noticeably faster, but only works if the
- // m is odd.
- if (m.odd() && !noMontgomery) {
- answer=montgomeryPowerMod(abs(n) % m, abs(e), m);
- } else {
- integer p(abs(n));
-
- size_t length=e._get_length(), lastBitCount=0;
- detail::digit_t ee(e._get_digit(length-1));
- while (ee != 0) { ee >>= 1; ++lastBitCount; }
-
- for (size_t eIndex=0; eIndex < length; ++eIndex) {
- detail::digit_t ee(e._get_digit(eIndex));
-
- int bitCount(int(eIndex == length-1 ? lastBitCount :
- detail::bits_per_digit));
- while (bitCount-- > 0) {
- if (ee & 0x01) answer=mulmod(answer, p, m);
- p=sqrmod(p, m);
- ee >>= 1;
- }
- }
+ try {
+ return integer(powmod(core::integer(n), core::integer(e),
+ core::integer(m), noMontgomery));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
}
-
- answer._set_negative(neg);
- return answer;
}
} // namespace xint
Modified: sandbox/xint/src/monty.cpp
==============================================================================
--- sandbox/xint/src/monty.cpp (original)
+++ sandbox/xint/src/monty.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -27,6 +27,7 @@
namespace boost {
namespace xint {
+namespace core {
using namespace detail;
@@ -56,10 +57,6 @@
//! Returns the integer from the Montgomery form of a number. Used for testing.
integer fromMontgomeryForm(const integer& n, const integer& m) {
integer inv=invmod(montgomeryR(m), m);
- if (inv.is_nan()) {
- if (exceptions_allowed()) throw invalid_modulus("modulus has no inverse");
- else return integer(not_a_number());
- }
return (n * inv % m);
}
@@ -236,11 +233,8 @@
const TUTable &tuTable(TUTable::get());
if (e.sign()==0) return integer::one();
- if (n.even()) {
- if (exceptions_allowed()) throw invalid_modulus("montgomeryPowerMod "
- "requires an odd modulus");
- else return integer(not_a_number());
- }
+ if (n.even()) throw invalid_modulus("montgomeryPowerMod requires an odd "
+ "modulus");
// Precalculate some values
const size_t k(mostEfficientK(e));
@@ -285,5 +279,6 @@
return montgomeryMultiplyMod(pp, integer::one(), n, nPrime0);
}
+} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/operators.cpp
==============================================================================
--- sandbox/xint/src/operators.cpp (original)
+++ sandbox/xint/src/operators.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -19,6 +19,18 @@
namespace boost {
namespace xint {
+namespace core {
+const integer& operator+(const integer& a) { return a; }
+integer operator-(const integer& a) { return negate(a); }
+integer operator+(const integer& num1, const integer& num2) { return add(num1, num2); }
+integer operator-(const integer& num1, const integer& num2) { return subtract(num1, num2); }
+integer operator*(const integer& num1, const integer& num2) { return multiply(num1, num2); }
+integer operator/(const integer& num1, const integer& num2) { return divide(num1, num2); }
+integer operator%(const integer& num1, const integer& num2) { return mod(num1, num2); }
+integer operator&(const integer& n1, const integer& n2) { return bitwise_and(n1, n2); }
+integer operator|(const integer& n1, const integer& n2) { return bitwise_or(n1, n2); }
+integer operator^(const integer& n1, const integer& n2) { return bitwise_xor(n1, n2); }
+} // namespace core
const integer& operator+(const integer& a) { return a; }
integer operator-(const integer& a) { return negate(a); }
Modified: sandbox/xint/src/powers.cpp
==============================================================================
--- sandbox/xint/src/powers.cpp (original)
+++ sandbox/xint/src/powers.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -25,6 +25,7 @@
using namespace detail;
+namespace core {
namespace {
bool addOverflow(doubledigit_t &n1, doubledigit_t n2) {
@@ -37,34 +38,13 @@
} // namespace
-/*! \brief Calculate the value of 2<sup>e</sup>
-
-\param[in] e The exponent to operate on.
-
-\returns 2 to the power of \c e.
-
-\remarks
-This is a convenience function, to help with self-documenting code.
-*/
integer pow2(size_t e) {
integer r;
setbit(r, e);
return r;
}
-/*! \brief Calculate the value of n<sup>2</sup>
-
-\param[in] n The integer to operate on.
-
-\returns \c n times \c n.
-
-This function uses a faster algorithm than the standard multiplication one.
-
-\todo Rewrite this to eliminate the inefficient addOverflow.
-*/
integer sqr(const integer& n) {
- n._throw_if_nan();
-
const data_t *ndata=n._get_data();
std::vector<doubledigit_t> a(ndata->mLength*2+1, 0);
doubledigit_t *adigit=&a[0];
@@ -106,12 +86,6 @@
return answer;
}
-/*! \brief Calculate the value of n<sup>e</sup>
-
-\param[in] n, e The integers to operate on.
-
-\returns \c n to the power of \c e.
-*/
integer pow(const integer& n, const integer& e) {
bool neg=(n.sign() < 0 && e.odd());
@@ -135,6 +109,63 @@
return answer;
}
+integer factorial(size_t n) {
+ integer r(integer::one());
+ while (n > 1) { r *= n--; }
+ return r;
+}
+
+} // namespace core
+
+/*! \brief Calculate the value of 2<sup>e</sup>
+
+\param[in] e The exponent to operate on.
+
+\returns 2 to the power of \c e.
+
+\remarks
+This is a convenience function, to help with self-documenting code.
+*/
+integer pow2(size_t e) {
+ integer r;
+ setbit(r, e);
+ return r;
+}
+
+/*! \brief Calculate the value of n<sup>2</sup>
+
+\param[in] n The integer to operate on.
+
+\returns \c n times \c n.
+
+This function uses a faster algorithm than the standard multiplication one.
+
+\todo Rewrite this to eliminate the inefficient addOverflow.
+*/
+integer sqr(const integer& n) {
+ try {
+ return integer(sqr(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \brief Calculate the value of n<sup>e</sup>
+
+\param[in] n, e The integers to operate on.
+
+\returns \c n to the power of \c e.
+*/
+integer pow(const integer& n, const integer& e) {
+ try {
+ return integer(pow(core::integer(n), core::integer(e)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
/*! \brief Calculate the value of \c n!
\param[in] n The value to operate on.
@@ -147,17 +178,12 @@
system's memory.
*/
integer factorial(size_t n) {
- integer r(integer::one());
- if (n == (std::numeric_limits<size_t>::max)()) {
- // It's highly unlikely that the system will be able to calculate this,
- // or that anyone might want to, but someday it will be possible. This
- // code keeps the function from going into an infinite loop if/when that
- // happens.
- r=(std::numeric_limits<size_t>::max)();
- --n;
+ try {
+ return integer(core::factorial(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
}
- for (size_t i=2; i<=n; ++i) r*=i;
- return r;
}
} // namespace xint
Modified: sandbox/xint/src/primes.cpp
==============================================================================
--- sandbox/xint/src/primes.cpp (original)
+++ sandbox/xint/src/primes.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -21,6 +21,7 @@
namespace boost {
namespace xint {
+namespace core {
namespace {
@@ -78,6 +79,47 @@
} // namespace
+int is_prime(const integer& n, callback_t callback) {
+ if (n < 2) throw std::invalid_argument("xint::is_prime cannot test numbers "
+ "below 2");
+
+ // First we trial-divide it by the primes below 2000
+ static const std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
+ std::vector<int>::const_iterator i=cLowPrimes.begin(), ie=cLowPrimes.end();
+ for (; i!=ie; ++i) if ((n % *i)==0) return (n==*i);
+
+ // Run the number through the Miller-Rabin Probabilistic Test of Primality
+ // a few times to see if it's actually (probably) prime.
+ for (int count=0; count<5; ++count) {
+ unsigned int k=detail::get_random();
+ int isP=isProbablePrimeBaseB(n, abs(k), callback);
+ if (isP <= 0) return isP;
+ }
+ return 1; // Appears to be prime!
+}
+
+integer random_prime(size_t size_in_bits, callback_t callback) {
+ if (size_in_bits < 2) throw std::invalid_argument("cannot create prime "
+ "numbers smaller than two bits");
+
+ // Call the callback for the first time
+ if (callback && !callback()) return integer::zero();
+
+ integer pe=pow2(size_in_bits+1);
+ while (1) {
+ integer p(random_by_size(size_in_bits, true, true));
+ while (p < pe) {
+ int r=is_prime(p, callback);
+ if (r < 0) return integer::zero();
+ if (r == 1) return p;
+ p+=2;
+ }
+ }
+}
+
+} // namespace core
+
+
/*! \brief Tests an integer for primality.
\param[in] n The number to test.
@@ -89,8 +131,7 @@
\exception std::invalid_argument if \c n is less than 2.
-\note If exceptions are blocked, it will return -1 instead of throwing an
-exception.
+\note If exceptions are blocked, returns -1 instead of throwing.
\remarks
This function uses the Rabin-Miller probabilistic primality test. There is an
@@ -102,25 +143,12 @@
\see \ref primes
*/
int is_prime(const integer& n, callback_t callback) {
- if (n < 2) {
- if (exceptions_allowed()) throw std::invalid_argument("xint::is_prime "
- "cannot test numbers below 2");
+ try {
+ return is_prime(core::integer(n), callback);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
else return -1;
}
-
- // First we trial-divide it by the primes below 2000
- static const std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
- std::vector<int>::const_iterator i=cLowPrimes.begin(), ie=cLowPrimes.end();
- for (; i!=ie; ++i) if ((n % *i)==0) return (n==*i);
-
- // Run the number through the Miller-Rabin Probabilistic Test of Primality
- // a few times to see if it's actually (probably) prime.
- for (int count=0; count<5; ++count) {
- unsigned int k=detail::get_random();
- int isP=isProbablePrimeBaseB(n, abs(k), callback);
- if (isP <= 0) return isP;
- }
- return 1; // Appears to be prime!
}
/*! \brief Generate a randomly-generated prime number of a particular bit-size.
@@ -146,25 +174,11 @@
\see \ref primes
*/
integer random_prime(size_t size_in_bits, callback_t callback) {
- if (size_in_bits < 2) {
- if (exceptions_allowed()) throw std::invalid_argument(
- "xint::random_prime cannot create prime numbers smaller than two "
- "bits");
- else return integer(not_a_number());
- }
-
- // Call the callback for the first time
- if (callback && !callback()) return integer::zero();
-
- integer pe=pow2(size_in_bits+1);
- while (1) {
- integer p(random_by_size(size_in_bits, true, true));
- while (p < pe) {
- int r=is_prime(p, callback);
- if (r < 0) return integer::zero();
- if (r == 1) return p;
- p+=2;
- }
+ try {
+ return integer(core::random_prime(size_in_bits, callback));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
}
}
Modified: sandbox/xint/src/primitives.cpp
==============================================================================
--- sandbox/xint/src/primitives.cpp (original)
+++ sandbox/xint/src/primitives.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -24,37 +24,19 @@
using namespace detail;
-/*! \brief Returns the absolute value of an integer.
-
-\param[in] n The integer to operate on.
+namespace core {
-\returns If \c n is zero or positive, returns \c n. Otherwise returns \c -n.
-*/
integer abs(const integer& n) {
- return (n < 0 ? -n : n);
+ return (n.sign() < 0 ? -n : n);
}
-/*! \brief Return the additive inverse of an integer.
-
-\param[in] n The integer to operate on.
-
-\returns \c -n.
-*/
integer negate(const integer& n) {
- n._throw_if_nan();
-
integer nn(n);
nn._make_unique();
nn._get_data()->negate();
return nn;
}
-/*! \brief Calculate the sum of two integers.
-
-\param[in] n1, n2 The integers to add.
-
-\returns The sum of the parameters.
-*/
integer add(const integer& n1, const integer& n2) {
int sign1=n1.sign(), sign2=n2.sign();
if (sign1 != sign2) {
@@ -73,12 +55,6 @@
}
}
-/*! \brief Calculate the difference between two integers.
-
-\param[in] n1, n2 The integers to operate on.
-
-\returns The difference between the parameters.
-*/
integer subtract(const integer& n1, const integer& n2) {
int sign1=n1.sign(), sign2=n2.sign();
if (sign1 != sign2) {
@@ -98,16 +74,6 @@
}
}
-/*! \brief Calculate the product of two integers.
-
-\param[in] n, by The integers to operate on.
-
-\returns The product of the parameters.
-
-\remarks
-Automatically uses the more-efficient squaring algorithm if it can trivially
-detect that the two parameters are copies of the same number.
-*/
integer multiply(const integer& n, const integer& by) {
int nsign=n.sign(), bysign=by.sign();
if (nsign==0 || bysign==0) return integer::zero();
@@ -248,40 +214,13 @@
} // namespace
-/*! \brief Calculate how many \c dividends would fit into \c divisor.
-
-\param[in] dividend, divisor The integers to operate on.
-
-\returns The integer value of \c dividend divided by \c divisor.
-
-\exception xint::divide_by_zero if \c divisor is zero.
-*/
integer divide(const integer& dividend, const integer& divisor) {
return divide_r(dividend, divisor).first;
}
-/*! \brief Calculate how many \c dividends would fit into \c divisor, with the
- remainder.
-
-\param[in] d1 The dividend.
-\param[in] d2 The divisor.
-
-\returns An \c std::pair containing the quotient and remainder of \c d1 divided
-by \c d2.
-
-\exception xint::divide_by_zero if \c d2 is zero.
-
-\note If exceptions are blocked, it will return an std::pair with two
-Not-a-Number values instead of throwing.
-*/
-std::pair<integer, integer> divide_r(const integer& d1, const
- integer& d2)
-{
+std::pair<integer, integer> divide_r(const integer& d1, const integer& d2) {
int sign1=d1.sign(), sign2=d2.sign();
- if (sign2==0) {
- if (exceptions_allowed()) throw divide_by_zero();
- else return std::make_pair(integer(not_a_number()), integer(not_a_number()));
- }
+ if (sign2==0) throw divide_by_zero();
int comp=compare(d1, d2, true);
if (comp<0) {
@@ -313,5 +252,121 @@
}
}
+} // namespace core
+
+/*! \brief Returns the absolute value of an integer.
+
+\param[in] n The integer to operate on.
+
+\returns If \c n is zero or positive, returns \c n. Otherwise returns \c -n.
+*/
+integer abs(const integer& n) {
+ try {
+ return integer(abs(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+/*! \brief Return the additive inverse of an integer.
+
+\param[in] n The integer to operate on.
+
+\returns \c -n.
+*/
+integer negate(const integer& n) {
+ try {
+ return integer(negate(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+/*! \brief Calculate the sum of two integers.
+
+\param[in] n1, n2 The integers to add.
+
+\returns The sum of the parameters.
+*/
+integer add(const integer& n1, const integer& n2) {
+ try {
+ return integer(add(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+/*! \brief Calculate the difference between two integers.
+
+\param[in] n1, n2 The integers to operate on.
+
+\returns The difference between the parameters.
+*/
+integer subtract(const integer& n1, const integer& n2) {
+ try {
+ return integer(subtract(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+/*! \brief Calculate the product of two integers.
+
+\param[in] n, by The integers to operate on.
+
+\returns The product of the parameters.
+
+\remarks
+Automatically uses the more-efficient squaring algorithm if it can trivially
+detect that the two parameters are copies of the same number.
+*/
+integer multiply(const integer& n, const integer& by) {
+ try {
+ return integer(multiply(core::integer(n), core::integer(by)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+/*! \brief Calculate how many \c dividends would fit into \c divisor.
+
+\param[in] dividend, divisor The integers to operate on.
+
+\returns The integer value of \c dividend divided by \c divisor.
+
+\exception xint::divide_by_zero if \c divisor is zero.
+*/
+integer divide(const integer& dividend, const integer& divisor) {
+ return divide_r(dividend, divisor).first;
+}
+
+/*! \brief Calculate how many \c dividends would fit into \c divisor, with the
+ remainder.
+
+\param[in] d1 The dividend.
+\param[in] d2 The divisor.
+
+\returns An \c std::pair containing the quotient and remainder of \c d1 divided
+by \c d2.
+
+\exception xint::divide_by_zero if \c d2 is zero.
+
+\note If exceptions are blocked, returns an std::pair with two Not-a-Number
+values instead of throwing.
+*/
+std::pair<integer, integer> divide_r(const integer& d1, const integer& d2) {
+ try {
+ return divide_r(core::integer(d1), core::integer(d2));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return std::make_pair(integer::nan(), integer::nan());
+ }
+}
+
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/random.cpp
==============================================================================
--- sandbox/xint/src/random.cpp (original)
+++ sandbox/xint/src/random.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -180,26 +180,7 @@
// Returns a positive (unless told otherwise) integer between zero and
// (1<<bits)-1, inclusive
-/*! \brief Generates a random integer with specific attributes.
-
-\param[in] bits The maximum number of bits that you want the returned number to
-have.
-\param[in] high_bit_on If \c true, the returned number will have exactly the
-requested size. If \c false, the upper bits may be zero, resulting in a number
-that is slightly smaller than requested.
-\param[in] low_bit_on If \c true, the returned number will always be odd. If
-\c false, it has an equal chance of being odd or even.
-\param[in] can_be_negative If \c true, the returned value has an equal chance
-of being positive or negative. If \c false, it will always be positive.
-
-\returns A random integer with the requested attributes.
-
-\remarks
-This function uses the currently-defined random generator.
-
-\see \ref random
-\see xint::set_random_generator
-*/
+namespace core {
integer random_by_size(size_t bits, bool high_bit_on, bool low_bit_on, bool
can_be_negative)
{
@@ -231,6 +212,39 @@
return p;
}
+} // namespace core
+
+/*! \brief Generates a random integer with specific attributes.
+
+\param[in] bits The maximum number of bits that you want the returned number to
+have.
+\param[in] high_bit_on If \c true, the returned number will have exactly the
+requested size. If \c false, the upper bits may be zero, resulting in a number
+that is slightly smaller than requested.
+\param[in] low_bit_on If \c true, the returned number will always be odd. If
+\c false, it has an equal chance of being odd or even.
+\param[in] can_be_negative If \c true, the returned value has an equal chance
+of being positive or negative. If \c false, it will always be positive.
+
+\returns A random integer with the requested attributes.
+
+\remarks
+This function uses the currently-defined random generator.
+
+\see \ref random
+\see xint::set_random_generator
+*/
+integer random_by_size(size_t bits, bool high_bit_on, bool low_bit_on, bool
+ can_be_negative)
+{
+ try {
+ return integer(core::random_by_size(bits, high_bit_on, low_bit_on,
+ can_be_negative));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/roots.cpp
==============================================================================
--- sandbox/xint/src/roots.cpp (original)
+++ sandbox/xint/src/roots.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -20,23 +20,11 @@
namespace boost {
namespace xint {
-/*! \brief Calculate the square root of \c an integer.
-
-\param[in] n The value to operate on.
-
-\returns The largest integer that, when squared, is less than or equal to \c n.
-If \c n is not a perfect square, then this value will not be the exact square
-root.
-
-\exception xint::cannot_represent if \c n is negative.
-*/
+namespace core {
integer sqrt(const integer& n) {
- if (n.sign() < 0) {
- if (exceptions_allowed()) throw cannot_represent("library cannot "
- "represent imaginary values (tried to take sqrt of negative "
- "number)");
- else return integer(not_a_number());
- } else if (n.sign() == 0) return integer::zero();
+ if (n.sign() < 0) throw cannot_represent("library cannot represent "
+ "imaginary values (tried to take sqrt of negative number)");
+ if (n.sign() == 0) return integer::zero();
// Initial guess is half the length of n, in bits
integer guess;
@@ -51,6 +39,26 @@
return guess;
}
+} // namespace core
+
+/*! \brief Calculate the square root of \c an integer.
+
+\param[in] n The value to operate on.
+
+\returns The largest integer that, when squared, is less than or equal to \c n.
+If \c n is not a perfect square, then this value will not be the exact square
+root.
+
+\exception xint::cannot_represent if \c n is negative.
+*/
+integer sqrt(const integer& n) {
+ try {
+ return integer(sqrt(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
} // namespace xint
} // namespace boost
Modified: sandbox/xint/test/test_monty.cpp
==============================================================================
--- sandbox/xint/test/test_monty.cpp (original)
+++ sandbox/xint/test/test_monty.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -23,6 +23,7 @@
namespace boost {
namespace xint {
+namespace core {
using std::endl;
@@ -133,5 +134,6 @@
}
}
+} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/test/test_streams.cpp
==============================================================================
--- sandbox/xint/test/test_streams.cpp (original)
+++ sandbox/xint/test/test_streams.cpp 2010-04-07 20:40:43 EDT (Wed, 07 Apr 2010)
@@ -158,7 +158,7 @@
str.flags(defaultFlags);
str.clear();
- str << integer(not_a_number());
+ str << integer::nan();
std::string temp=str.str();
integer test;
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk