|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r61200 - in sandbox/xint: boost/xint doc doc/dox example src test
From: chad.thecomfychair_at_[hidden]
Date: 2010-04-11 10:29:56
Author: chadnelson
Date: 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
New Revision: 61200
URL: http://svn.boost.org/trac/boost/changeset/61200
Log:
Moved blockable functions to their own namespace, physically separated them from core functions, added more documentation, refactored code.
Added:
sandbox/xint/doc/blockable__bit__manipulations_8cpp.html (contents, props changed)
sandbox/xint/doc/blockable__bit__manipulations_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__compare_8cpp.html (contents, props changed)
sandbox/xint/doc/blockable__compare_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__convert_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/roots_8cpp.html
sandbox/xint/doc/blockable__convert_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__gcd_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/roots_8cpp.html
sandbox/xint/doc/blockable__gcd_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__integer_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/data__t_8cpp.html
sandbox/xint/doc/blockable__integer_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__misc_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/data__t_8cpp.html
sandbox/xint/doc/blockable__misc_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__modular_8cpp.html (contents, props changed)
sandbox/xint/doc/blockable__modular_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__operators_8cpp.html (contents, props changed)
sandbox/xint/doc/blockable__operators_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__powers_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/roots_8cpp.html
sandbox/xint/doc/blockable__powers_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__primes_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/integer_8cpp.html
sandbox/xint/doc/blockable__primes_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__primitives_8cpp.html (contents, props changed)
sandbox/xint/doc/blockable__primitives_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__random_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/integer_8cpp.html
sandbox/xint/doc/blockable__random_8cpp_source.html (contents, props changed)
sandbox/xint/doc/blockable__roots_8cpp.html
- copied, changed from r61199, /sandbox/xint/doc/integer_8cpp.html
sandbox/xint/doc/blockable__roots_8cpp_source.html
- copied, changed from r61199, /sandbox/xint/doc/xint__test_8hpp_source.html
sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer-members.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.png (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer-members.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.html (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.png (contents, props changed)
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.png (contents, props changed)
sandbox/xint/doc/ex__fibonacci.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/ex_fibonacci.html
sandbox/xint/doc/namespaceboost_1_1xint_1_1blockable.html (contents, props changed)
sandbox/xint/doc/r__core.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_core.html
sandbox/xint/doc/r__cow.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_cow.html
sandbox/xint/doc/r__default__necessary.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_default_necessary.html
sandbox/xint/doc/r__exception__blocking.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_exception_blocking.html
sandbox/xint/doc/r__insecure__default.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_insecure_default.html
sandbox/xint/doc/r__interface.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_interface.html
sandbox/xint/doc/r__interface__design__only.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_interface_design_only.html
sandbox/xint/doc/r__nan.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_nan.html
sandbox/xint/doc/r__negzero.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_negzero.html
sandbox/xint/doc/r__random.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_random.html
sandbox/xint/doc/r__shared__ptr.html (contents, props changed)
- copied, changed from r61199, /sandbox/xint/doc/r_shared_ptr.html
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.png (contents, props changed)
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.png (contents, props changed)
sandbox/xint/src/blockable_bit_manipulations.cpp (contents, props changed)
sandbox/xint/src/blockable_compare.cpp (contents, props changed)
sandbox/xint/src/blockable_convert.cpp (contents, props changed)
sandbox/xint/src/blockable_gcd.cpp (contents, props changed)
sandbox/xint/src/blockable_integer.cpp (contents, props changed)
sandbox/xint/src/blockable_misc.cpp (contents, props changed)
sandbox/xint/src/blockable_modular.cpp (contents, props changed)
sandbox/xint/src/blockable_operators.cpp (contents, props changed)
sandbox/xint/src/blockable_powers.cpp (contents, props changed)
sandbox/xint/src/blockable_primes.cpp (contents, props changed)
sandbox/xint/src/blockable_primitives.cpp (contents, props changed)
sandbox/xint/src/blockable_random.cpp (contents, props changed)
sandbox/xint/src/blockable_roots.cpp (contents, props changed)
Removed:
sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html
sandbox/xint/doc/classboost_1_1xint_1_1integer.html
sandbox/xint/doc/classxint_1_1cannot__represent-members.html
sandbox/xint/doc/classxint_1_1cannot__represent.html
sandbox/xint/doc/classxint_1_1divide__by__zero-members.html
sandbox/xint/doc/classxint_1_1divide__by__zero.html
sandbox/xint/doc/classxint_1_1integer-members.html
sandbox/xint/doc/classxint_1_1integer.html
sandbox/xint/doc/classxint_1_1invalid__base-members.html
sandbox/xint/doc/classxint_1_1invalid__base.html
sandbox/xint/doc/classxint_1_1invalid__digit-members.html
sandbox/xint/doc/classxint_1_1invalid__digit.html
sandbox/xint/doc/classxint_1_1invalid__modulus-members.html
sandbox/xint/doc/classxint_1_1invalid__modulus.html
sandbox/xint/doc/classxint_1_1no__strong__random-members.html
sandbox/xint/doc/classxint_1_1no__strong__random.html
sandbox/xint/doc/classxint_1_1not__a__number-members.html
sandbox/xint/doc/classxint_1_1not__a__number.html
sandbox/xint/doc/classxint_1_1overflow__error-members.html
sandbox/xint/doc/classxint_1_1overflow__error.html
sandbox/xint/doc/classxint_1_1strong__random__generator-members.html
sandbox/xint/doc/classxint_1_1strong__random__generator.html
sandbox/xint/doc/classxint_1_1too__big-members.html
sandbox/xint/doc/classxint_1_1too__big.html
sandbox/xint/doc/ex_fibonacci.html
sandbox/xint/doc/namespacexint.html
sandbox/xint/doc/namespacexint_1_1detail.html
sandbox/xint/doc/r_core.html
sandbox/xint/doc/r_cow.html
sandbox/xint/doc/r_default_necessary.html
sandbox/xint/doc/r_exception_blocking.html
sandbox/xint/doc/r_insecure_default.html
sandbox/xint/doc/r_interface.html
sandbox/xint/doc/r_interface_design_only.html
sandbox/xint/doc/r_nan.html
sandbox/xint/doc/r_negzero.html
sandbox/xint/doc/r_random.html
sandbox/xint/doc/r_shared_ptr.html
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.gif
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.gif
sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator-members.html
sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator.gif
sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator.html
sandbox/xint/doc/structxint_1_1detail_1_1data__t-members.html
sandbox/xint/doc/structxint_1_1detail_1_1data__t.html
sandbox/xint/doc/structxint_1_1detail_1_1data__t_1_1_quick_digits-members.html
sandbox/xint/doc/structxint_1_1detail_1_1data__t_1_1_quick_digits.html
sandbox/xint/doc/structxint_1_1detail_1_1random__generator-members.html
sandbox/xint/doc/structxint_1_1detail_1_1random__generator.gif
sandbox/xint/doc/structxint_1_1detail_1_1random__generator.html
sandbox/xint/doc/structxint_1_1detail_1_1token.html
Text files modified:
sandbox/xint/boost/xint/xint.hpp | 622 ++++++----
sandbox/xint/boost/xint/xint_data_t.hpp | 1
sandbox/xint/doc/acknowledgements.html | 9
sandbox/xint/doc/acknowledgements_8dox.html | 6
sandbox/xint/doc/annotated.html | 13
sandbox/xint/doc/bit__manipulations_8cpp.html | 51
sandbox/xint/doc/bit__manipulations_8cpp_source.html | 372 ++----
sandbox/xint/doc/blockable__convert_8cpp.html | 39
sandbox/xint/doc/blockable__gcd_8cpp.html | 41
sandbox/xint/doc/blockable__integer_8cpp.html | 27
sandbox/xint/doc/blockable__misc_8cpp.html | 32
sandbox/xint/doc/blockable__powers_8cpp.html | 34
sandbox/xint/doc/blockable__primes_8cpp.html | 32
sandbox/xint/doc/blockable__random_8cpp.html | 31
sandbox/xint/doc/blockable__roots_8cpp.html | 31
sandbox/xint/doc/blockable__roots_8cpp_source.html | 39
sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html | 28
sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html | 439 +++----
sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1invalid__base-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1invalid__base.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1not__a__number-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1not__a__number.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1overflow__error-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1overflow__error.html | 12
sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html | 24
sandbox/xint/doc/classboost_1_1xint_1_1too__big-members.html | 6
sandbox/xint/doc/classboost_1_1xint_1_1too__big.html | 12
sandbox/xint/doc/classes.html | 22
sandbox/xint/doc/compare_8cpp.html | 35
sandbox/xint/doc/compare_8cpp_source.html | 140 -
sandbox/xint/doc/convert_8cpp.html | 33
sandbox/xint/doc/convert_8cpp_source.html | 310 ++--
sandbox/xint/doc/copyonwrite_8dox.html | 6
sandbox/xint/doc/cow.html | 10
sandbox/xint/doc/data__t_8cpp.html | 11
sandbox/xint/doc/data__t_8cpp_source.html | 520 ++++----
sandbox/xint/doc/dependencies.html | 6
sandbox/xint/doc/dependencies_8dox.html | 6
sandbox/xint/doc/dox/Doxyfile | 129 +
sandbox/xint/doc/dox/acknowledgements.dox | 5
sandbox/xint/doc/dox/copyonwrite.dox | 8
sandbox/xint/doc/dox/dependencies.dox | 4
sandbox/xint/doc/dox/exceptions.dox | 35
sandbox/xint/doc/dox/history.dox | 13
sandbox/xint/doc/dox/index.dox | 15
sandbox/xint/doc/dox/nan.dox | 23
sandbox/xint/doc/dox/primes.dox | 12
sandbox/xint/doc/dox/r_core.dox | 18
sandbox/xint/doc/dox/r_cow.dox | 8
sandbox/xint/doc/dox/r_insecure_default.dox | 8
sandbox/xint/doc/dox/r_negzero.dox | 4
sandbox/xint/doc/dox/random.dox | 14
sandbox/xint/doc/doxygen.css | 95 +
sandbox/xint/doc/ex__fibonacci.html | 12
sandbox/xint/doc/ex__fibonacci_8dox.html | 6
sandbox/xint/doc/exception__blocker_8cpp.html | 11
sandbox/xint/doc/exception__blocker_8cpp_source.html | 6
sandbox/xint/doc/exceptions.html | 33
sandbox/xint/doc/exceptions_8dox.html | 6
sandbox/xint/doc/files.html | 19
sandbox/xint/doc/functions.html | 101
sandbox/xint/doc/functions_func.html | 102
sandbox/xint/doc/functions_type.html | 6
sandbox/xint/doc/functions_vars.html | 9
sandbox/xint/doc/gcd_8cpp.html | 32
sandbox/xint/doc/gcd_8cpp_source.html | 134 -
sandbox/xint/doc/globals.html | 6
sandbox/xint/doc/globals_defs.html | 6
sandbox/xint/doc/globals_vars.html | 6
sandbox/xint/doc/hierarchy.html | 13
sandbox/xint/doc/history.html | 19
sandbox/xint/doc/history_8dox.html | 6
sandbox/xint/doc/index.html | 16
sandbox/xint/doc/index_8dox.html | 6
sandbox/xint/doc/integer_8cpp.html | 12
sandbox/xint/doc/integer_8cpp_source.html | 652 +++-------
sandbox/xint/doc/misc_8cpp.html | 21
sandbox/xint/doc/misc_8cpp_source.html | 42
sandbox/xint/doc/modular_8cpp.html | 30
sandbox/xint/doc/modular_8cpp_source.html | 157 -
sandbox/xint/doc/monty_8cpp.html | 18
sandbox/xint/doc/monty_8cpp_source.html | 16
sandbox/xint/doc/namespaceboost.html | 8
sandbox/xint/doc/namespaceboost_1_1xint.html | 2335 +--------------------------------------
sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html | 637 ++++++++++
sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html | 10
sandbox/xint/doc/namespacemembers.html | 208 +-
sandbox/xint/doc/namespacemembers_func.html | 208 +-
sandbox/xint/doc/namespacemembers_type.html | 6
sandbox/xint/doc/namespacemembers_vars.html | 6
sandbox/xint/doc/namespaces.html | 11
sandbox/xint/doc/nan.html | 18
sandbox/xint/doc/nan_8dox.html | 6
sandbox/xint/doc/operators_8cpp.html | 27
sandbox/xint/doc/operators_8cpp_source.html | 40
sandbox/xint/doc/pages.html | 6
sandbox/xint/doc/powers_8cpp.html | 31
sandbox/xint/doc/powers_8cpp_source.html | 190 +-
sandbox/xint/doc/primes.html | 17
sandbox/xint/doc/primes_8cpp.html | 24
sandbox/xint/doc/primes_8cpp_source.html | 114 -
sandbox/xint/doc/primes_8dox.html | 6
sandbox/xint/doc/primitives_8cpp.html | 40
sandbox/xint/doc/primitives_8cpp_source.html | 507 +++----
sandbox/xint/doc/r__core.html | 18
sandbox/xint/doc/r__core_8dox.html | 6
sandbox/xint/doc/r__cow.html | 8
sandbox/xint/doc/r__cow_8dox.html | 6
sandbox/xint/doc/r__default__necessary.html | 8
sandbox/xint/doc/r__default__necessary_8dox.html | 6
sandbox/xint/doc/r__exception__blocking.html | 8
sandbox/xint/doc/r__exception__blocking_8dox.html | 6
sandbox/xint/doc/r__insecure__default.html | 10
sandbox/xint/doc/r__insecure__default_8dox.html | 6
sandbox/xint/doc/r__interface.html | 8
sandbox/xint/doc/r__interface_8dox.html | 6
sandbox/xint/doc/r__interface__design__only.html | 8
sandbox/xint/doc/r__interface__design__only_8dox.html | 6
sandbox/xint/doc/r__nan.html | 8
sandbox/xint/doc/r__nan_8dox.html | 6
sandbox/xint/doc/r__negzero.html | 10
sandbox/xint/doc/r__negzero_8dox.html | 6
sandbox/xint/doc/r__random.html | 8
sandbox/xint/doc/r__random_8dox.html | 6
sandbox/xint/doc/r__shared__ptr.html | 8
sandbox/xint/doc/r__shared__ptr_8dox.html | 6
sandbox/xint/doc/random.html | 10
sandbox/xint/doc/random_8cpp.html | 24
sandbox/xint/doc/random_8cpp_source.html | 243 +--
sandbox/xint/doc/random_8dox.html | 6
sandbox/xint/doc/rationale.html | 28
sandbox/xint/doc/rationale_8dox.html | 6
sandbox/xint/doc/roots_8cpp.html | 18
sandbox/xint/doc/roots_8cpp_source.html | 63
sandbox/xint/doc/securemode.html | 6
sandbox/xint/doc/securemode_8dox.html | 6
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html | 6
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html | 10
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html | 7
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html | 75
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html | 6
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html | 8
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html | 6
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html | 10
sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html | 8
sandbox/xint/doc/testing.html | 6
sandbox/xint/doc/testing_8dox.html | 6
sandbox/xint/doc/threadsafe.html | 6
sandbox/xint/doc/threadsafe_8dox.html | 6
sandbox/xint/doc/todo.html | 8
sandbox/xint/doc/xint_8hpp.html | 328 +++--
sandbox/xint/doc/xint_8hpp_source.html | 1208 ++++++++++----------
sandbox/xint/doc/xint__data__t_8hpp.html | 11
sandbox/xint/doc/xint__data__t_8hpp_source.html | 73
sandbox/xint/doc/xint__monty_8hpp.html | 14
sandbox/xint/doc/xint__monty_8hpp_source.html | 6
sandbox/xint/doc/xint__test_8hpp.html | 10
sandbox/xint/doc/xint__test_8hpp_source.html | 6
sandbox/xint/example/exceptions.cpp | 2
sandbox/xint/example/fibonacci.cpp | 2
sandbox/xint/example/genprime.cpp | 3
sandbox/xint/src/bit_manipulations.cpp | 248 +---
sandbox/xint/src/compare.cpp | 70
sandbox/xint/src/convert.cpp | 181 +-
sandbox/xint/src/data_t.cpp | 21
sandbox/xint/src/gcd.cpp | 83
sandbox/xint/src/integer.cpp | 488 +------
sandbox/xint/src/misc.cpp | 34
sandbox/xint/src/modular.cpp | 117 -
sandbox/xint/src/operators.cpp | 12
sandbox/xint/src/powers.cpp | 92 -
sandbox/xint/src/primes.cpp | 84
sandbox/xint/src/primitives.cpp | 168 -
sandbox/xint/src/random.cpp | 55
sandbox/xint/src/roots.cpp | 33
sandbox/xint/test/test_add.cpp | 2
sandbox/xint/test/test_bit_manipulations.cpp | 2
sandbox/xint/test/test_convert.cpp | 4
sandbox/xint/test/test_divide.cpp | 2
sandbox/xint/test/test_multiply.cpp | 18
sandbox/xint/test/test_streams.cpp | 6
192 files changed, 5378 insertions(+), 8238 deletions(-)
Modified: sandbox/xint/boost/xint/xint.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint.hpp (original)
+++ sandbox/xint/boost/xint/xint.hpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -36,7 +36,7 @@
#include <boost/random/variate_generator.hpp>
namespace boost {
-//! \brief All of the commonly-used functions are within this namespace.
+//! \brief The common functions are within this namespace.
namespace xint {
////////////////////////////////////////////////////////////////////////////////
@@ -123,41 +123,77 @@
//! @see xint::from_string
const size_t autobase=(std::numeric_limits<size_t>::max)();
+namespace blockable {
class integer;
+} // namespace blockable
-/*! \brief Contains the core integer type and core functions.
+/*! \brief Contains the "pure" integer type, and functions to operate on it.
-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.
+The types and functions in the xint::core namespace ignore exception-blocking
+and do not support the Not-a-Number value. If you attempt to assign a
+Not-a-Number to a core::integer, it will throw an xint::not_a_number exception.
*/
namespace core {
-//! \brief The core integer class.
-class integer {
+//! \brief The base class for the integer classes.
+class base_integer {
+ public:
+ base_integer(): data(0) { }
+ ~base_integer();
+
+ //! \name Internal Functions
+ //@{
+ detail::data_t *_get_data() const { return data; }
+ detail::digit_t _get_digit(size_t index) const;
+ detail::digit_t _get_digit(size_t index, bool) const; //!< \overload
+ size_t _get_length() const;
+ bool _is_unique() const;
+ //@}
+
+ protected:
+ void _attach(detail::data_t *new_data);
+ void _attach(const base_integer& copy);
+
+ private:
+ detail::data_t *data;
+};
+
+/*! \brief The core %integer class.
+
+ This class implements the "pure" \c integer type, uncontaminated by things
+ like the Not-a-Number value.
+
+ There are only a few member functions; most of the functionality is
+ implemented using standalone functions.
+
+ Functions that start with an underscore (such as \c _make_unique) are
+ intended for internal use only. They may change arbitrarily in future
+ versions.
+*/
+class integer: public core::base_integer {
public:
//! \name Constructors & Destructors
//!@{
integer();
integer(const integer& b);
- explicit integer(const ::boost::xint::integer& b);
+ explicit integer(const blockable::integer& b);
+ explicit integer(const std::string& str, size_t base=10);
template <typename T> integer(const T& n,
typename boost::enable_if<boost::is_integral<T> >::type* = 0,
typename boost::enable_if<boost::is_signed<T> >::type* = 0);
template <typename T> integer(const T& n,
typename boost::enable_if<boost::is_integral<T> >::type* = 0,
typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
- explicit integer(const std::string& str, size_t base=10);
- ~integer();
//!@}
- //! \name Mathematical and Bitwise Operators
+ /*! \name Mathematical and Bitwise Operators
+ \brief These operate exactly like their counterparts for the built-in
+ %integer types.
+
+ Note that there is no \c operator~. Since the integer type doesn't have
+ a fixed maximum size, there is no logical way to implement it.
+ */
//@{
integer& operator=(const integer &c);
@@ -181,7 +217,12 @@
integer& operator>>=(size_t shift);
//@}
- //! \name Preconstructed integers
+ /*! \name Preconstructed integers
+
+ These return preconstructed integers with the values named by the
+ functions. They are used internally, so that the most common values
+ don't have to be constructed each time they're needed.
+ */
//@{
static const integer& zero();
static const integer& one();
@@ -196,13 +237,11 @@
size_t hex_digits() const;
//!@}
- //! \name Internal Functions
+ /*! \name Internal Functions
+ \brief These functions allow access to the internals of the %integer.
+ They are intended for internal use only.
+ */
//@{
- 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();
//@}
@@ -211,20 +250,132 @@
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;
};
+//! \name Mathematical primitives
+//!@{
+integer abs(const integer& n);
+integer negate(const integer& n);
+integer add(const integer& n, const integer& addend);
+integer subtract(const integer& n, const integer& subtrahend);
+integer multiply(const integer& n, const integer& multiplicand);
+integer divide(const integer& dividend, const integer& divisor);
+std::pair<integer, integer> divide_r(const integer& dividend, const integer&
+ divisor);
+//!@}
+
+//! \name Powers and roots
+//!@{
+integer sqr(const integer& n);
+integer pow(const integer& n, const integer& exponent);
+integer pow2(size_t exponent);
+integer factorial(size_t n);
+integer sqrt(const integer& n);
+//!@}
+
+//! \name Conversion functions
+//!@{
+template <typename T> T to(const integer& n);
+std::string to_string(const integer& n, size_t base=10, bool upperCase=false);
+integer from_string(const std::string& str, size_t base=10);
+std::string to_binary(const integer& n);
+integer from_binary(const std::string& s);
+//!@}
+
+//! \name Bit-manipulation functions
+//!@{
+bool getbit(const integer& n, size_t bit);
+void setbit(integer& n, size_t bit);
+void clearbit(integer& n, size_t bit);
+size_t lowestbit(const integer& n, size_t valueIfZero=0);
+size_t highestbit(const integer& n, size_t valueIfZero=0);
+integer bitwise_and(const integer& n1, const integer& n2);
+integer bitwise_or (const integer& n1, const integer& n2);
+integer bitwise_xor(const integer& n1, const integer& n2);
+integer shift(const integer& n, int byBits);
+integer shift_left(const integer& n, size_t byBits);
+integer shift_right(const integer& n, size_t byBits);
+//!@}
+
+/*! \name Modular math functions
+
+A common reason to use a large-integer library is to implement public-key
+encryption, and the algorithms for such encryption often use modular math.
+*/
+//!@{
+integer mod(const integer& n, const integer& modBy);
+integer mulmod(const integer& n, const integer& by, const integer& modulus);
+integer sqrmod(const integer& n, const integer& modulus);
+integer powmod(const integer& n, const integer& exponent, const integer&
+ modulus, bool noMontgomery=false);
+integer invmod(const integer& n, const integer& modulus);
+//!@}
+
+//! \name Random number functions
+//!@{
+integer random_by_size(size_t sizeInBits, bool highBitOn=false, bool
+ lowBitOn=false, bool canBeNegative=false);
+//!@}
+
+//! \name Prime number functions
+//!@{
+int is_prime(const integer& n, callback_t callback=no_callback);
+integer random_prime(size_t sizeInBits, callback_t callback=no_callback);
+//!@}
+
+/*! \name Operators
+
+ These act exactly the same as for the built-in %integer types.
+*/
+//!@{
+bool operator!(const integer& n1);
+bool operator<(const integer& n1, const integer& n2);
+bool operator>(const integer& n1, const integer& n2);
+bool operator<=(const integer& n1, const integer& n2);
+bool operator>=(const integer& n1, const integer& n2);
+bool operator==(const integer& n1, const integer& n2);
+bool operator!=(const integer& n1, const integer& n2);
+
+const integer& operator+(const integer& a);
+integer operator-(const integer& a);
+integer operator+(const integer& n1, const integer& n2);
+integer operator-(const integer& n1, const integer& n2);
+integer operator*(const integer& n1, const integer& n2);
+integer operator/(const integer& n1, const integer& n2);
+integer operator%(const integer& n1, const integer& n2);
+integer operator&(const integer& n1, const integer& n2);
+integer operator|(const integer& n1, const integer& n2);
+integer operator^(const integer& n1, const integer& n2);
+//!@}
+
+//! \name Miscellaneous functions
+//!@{
+int compare(const integer &n1, const integer &n2, bool ignoresign=false);
+size_t log2(const integer& n);
+integer gcd(const integer& num1, const integer& num2);
+integer lcm(const integer& num1, const integer& num2);
+//!@}
+
} // namespace core
+/*! \brief Contains the blockable integer type, and functions to operate on it.
+
+The types and functions in the \c blockable namespace act just like the ones in
+the \c xint::core namespace, except that they honor exception-blocking and
+support a Not-a-Number value.
+
+\see exceptions
+\see nan
+*/
+namespace blockable {
+
////////////////////////////////////////////////////////////////////////////////
-// The integer class
+// The blockable integer class
-/*! \brief The extended %integer class.
+/*! \brief The blockable %integer class.
- This class implements the main \c integer type.
+ Functions using this class can be exception-blocked. See \link exceptions
+ this page\endlink for details.
There are only a few member functions; most of the functionality is
implemented using standalone functions.
@@ -233,7 +384,7 @@
intended for internal use only. They may change arbitrarily in future
versions.
*/
-class integer {
+class integer: public core::base_integer {
public:
//! \name Constructors & Destructors
@@ -241,13 +392,13 @@
integer();
integer(const integer& b);
integer(const core::integer& b);
+ explicit integer(const std::string& str, size_t base=10);
template <typename T> integer(const T& n,
typename boost::enable_if<boost::is_integral<T> >::type* = 0,
typename boost::enable_if<boost::is_signed<T> >::type* = 0);
template <typename T> integer(const T& n,
typename boost::enable_if<boost::is_integral<T> >::type* = 0,
typename boost::enable_if<boost::is_unsigned<T> >::type* = 0);
- explicit integer(const std::string& str, size_t base=10);
//!@}
/*! \name Mathematical and Bitwise Operators
@@ -294,8 +445,7 @@
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.
+ don't have to be constructed each time they're needed.
*/
//@{
static const integer& zero();
@@ -308,11 +458,6 @@
They are intended for internal use only.
*/
//@{
- 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();
//@}
@@ -321,56 +466,8 @@
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;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-/*! \brief A convenience class for cryptographically-secure random numbers.
-
- Used with xint::set_random_generator to set the XInt library to use the
- system-supplied secure random number generator.
-
- \see \ref random
-*/
-class strong_random_generator {
- public:
- typedef unsigned int result_type;
-
- strong_random_generator();
- ~strong_random_generator();
- result_type operator()();
-
- static const bool has_fixed_range;
- static const result_type min_value;
- static const result_type max_value;
- result_type min() const;
- result_type max() const;
- double entropy() const;
-
- private:
- struct impl_t;
- impl_t *impl;
};
-////////////////////////////////////////////////////////////////////////////////
-
-/*! \name Exception-blocking and -allowing functions
-
- See the \ref exceptions "exception-blocking page" for details on these
- functions and how to use them.
-*/
-//!@{
-bool exceptions_allowed();
-token block_exceptions();
-token allow_exceptions();
-//!@}
-
-////////////////////////////////////////////////////////////////////////////////
-
//! \name Mathematical primitives
//!@{
integer abs(const integer& n);
@@ -381,17 +478,6 @@
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
//!@}
////////////////////////////////////////////////////////////////////////////////
@@ -403,14 +489,6 @@
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
//!@}
////////////////////////////////////////////////////////////////////////////////
@@ -422,14 +500,6 @@
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
//!@}
////////////////////////////////////////////////////////////////////////////////
@@ -447,20 +517,6 @@
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
//!@}
////////////////////////////////////////////////////////////////////////////////
@@ -477,29 +533,14 @@
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
//!@}
////////////////////////////////////////////////////////////////////////////////
//! \name Random number functions
//!@{
-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
//!@}
////////////////////////////////////////////////////////////////////////////////
@@ -508,11 +549,6 @@
//!@{
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
//!@}
////////////////////////////////////////////////////////////////////////////////
@@ -521,27 +557,7 @@
These act exactly the same as for the built-in %integer types.
*/
-//!@{
-bool operator!(const integer& n1);
-bool operator<(const integer& n1, const integer& n2);
-bool operator>(const integer& n1, const integer& n2);
-bool operator<=(const integer& n1, const integer& n2);
-bool operator>=(const integer& n1, const integer& n2);
-bool operator==(const integer& n1, const integer& n2);
-bool operator!=(const integer& n1, const integer& n2);
-
-const integer& operator+(const integer& a);
-integer operator-(const integer& a);
-integer operator+(const integer& n1, const integer& n2);
-integer operator-(const integer& n1, const integer& n2);
-integer operator*(const integer& n1, const integer& n2);
-integer operator/(const integer& n1, const integer& n2);
-integer operator%(const integer& n1, const integer& n2);
-integer operator&(const integer& n1, const integer& n2);
-integer operator|(const integer& n1, const integer& n2);
-integer operator^(const integer& n1, const integer& n2);
-
-namespace core {
+//!@{
bool operator!(const integer& n1);
bool operator<(const integer& n1, const integer& n2);
bool operator>(const integer& n1, const integer& n2);
@@ -560,27 +576,71 @@
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
//!@}
////////////////////////////////////////////////////////////////////////////////
//! \name Miscellaneous functions
//!@{
-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
+} // namespace blockable
+
+////////////////////////////////////////////////////////////////////////////////
+
+/*! \brief A convenience class for cryptographically-secure random numbers.
+
+ Used with xint::set_random_generator to set the XInt library to use the
+ system-supplied secure random number generator.
+
+ \see \ref random
+*/
+class strong_random_generator {
+ public:
+ typedef unsigned int result_type;
+
+ strong_random_generator();
+ ~strong_random_generator();
+ result_type operator()();
+
+ static const bool has_fixed_range;
+ static const result_type min_value;
+ static const result_type max_value;
+ result_type min() const;
+ result_type max() const;
+ double entropy() const;
+
+ private:
+ struct impl_t;
+ impl_t *impl;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
+/*! \name Exception-blocking and -allowing functions
+
+ See the \ref exceptions "exception-blocking page" for details on these
+ functions and how to use them.
+*/
+//!@{
+bool exceptions_allowed();
+token block_exceptions();
+token allow_exceptions();
+//!@}
+
+//! \name Random number functions
+//!@{
+template <typename T> void set_random_generator(T *gen);
+//!@}
+
+//! \name Miscellaneous functions
+//!@{
+bool opt_secure_mode();
+bool opt_thread_safe();
//!@}
////////////////////////////////////////////////////////////////////////////////
@@ -702,38 +762,26 @@
////////////////////////////////////////////////////////////////////////////////
// Template function definitions
-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*)
-{
- if (n >= 0) {
- if (static_cast<T>(n & detail::digit_mask) == n)
- _init(detail::digit_t(n));
- else _init(boost::uintmax_t(n));
- } else if (n == (std::numeric_limits<T>::min)()) {
- // Have to treat the minimum number carefully, because -n is not
- // what you'd think it is.
- _init(boost::uintmax_t(-(n+1)));
- _set_negative(true);
- --(*this);
- } else {
- _init(boost::uintmax_t(-n));
- _set_negative(true);
- }
+/*! \brief Change the random generator that the library uses.
+
+\param[in] gen A pointer to the new generator to use.
+
+\warning The generator must be a heap-allocated pointer (one created with
+<code>new</code>), which the XInt library assumes ownership of. Don't pass in a
+stack-created item, don't try to delete the item that you passed in, and don't
+attempt to use it separately after passing it to this function, or the behavior
+is undefined.
+
+\remarks
+See the \link random Random Number page\endlink for an example of how to use it.
+*/
+template <typename T>
+void set_random_generator(T *gen) {
+ detail::random_generator<T> *obj=new detail::random_generator<T>(gen);
+ detail::set_random_generator(obj);
}
-} // namespace core
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 signed
@@ -751,13 +799,19 @@
typename boost::enable_if<boost::is_integral<T> >::type*,
typename boost::enable_if<boost::is_signed<T> >::type*)
{
- data=0;
- try {
- *this=integer(core::integer(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- delete data;
- data=0;
+ if (n >= 0) {
+ if (static_cast<T>(n & detail::digit_mask) == n)
+ _init(detail::digit_t(n));
+ else _init(boost::uintmax_t(n));
+ } else if (n == (std::numeric_limits<T>::min)()) {
+ // Have to treat the minimum number carefully, because -n is not
+ // what you'd think it is.
+ _init(boost::uintmax_t(-(n+1)));
+ _set_negative(true);
+ --(*this);
+ } else {
+ _init(boost::uintmax_t(-n));
+ _set_negative(true);
}
}
@@ -777,32 +831,10 @@
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) {
- if (n < (std::numeric_limits<T>::min)()
- || n > (std::numeric_limits<T>::max)())
- throw too_big("value out of range for requested conversion");
-
- T rval=0;
- size_t len=n._get_length();
- for (size_t x=0; x<len; ++x)
- rval=static_cast<T>((rval * detail::digit_overflowbit)
- + n._get_digit(len-x-1));
- if (n.sign() < 0) rval *= -1;
- return rval;
+ if (static_cast<T>(n & detail::digit_mask) == n)
+ _init(detail::digit_t(n));
+ else _init(boost::uintmax_t(n));
}
-} // namespace core
/*! \brief Efficiently converts from an xint::integer to a built-in %integer
type.
@@ -813,41 +845,24 @@
\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.
-
-\param[in] gen A pointer to the new generator to use.
-
-\warning The generator must be a heap-allocated pointer (one created with
-<code>new</code>), which the XInt library assumes ownership of. Don't pass in a
-stack-created item, don't try to delete the item that you passed in, and don't
-attempt to use it separately after passing it to this function, or the behavior
-is undefined.
+ if (n < (std::numeric_limits<T>::min)()
+ || n > (std::numeric_limits<T>::max)())
+ throw too_big("value out of range for requested conversion");
-\remarks
-See the \link random Random Number page\endlink for an example of how to use it.
-*/
-template <typename T>
-void set_random_generator(T *gen) {
- detail::random_generator<T> *obj=new detail::random_generator<T>(gen);
- detail::set_random_generator(obj);
+ T rval=0;
+ size_t len=n._get_length();
+ for (size_t x=0; x<len; ++x)
+ rval=static_cast<T>((rval * detail::digit_overflowbit)
+ + n._get_digit(len-x-1));
+ if (n.sign() < 0) rval *= -1;
+ return rval;
}
//! \name Stream input/output functions
//!@{
-namespace core {
template <typename charT, typename traits>
inline std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,
traits>& out, const integer& n)
@@ -873,9 +888,7 @@
}
return out;
}
-} // namespace core
-namespace core {
template <typename charT, typename traits>
inline std::basic_istream<charT,traits>& operator>>(std::basic_istream<charT,
traits>& in, integer& n)
@@ -935,9 +948,74 @@
return in;
}
-} // namespace core
//!@}
+} // namespace core
+
+namespace blockable {
+
+/*!
+ Constructs a new integer object with the value of the built-in signed
+ %integer passed to it.
+
+ \param[in] n A number of type \c T.
+ \tparam T The type of \c n.
+
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
+
+ \overload
+*/
+template <typename T> integer::integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_signed<T> >::type*)
+{
+ try {
+ *this=integer(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ _attach(0);
+ }
+}
+
+/*!
+ Constructs a new integer object with the value of the built-in unsigned
+ %integer passed to it.
+
+ \param[in] n A number of type \c T.
+ \tparam T The type of \c n.
+
+ You can ignore the \c enable_if parameters, they are there only to tell
+ the compiler what types it applies to.
+
+ \overload
+*/
+template <typename T> integer::integer(const T& n,
+ typename boost::enable_if<boost::is_integral<T> >::type*,
+ typename boost::enable_if<boost::is_unsigned<T> >::type*)
+{
+ try {
+ *this=integer(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ _attach(0);
+ }
+}
+
+/*! \copydoc core::to
+
+\note If exceptions are blocked, returns T(0) instead of throwing.
+*/
+template <typename T>
+T to(const integer& n) {
+ try {
+ return to<T>(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
//! \name Stream input/output functions
//!@{
template <typename charT, typename traits>
@@ -975,6 +1053,10 @@
}
//!@}
+} // namespace blockable
+
+namespace test = core;
+
} // namespace xint
} // namespace boost
Modified: sandbox/xint/boost/xint/xint_data_t.hpp
==============================================================================
--- sandbox/xint/boost/xint/xint_data_t.hpp (original)
+++ sandbox/xint/boost/xint/xint_data_t.hpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -63,6 +63,7 @@
public:
data_t(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0);
data_t(data_t *c);
+ data_t(boost::uintmax_t n, bool);
#if defined(XINT_SECURE)
~data_t();
Modified: sandbox/xint/doc/acknowledgements.html
==============================================================================
--- sandbox/xint/doc/acknowledgements.html (original)
+++ sandbox/xint/doc/acknowledgements.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,7 +26,7 @@
<h1><a class="anchor" id="acknowledgements">Acknowledgements </a></h1><p>Several people have helped me improve the XInt library. Particular thanks go to Paul Bristow, for...</p>
<ul>
-<li>Pointing out the need for a specialization of <code>std::numeric_limits</code> for <code>xint::integer</code>;</li>
+<li>Pointing out the need for a specialization of <code>std::numeric_limits</code> for the library-provided types;</li>
<li>Spending a great deal of time and effort to introduce me to the Boost.Test framework and Doxygen/QuickBook;</li>
<li>Providing test cases and documentation tweaks;</li>
<li>General advice and moral support.</li>
@@ -40,6 +40,7 @@
<li>Jeffrey Lee Hellrung, Jr., for advice on implementing move-aware objects, and for an invigorating discussion on the differing needs of an integer library versus a floating-point one, among other things.</li>
<li>Peter Dimov, for suggesting a separate <code>xint::overflow_error</code> exception class.</li>
<li>"Fred," a.k.a. "Gottlob Frege", for information on infinities.</li>
+<li>Joachim Faulhaber for a discussion of intervals and interval containers.</li>
</ul>
<p>And the other Boost development list members who joined the discussion:</p>
<ul>
@@ -54,8 +55,8 @@
</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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/acknowledgements_8dox.html
==============================================================================
--- sandbox/xint/doc/acknowledgements_8dox.html (original)
+++ sandbox/xint/doc/acknowledgements_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/annotated.html
==============================================================================
--- sandbox/xint/doc/annotated.html (original)
+++ sandbox/xint/doc/annotated.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -28,12 +28,13 @@
</div>
<div class="contents">
<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td class="indexvalue">The base class for the integer classes </td></tr>
<tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a></td><td class="indexvalue">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a> </td></tr>
<tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">boost::xint::cannot_represent</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td class="indexvalue">Holds the internal details of an <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="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td class="indexvalue">Holds the internal details of an xint::integer </td></tr>
<tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">boost::xint::divide_by_zero</a></td><td class="indexvalue">Exception class </td></tr>
- <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td class="indexvalue">The <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_1core_1_1integer.html">boost::xint::core::integer</a></td><td class="indexvalue">The core integer class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td class="indexvalue">The blockable integer class </td></tr>
<tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></td><td class="indexvalue">Exception class </td></tr>
<tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">boost::xint::invalid_digit</a></td><td class="indexvalue">Exception class </td></tr>
<tr><td class="indexkey"><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">boost::xint::invalid_modulus</a></td><td class="indexvalue">Exception class </td></tr>
@@ -47,8 +48,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/bit__manipulations_8cpp.html
==============================================================================
--- sandbox/xint/doc/bit__manipulations_8cpp.html (original)
+++ sandbox/xint/doc/bit__manipulations_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,6 @@
<h1>bit_manipulations.cpp File Reference</h1>
<p>Contains the bit-manipulation functions.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<code>#include "../boost/xint/xint_data_t.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -38,59 +36,48 @@
<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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core::shift_right</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td 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">boost::xint::getbit</a> (const integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an <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">boost::xint::setbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an <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">boost::xint::clearbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an <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">boost::xint::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an <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">boost::xint::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint::shift</a> (const integer &n, int byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">boost::xint::shift_left</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint::shift_right</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an <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="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the bit-manipulation functions. </p>
<p>Definition in file <a class="el" href="bit__manipulations_8cpp_source.html">bit_manipulations.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -40,249 +40,151 @@
<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
<a name="l00020"></a>00020
-<a name="l00021"></a><a class="code" href="namespaceboost.html">00021</a> <span class="keyword">namespace </span>boost {
-<a name="l00022"></a><a class="code" href="namespaceboost_1_1xint.html">00022</a> <span class="keyword">namespace </span>xint {
+<a name="l00021"></a><a class="code" href="namespaceboost_1_1xint.html">00021</a> <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
<a name="l00023"></a>00023
-<a name="l00024"></a>00024 <span class="keyword">using namespace </span>detail;
+<a name="l00024"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html">00024</a> <span class="keyword">using namespace </span>detail;
<a name="l00025"></a>00025
-<a name="l00026"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html">00026</a> <span class="keyword">namespace </span>core {
+<a name="l00026"></a>00026 <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="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="l00036"></a>00036 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00037"></a>00037 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00038"></a>00038 <span class="keywordflow">if</span> (index < n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()) {
+<a name="l00039"></a>00039 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00040"></a>00040 <span class="keywordflow">return</span> ((n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(index) & mask) != 0);
+<a name="l00041"></a>00041 } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043
+<a name="l00051"></a>00051 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00052"></a>00052 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00053"></a>00053 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00056"></a>00056 <span class="keywordflow">if</span> (index >= n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()) ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(index+1);
<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <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="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="l00058"></a>00058 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00059"></a>00059 ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] |= mask;
+<a name="l00060"></a>00060 ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> index=bit/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (index < n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()) {
+<a name="l00073"></a>00073 n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00074"></a>00074 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bit % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00075"></a>00075 n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index] &= ~mask;
+<a name="l00076"></a>00076 n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 }
+<a name="l00079"></a>00079
+<a name="l00089"></a>00089 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00093"></a>00093 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *pe=p+ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00094"></a>00094 <span class="keywordflow">while</span> (p!=pe && *p==0) ++p;
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keywordtype">size_t</span> index=(p - ndata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>);
+<a name="l00097"></a>00097 <span class="keywordtype">size_t</span> r=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> * index);
+<a name="l00098"></a>00098 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> digit=*p;
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keywordflow">while</span> ((digit & 0x01)==0) {
+<a name="l00101"></a>00101 digit>>=1;
+<a name="l00102"></a>00102 ++r;
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> r;
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00117"></a>00117 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>()==0) <span class="keywordflow">return</span> valueIfZero;
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(n)-1);
+<a name="l00120"></a>00120 }
<a name="l00121"></a>00121
-<a name="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 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="l00128"></a>00128 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
+<a name="l00129"></a>00129 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->mLength) std::swap(smaller, larger);
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
+<a name="l00133"></a>00133 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00134"></a>00134 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, *s2=larger->digits;
+<a name="l00137"></a>00137 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keywordflow">while</span> (s1 < s1e) *t++ = *s1++ & *s2++;
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> r;
+<a name="l00143"></a>00143 }
<a name="l00144"></a>00144
-<a name="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="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="l00151"></a>00151 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
+<a name="l00152"></a>00152 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00153"></a>00153 <span class="keywordflow">if</span> (smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->mLength) std::swap(smaller, larger);
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
+<a name="l00156"></a>00156 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00157"></a>00157 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->mLength);
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00160"></a>00160 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
+<a name="l00161"></a>00161 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ | *s2++;
+<a name="l00164"></a>00164 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00167"></a>00167 <span class="keywordflow">return</span> r;
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169
+<a name="l00177"></a>00177 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2) {
+<a name="l00178"></a>00178 <span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *smaller=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>(), *larger=n2.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00179"></a>00179 <span class="keywordflow">if</span> (smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> > larger->mLength) std::swap(smaller, larger);
<a name="l00180"></a>00180
-<a name="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="l00181"></a>00181 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> r;
+<a name="l00182"></a>00182 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00183"></a>00183 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(larger->mLength);
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s1=smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s1e=s1+smaller-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00186"></a>00186 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s2=larger->digits, *s2e=s2+larger->mLength;
+<a name="l00187"></a>00187 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="keywordflow">while</span> (s1<s1e) *t++ = *s1++ ^ *s2++;
+<a name="l00190"></a>00190 <span class="keywordflow">while</span> (s2<s2e) *t++ = *s2++;
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 rdata-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00193"></a>00193 <span class="keywordflow">return</span> r;
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195
+<a name="l00204"></a>00204 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits) {
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(n, byBits);
+<a name="l00206"></a>00206 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(n, -byBits);
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208
+<a name="l00216"></a>00216 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> nn(n);
+<a name="l00220"></a>00220 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00221"></a>00221 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(byBits);
+<a name="l00222"></a>00222 <span class="keywordflow">return</span> nn;
+<a name="l00223"></a>00223 }
+<a name="l00224"></a>00224
+<a name="l00232"></a>00232 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (byBits==0) <span class="keywordflow">return</span> n;
<a name="l00234"></a>00234
-<a name="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="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>
+<a name="l00235"></a>00235 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> nn(n);
+<a name="l00236"></a>00236 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00237"></a>00237 nn.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(byBits);
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> nn;
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 } <span class="comment">// namespace core</span>
+<a name="l00242"></a>00242 } <span class="comment">// namespace xint</span>
+<a name="l00243"></a>00243 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__bit__manipulations_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__bit__manipulations_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_bit_manipulations.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>blockable_bit_manipulations.cpp File Reference</h1>
+<p>Contains the bit-manipulation functions for blockable integers.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable::shift_right</a> (const integer &n, size_t byBits)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the bit-manipulation functions for blockable integers. </p>
+
+<p>Definition in file <a class="el" href="blockable__bit__manipulations_8cpp_source.html">blockable_bit_manipulations.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__bit__manipulations_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__bit__manipulations_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,151 @@
+<!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: blockable_bit_manipulations.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_bit_manipulations.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
+<a name="l00022"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html">00022</a> <span class="keyword">namespace </span>blockable {
+<a name="l00023"></a>00023
+<a name="l00028"></a>00028 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), bit);
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00033"></a>00033 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036
+<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00039"></a>00039 <span class="keywordflow">try</span> {
+<a name="l00040"></a>00040 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a> nn(n);
+<a name="l00041"></a>00041 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(nn, bit);
+<a name="l00042"></a>00042 n=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(nn);
+<a name="l00043"></a>00043 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00049"></a>00049 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit) {
+<a name="l00050"></a>00050 <span class="keywordflow">try</span> {
+<a name="l00051"></a>00051 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a> nn(n);
+<a name="l00052"></a>00052 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a>(nn, bit);
+<a name="l00053"></a>00053 n=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(nn);
+<a name="l00054"></a>00054 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00055"></a>00055 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00063"></a>00063 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00064"></a>00064 <span class="keywordflow">try</span> {
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), valueIfZero);
+<a name="l00066"></a>00066 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00068"></a>00068 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071
+<a name="l00076"></a>00076 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero) {
+<a name="l00077"></a>00077 <span class="keywordflow">try</span> {
+<a name="l00078"></a>00078 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), valueIfZero);
+<a name="l00079"></a>00079 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00080"></a>00080 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00081"></a>00081 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084
+<a name="l00086"></a>00086 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2) {
+<a name="l00087"></a>00087 <span class="keywordflow">try</span> {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n1), <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n2)));
+<a name="l00089"></a>00089 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093 }
+<a name="l00094"></a>00094
+<a name="l00096"></a>00096 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2) {
+<a name="l00097"></a>00097 <span class="keywordflow">try</span> {
+<a name="l00098"></a>00098 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n1), <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n2)));
+<a name="l00099"></a>00099 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00101"></a>00101 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00106"></a>00106 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2) {
+<a name="l00107"></a>00107 <span class="keywordflow">try</span> {
+<a name="l00108"></a>00108 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n1), <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n2)));
+<a name="l00109"></a>00109 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00111"></a>00111 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114
+<a name="l00116"></a>00116 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits) {
+<a name="l00117"></a>00117 <span class="keywordflow">if</span> (byBits > 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(n, byBits);
+<a name="l00118"></a>00118 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(n, -byBits);
+<a name="l00119"></a>00119 }
+<a name="l00120"></a>00120
+<a name="l00122"></a>00122 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00123"></a>00123 <span class="keywordflow">try</span> {
+<a name="l00124"></a>00124 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), byBits));
+<a name="l00125"></a>00125 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00127"></a>00127 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00132"></a>00132 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits) {
+<a name="l00133"></a>00133 <span class="keywordflow">try</span> {
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n), byBits));
+<a name="l00135"></a>00135 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00137"></a>00137 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 } <span class="comment">// namespace blockable</span>
+<a name="l00142"></a>00142 } <span class="comment">// namespace xint</span>
+<a name="l00143"></a>00143 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__compare_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__compare_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_compare.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>blockable_compare.cpp File Reference</h1>
+<p>Contains the the compare function and comparison operators for blockable integers.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the the compare function and comparison operators for blockable integers. </p>
+
+<p>Definition in file <a class="el" href="blockable__compare_8cpp_source.html">blockable_compare.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__compare_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__compare_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,97 @@
+<!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: blockable_compare.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_compare.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
+<a name="l00024"></a>00024
+<a name="l00029"></a>00029 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(<span class="keyword">const</span> integer &b1, <span class="keyword">const</span> integer &b2, <span class="keywordtype">bool</span> ignoresign) {
+<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
+<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(core::integer(b1), core::integer(b2));
+<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="keyword">namespace </span>{
+<a name="l00039"></a>00039 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00040"></a>00040 <span class="keywordtype">bool</span> cmp(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2, <span class="keyword">const</span> T& t) {
+<a name="l00041"></a>00041 <span class="keywordflow">try</span> {
+<a name="l00042"></a>00042 <span class="keywordflow">return</span> t(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(core::integer(num1), core::integer(num2)), 0);
+<a name="l00043"></a>00043 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00045"></a>00045 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048 } <span class="comment">// namespace</span>
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a>(<span class="keyword">const</span> integer &num1) {
+<a name="l00051"></a>00051 <span class="keywordflow">try</span> {
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a>(core::integer(num1));
+<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00055"></a>00055 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">operator==</a>(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2) {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> cmp(num1, num2, std::equal_to<int>()); }
+<a name="l00061"></a>00061 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">operator!=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00062"></a>00062 <span class="keywordflow">return</span> cmp(num1, num2, std::not_equal_to<int>()); }
+<a name="l00063"></a>00063 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">operator<</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> cmp(num1, num2, std::less<int>()); }
+<a name="l00065"></a>00065 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">operator></a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00066"></a>00066 <span class="keywordflow">return</span> cmp(num1, num2, std::greater<int>()); }
+<a name="l00067"></a>00067 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">operator<=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00068"></a>00068 <span class="keywordflow">return</span> cmp(num1, num2, std::less_equal<int>()); }
+<a name="l00069"></a>00069 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">operator>=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> cmp(num1, num2, std::greater_equal<int>()); }
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 } <span class="comment">// namespace blockable</span>
+<a name="l00073"></a>00073 } <span class="comment">// namespace xint</span>
+<a name="l00074"></a>00074 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__convert_8cpp.html (from r61199, /sandbox/xint/doc/roots_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/doc/blockable__convert_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: roots.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_convert.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,40 +26,41 @@
</div>
</div>
<div class="contents">
-<h1>roots.cpp File Reference</h1>
-<p>Contains the definitions for functions related to roots of a number.
+<h1>blockable_convert.cpp File Reference</h1>
+<p>Contains the conversion functions for blockable integers.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td 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>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> <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">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable::from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable::to_binary</a> (const integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for functions related to roots of a number. </p>
+<p>Contains the conversion functions for blockable integers. </p>
+<p>Note that the xint::blockable::to<T> function is not here, because it's a template function and must be defined in a header file. </p>
-<p>Definition in file <a class="el" href="roots_8cpp_source.html">roots.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__convert_8cpp_source.html">blockable_convert.cpp</a>.</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__convert_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__convert_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_convert.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_convert.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00021"></a>00021 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>xint {
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>blockable {
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="keyword">using namespace </span>detail;
+<a name="l00028"></a>00028
+<a name="l00034"></a>00034 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
+<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a>(core::integer(n), base, uppercase);
+<a name="l00037"></a>00037 } <span class="keywordflow">catch</span> (exception&) {
+<a name="l00038"></a>00038 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00039"></a>00039 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042
+<a name="l00044"></a>00044 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00045"></a>00045 <span class="keywordflow">try</span> {
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00047"></a>00047 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">core::from_string</a>(str, base));
+<a name="l00048"></a>00048 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00049"></a>00049 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00050"></a>00050 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053
+<a name="l00055"></a>00055 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">from_binary</a>(<span class="keyword">const</span> std::string& str) {
+<a name="l00056"></a>00056 <span class="keywordflow">try</span> {
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">core::from_binary</a>(str));
+<a name="l00058"></a>00058 } <span class="keywordflow">catch</span> (exception&) {
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00060"></a>00060 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00065"></a>00065 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00066"></a>00066 <span class="keywordflow">try</span> {
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a>(core::integer(n));
+<a name="l00068"></a>00068 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00070"></a>00070 <span class="keywordflow">else</span> <span class="keywordflow">return</span> std::string();
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 } <span class="comment">// namespace blockable</span>
+<a name="l00075"></a>00075 } <span class="comment">// namespace xint</span>
+<a name="l00076"></a>00076 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__gcd_8cpp.html (from r61199, /sandbox/xint/doc/roots_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/doc/blockable__gcd_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: roots.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_gcd.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,40 +26,43 @@
</div>
</div>
<div class="contents">
-<h1>roots.cpp File Reference</h1>
-<p>Contains the definitions for functions related to roots of a number.
+<h1>blockable_gcd.cpp File Reference</h1>
+<p>Greatest Common Denominator and Least Common Multple for blockable integers.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td 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>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> <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">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable::lcm</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable::invmod</a> (const integer &n, const integer &m)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for functions related to roots of a number. </p>
+<p>Greatest Common Denominator and Least Common Multple for blockable integers. </p>
+<p>Also holds the definition for invmod, since it uses the GCD algorithm. </p>
-<p>Definition in file <a class="el" href="roots_8cpp_source.html">roots.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__gcd_8cpp_source.html">blockable_gcd.cpp</a>.</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__gcd_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__gcd_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,81 @@
+<!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: blockable_gcd.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_gcd.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00021"></a>00021 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost {
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>xint {
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>blockable {
+<a name="l00026"></a>00026
+<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a>(core::integer(num1), core::integer(num2)));
+<a name="l00031"></a>00031 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00032"></a>00032 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00033"></a>00033 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036
+<a name="l00038"></a>00038 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00039"></a>00039 <span class="keywordflow">try</span> {
+<a name="l00040"></a>00040 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a>(core::integer(num1), core::integer(num2)));
+<a name="l00041"></a>00041 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00043"></a>00043 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046
+<a name="l00052"></a>00052 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00053"></a>00053 <span class="keywordflow">try</span> {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a>(core::integer(n), core::integer(m)));
+<a name="l00055"></a>00055 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00056"></a>00056 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00057"></a>00057 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 } <span class="comment">// namespace blockable</span>
+<a name="l00062"></a>00062 } <span class="comment">// namespace xint</span>
+<a name="l00063"></a>00063 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__integer_8cpp.html (from r61199, /sandbox/xint/doc/data__t_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/data__t_8cpp.html (original)
+++ sandbox/xint/doc/blockable__integer_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: data_t.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_integer.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,35 +26,32 @@
</div>
</div>
<div class="contents">
-<h1>data_t.cpp File Reference</h1>
-<p>Contains the definitions for xint::detail::data_t member functions.
+<h1>blockable_integer.cpp File Reference</h1>
+<p>Contains the definitions for the xint::blockable::integer member functions.
<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 <cassert></code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for xint::detail::data_t member functions. </p>
+<p>Contains the definitions for the xint::blockable::integer member functions. </p>
-<p>Definition in file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
</div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__integer_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__integer_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,250 @@
+<!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: blockable_integer.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_integer.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "../boost/xint/xint_data_t.hpp"</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>boost {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>xint {
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">const</span> std::string <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>(<span class="stringliteral">"#NaN#"</span>);
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027 <span class="keyword">namespace </span>blockable {
+<a name="l00028"></a>00028
+<a name="l00030"></a>00030 <span class="comment">// The blockable integer class</span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032 <span class="keyword">namespace </span>{
+<a name="l00033"></a>00033 std::auto_ptr<integer> cZero, cOne, cNaN;
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035
+<a name="l00037"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">00037</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>() {
+<a name="l00038"></a>00038 _init();
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040
+<a name="l00042"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acade75e4974489026f1eeb6945c9779a">00042</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) {
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!b.<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) _init(b);
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045
+<a name="l00056"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a0ff286ad0a69d6f885cf51905331b065">00056</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>& b) {
+<a name="l00057"></a>00057 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(b);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059
+<a name="l00061"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2c02cafe2e7f1262a8b45356b32a21ab">00061</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00062"></a>00062 <span class="keywordflow">try</span> {
+<a name="l00063"></a>00063 _init(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a>(str, base));
+<a name="l00064"></a>00064 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00065"></a>00065 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068
+<a name="l00073"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">00073</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">integer::odd</a>()<span class="keyword"> const </span>{
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00075"></a>00075 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
+<a name="l00076"></a>00076 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==1);
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080
+<a name="l00085"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">00085</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">integer::even</a>()<span class="keyword"> const </span>{
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
+<a name="l00088"></a>00088 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==0);
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00097"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">00097</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">integer::sign</a>()<span class="keyword"> const </span>{
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l00099"></a>00099 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>();
+<a name="l00100"></a>00100 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()==1 && <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0)==0) <span class="keywordflow">return</span> 0;
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative ? -1 : 1);
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00110"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">00110</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">integer::hex_digits</a>()<span class="keyword"> const </span>{
+<a name="l00111"></a>00111 <span class="keywordflow">try</span> {
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">core::integer</a>(*this).hex_digits();
+<a name="l00113"></a>00113 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00115"></a>00115 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118
+<a name="l00125"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">00125</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">integer::is_nan</a>()<span class="keyword"> const </span>{
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()==0);
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">00129</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& addend) {
+<a name="l00130"></a>00130 <span class="keywordflow">try</span> {
+<a name="l00131"></a>00131 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator+=(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(addend)));
+<a name="l00132"></a>00132 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00133"></a>00133 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00134"></a>00134 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138
+<a name="l00139"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">00139</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& subtrahend) {
+<a name="l00140"></a>00140 <span class="keywordflow">try</span> {
+<a name="l00141"></a>00141 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator-=(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(subtrahend)));
+<a name="l00142"></a>00142 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00143"></a>00143 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00144"></a>00144 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148
+<a name="l00149"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">00149</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &c) {
+<a name="l00150"></a>00150 <span class="keywordflow">try</span> {
+<a name="l00151"></a>00151 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
+<a name="l00152"></a>00152 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00153"></a>00153 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00154"></a>00154 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158
+<a name="l00159"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">00159</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00160"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">00160</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00161"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">00161</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00162"></a>00162
+<a name="l00163"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">00163</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00164"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">00164</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00165"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a50d2872735d7b1dfcba66d4940cdc658">00165</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00166"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a0e35cc2d6c37f4e14c4d21d998179121">00166</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00167"></a>00167
+<a name="l00168"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">00168</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">integer::operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00169"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">00169</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">integer::operator>></a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00170"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">00170</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00171"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">00171</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00172"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">00172</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00173"></a>00173
+<a name="l00174"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">00174</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>) {
+<a name="l00175"></a>00175 <span class="keywordflow">try</span> {
+<a name="l00176"></a>00176 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator<<=(shift));
+<a name="l00177"></a>00177 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00179"></a>00179 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00180"></a>00180 }
+<a name="l00181"></a>00181 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183
+<a name="l00184"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">00184</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>) {
+<a name="l00185"></a>00185 <span class="keywordflow">try</span> {
+<a name="l00186"></a>00186 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(*this).operator>>=(shift));
+<a name="l00187"></a>00187 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00188"></a>00188 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00189"></a>00189 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193
+<a name="l00194"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">00194</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">integer::zero</a>() {
+<a name="l00195"></a>00195 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">core::integer::zero</a>()));
+<a name="l00196"></a>00196 <span class="keywordflow">return</span> *cZero;
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198
+<a name="l00199"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">00199</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">integer::one</a>() {
+<a name="l00200"></a>00200 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">core::integer::one</a>()));
+<a name="l00201"></a>00201 <span class="keywordflow">return</span> *cOne;
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203
+<a name="l00204"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">00204</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>() {
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (cNaN.get()==0) {
+<a name="l00206"></a>00206 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> *n=<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>();
+<a name="l00207"></a>00207 n-><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
+<a name="l00208"></a>00208 cNaN.reset(n);
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210 <span class="keywordflow">return</span> *cNaN;
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <span class="keywordtype">void</span> integer::_init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init) {
+<a name="l00214"></a>00214 <span class="keywordflow">try</span> {
+<a name="l00215"></a>00215 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(init));
+<a name="l00216"></a>00216 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00218"></a>00218 }
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 <span class="keywordtype">void</span> integer::_init(<span class="keyword">const</span> integer &c) {
+<a name="l00222"></a>00222 <span class="keywordflow">try</span> {
+<a name="l00223"></a>00223 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
+<a name="l00224"></a>00224 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00225"></a>00225 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00226"></a>00226 }
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="keywordtype">void</span> integer::_init(boost::uintmax_t n) {
+<a name="l00230"></a>00230 <span class="keywordflow">try</span> {
+<a name="l00231"></a>00231 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> detail::data_t(n));
+<a name="l00232"></a>00232 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236
+<a name="l00237"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">00237</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">integer::_make_unique</a>() {
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>()) {
+<a name="l00239"></a>00239 <span class="keywordflow">try</span> {
+<a name="l00240"></a>00240 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()));
+<a name="l00241"></a>00241 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00242"></a>00242 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00243"></a>00243 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0); <span class="comment">// Turns it into a Not-a-Number,</span>
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245 }
+<a name="l00246"></a>00246 }
+<a name="l00247"></a>00247
+<a name="l00248"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">00248</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">integer::_set_negative</a>(<span class="keywordtype">bool</span> negative) {
+<a name="l00249"></a>00249 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative != negative) {
+<a name="l00250"></a>00250 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a>();
+<a name="l00251"></a>00251 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *p=<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00252"></a>00252 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=negative;
+<a name="l00253"></a>00253 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00254"></a>00254 }
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 } <span class="comment">// namespace blockable</span>
+<a name="l00258"></a>00258 } <span class="comment">// namespace xint</span>
+<a name="l00259"></a>00259 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__misc_8cpp.html (from r61199, /sandbox/xint/doc/data__t_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/data__t_8cpp.html (original)
+++ sandbox/xint/doc/blockable__misc_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: data_t.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_misc.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,35 +26,37 @@
</div>
</div>
<div class="contents">
-<h1>data_t.cpp File Reference</h1>
-<p>Contains the definitions for xint::detail::data_t member functions.
+<h1>blockable_misc.cpp File Reference</h1>
+<p>Functions for blockable integers that don't fall into any other category.
<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 <cassert></code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable::log2</a> (const integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for xint::detail::data_t member functions. </p>
+<p>Functions for blockable integers that don't fall into any other category. </p>
-<p>Definition in file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__misc_8cpp_source.html">blockable_misc.cpp</a>.</p>
</div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__misc_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__misc_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_misc.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_misc.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
+<a name="l00024"></a>00024
+<a name="l00029"></a>00029 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
+<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(core::integer(n));
+<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 } <span class="comment">// namespace blockable</span>
+<a name="l00039"></a>00039 } <span class="comment">// namespace xint</span>
+<a name="l00040"></a>00040 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__modular_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__modular_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_modular.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>blockable_modular.cpp File Reference</h1>
+<p>Contains the definitions for the basic modular math functions for blockable integers.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the definitions for the basic modular math functions for blockable integers. </p>
+<p>The xint::invmod function, which logically would be here, is actually in <a class="el" href="gcd_8cpp.html" title="Greatest Common Denominator and Least Common Multple.">gcd.cpp</a> to share the gcd_core function. </p>
+
+<p>Definition in file <a class="el" href="blockable__modular_8cpp_source.html">blockable_modular.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__modular_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__modular_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,94 @@
+<!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: blockable_modular.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_modular.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00022"></a>00022 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>boost {
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>xint {
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>blockable {
+<a name="l00027"></a>00027
+<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
+<a name="l00031"></a>00031 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(core::integer(n), core::integer(m)));
+<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00034"></a>00034 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00039"></a>00039 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">mulmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& m) {
+<a name="l00040"></a>00040 <span class="keywordflow">try</span> {
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(core::integer(n) * core::integer(by),
+<a name="l00042"></a>00042 core::integer(m)));
+<a name="l00043"></a>00043 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048
+<a name="l00050"></a>00050 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00051"></a>00051 <span class="keywordflow">try</span> {
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(core::integer(n)), core::integer(m)));
+<a name="l00053"></a>00053 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00055"></a>00055 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00056"></a>00056 }
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058
+<a name="l00060"></a>00060 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m, <span class="keywordtype">bool</span>
+<a name="l00061"></a>00061 noMontgomery)
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063 <span class="keywordflow">try</span> {
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a>(core::integer(n), core::integer(e),
+<a name="l00065"></a>00065 core::integer(m), noMontgomery));
+<a name="l00066"></a>00066 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00068"></a>00068 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 } <span class="comment">// namespace blockable</span>
+<a name="l00073"></a>00073 } <span class="comment">// namespace xint</span>
+<a name="l00074"></a>00074 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__operators_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__operators_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_operators.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>blockable_operators.cpp File Reference</h1>
+<p>Contains the definitions for the basic math operators for blockable integers.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable::operator+</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable::operator-</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a43c166834c838c500713c571ff49ae7c">boost::xint::blockable::operator+</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable::operator-</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable::operator*</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable::operator/</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable::operator%</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable::operator&</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable::operator|</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the definitions for the basic math operators for blockable integers. </p>
+
+<p>Definition in file <a class="el" href="blockable__operators_8cpp_source.html">blockable_operators.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__operators_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__operators_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,65 @@
+<!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: blockable_operators.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_operators.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
+<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(a); }
+<a name="l00027"></a>00027 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(num1, num2); }
+<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(num1, num2); }
+<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(num1, num2); }
+<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(num1, num2); }
+<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(num1, num2); }
+<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(n1, n2); }
+<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a>(n1, n2); }
+<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(n1, n2); }
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036 } <span class="comment">// namespace blockable</span>
+<a name="l00037"></a>00037 } <span class="comment">// namespace xint</span>
+<a name="l00038"></a>00038 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__powers_8cpp.html (from r61199, /sandbox/xint/doc/roots_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/doc/blockable__powers_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: roots.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_powers.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,40 +26,40 @@
</div>
</div>
<div class="contents">
-<h1>roots.cpp File Reference</h1>
-<p>Contains the definitions for functions related to roots of a number.
+<h1>blockable_powers.cpp File Reference</h1>
+<p>Contains the definitions for blockable integer functions related to powers of a number.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td 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>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable::pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable::sqr</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable::factorial</a> (size_t n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for functions related to roots of a number. </p>
+<p>Contains the definitions for blockable integer functions related to powers of a number. </p>
-<p>Definition in file <a class="el" href="roots_8cpp_source.html">roots.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__powers_8cpp_source.html">blockable_powers.cpp</a>.</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__powers_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__powers_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_powers.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_powers.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
+<a name="l00024"></a>00024
+<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">pow2</a>(<span class="keywordtype">size_t</span> e) {
+<a name="l00027"></a>00027 integer r;
+<a name="l00028"></a>00028 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(r, e);
+<a name="l00029"></a>00029 <span class="keywordflow">return</span> r;
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031
+<a name="l00033"></a>00033 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00034"></a>00034 <span class="keywordflow">try</span> {
+<a name="l00035"></a>00035 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(core::integer(n)));
+<a name="l00036"></a>00036 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00037"></a>00037 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00038"></a>00038 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041
+<a name="l00043"></a>00043 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
+<a name="l00044"></a>00044 <span class="keywordflow">try</span> {
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a>(core::integer(n), core::integer(e)));
+<a name="l00046"></a>00046 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00047"></a>00047 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00048"></a>00048 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00053"></a>00053 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">factorial</a>(<span class="keywordtype">size_t</span> n) {
+<a name="l00054"></a>00054 <span class="keywordflow">try</span> {
+<a name="l00055"></a>00055 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a" title="Calculate the value of n! ">core::factorial</a>(n));
+<a name="l00056"></a>00056 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00058"></a>00058 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 } <span class="comment">// namespace blockable</span>
+<a name="l00063"></a>00063 } <span class="comment">// namespace xint</span>
+<a name="l00064"></a>00064 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__primes_8cpp.html (from r61199, /sandbox/xint/doc/integer_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/integer_8cpp.html (original)
+++ sandbox/xint/doc/blockable__primes_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: integer.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_primes.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,34 +26,38 @@
</div>
</div>
<div class="contents">
-<h1>integer.cpp File Reference</h1>
-<p>Contains the definitions for the xint::integer member functions.
+<h1>blockable_primes.cpp File Reference</h1>
+<p>Contains the definitions for functions related to prime numbers for blockable integers.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<code>#include "../boost/xint/xint_data_t.hpp"</code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the xint::integer member functions. </p>
+<p>Contains the definitions for functions related to prime numbers for blockable integers. </p>
-<p>Definition in file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__primes_8cpp_source.html">blockable_primes.cpp</a>.</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__primes_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__primes_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_primes.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_primes.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
+<a name="l00024"></a>00024
+<a name="l00029"></a>00029 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00030"></a>00030 <span class="keywordflow">try</span> {
+<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a>(core::integer(n), callback);
+<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00034"></a>00034 <span class="keywordflow">else</span> <span class="keywordflow">return</span> -1;
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00039"></a>00039 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00040"></a>00040 <span class="keywordflow">try</span> {
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e" title="Generate a randomly-generated prime number of a particular bit-size.">core::random_prime</a>(size_in_bits, callback));
+<a name="l00042"></a>00042 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00044"></a>00044 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 } <span class="comment">// namespace blockable</span>
+<a name="l00049"></a>00049 } <span class="comment">// namespace xint</span>
+<a name="l00050"></a>00050 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__primitives_8cpp.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__primitives_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_primitives.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>blockable_primitives.cpp File Reference</h1>
+<p>Contains the definitions for math primitives for blockable integers.
+More...</p>
+
+<p>Go to the source code of this file.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
+<br/></td></tr>
+</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable::abs</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable::negate</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the definitions for math primitives for blockable integers. </p>
+
+<p>Definition in file <a class="el" href="blockable__primitives_8cpp_source.html">blockable_primitives.cpp</a>.</p>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/blockable__primitives_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__primitives_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,112 @@
+<!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: blockable_primitives.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_primitives.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00018"></a>00018 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="keyword">namespace </span>boost {
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>blockable {
+<a name="l00023"></a>00023
+<a name="l00025"></a>00025 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00026"></a>00026 <span class="keywordflow">try</span> {
+<a name="l00027"></a>00027 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a>(core::integer(n)));
+<a name="l00028"></a>00028 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00029"></a>00029 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033
+<a name="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00036"></a>00036 <span class="keywordflow">try</span> {
+<a name="l00037"></a>00037 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(core::integer(n)));
+<a name="l00038"></a>00038 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00039"></a>00039 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00040"></a>00040 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043
+<a name="l00045"></a>00045 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00046"></a>00046 <span class="keywordflow">try</span> {
+<a name="l00047"></a>00047 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(core::integer(n1), core::integer(n2)));
+<a name="l00048"></a>00048 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00049"></a>00049 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00050"></a>00050 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053
+<a name="l00055"></a>00055 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00056"></a>00056 <span class="keywordflow">try</span> {
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(core::integer(n1), core::integer(n2)));
+<a name="l00058"></a>00058 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00065"></a>00065 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
+<a name="l00066"></a>00066 <span class="keywordflow">try</span> {
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(core::integer(n), core::integer(by)));
+<a name="l00068"></a>00068 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00075"></a>00075 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(dividend, divisor).first;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078
+<a name="l00084"></a>00084 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span> integer& d2) {
+<a name="l00085"></a>00085 <span class="keywordflow">try</span> {
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(core::integer(d1), core::integer(d2));
+<a name="l00087"></a>00087 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00088"></a>00088 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00089"></a>00089 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>(), <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>());
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 } <span class="comment">// namespace blockable</span>
+<a name="l00094"></a>00094 } <span class="comment">// namespace xint</span>
+<a name="l00095"></a>00095 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__random_8cpp.html (from r61199, /sandbox/xint/doc/integer_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/integer_8cpp.html (original)
+++ sandbox/xint/doc/blockable__random_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: integer.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_random.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,34 +26,37 @@
</div>
</div>
<div class="contents">
-<h1>integer.cpp File Reference</h1>
-<p>Contains the definitions for the xint::integer member functions.
+<h1>blockable_random.cpp File Reference</h1>
+<p>Contains the definitions for the random number functions for blockable integers.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<code>#include "../boost/xint/xint_data_t.hpp"</code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the xint::integer member functions. </p>
+<p>Contains the definitions for the random number functions for blockable integers. </p>
-<p>Definition in file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__random_8cpp_source.html">blockable_random.cpp</a>.</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/blockable__random_8cpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/blockable__random_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: blockable_random.cpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>blockable_random.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00002"></a>00002 <span class="comment">/*</span>
+<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
+<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
+<a name="l00005"></a>00005 <span class="comment"> Copyright 2010 by Chad Nelson</span>
+<a name="l00006"></a>00006 <span class="comment"></span>
+<a name="l00007"></a>00007 <span class="comment"> Distributed under the Boost Software License, Version 1.0.</span>
+<a name="l00008"></a>00008 <span class="comment"> See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00009"></a>00009 <span class="comment"> http://www.boost.org/LICENSE_1_0.txt>
+<a name="l00010"></a>00010 <span class="comment"></span>
+<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
+<a name="l00012"></a>00012 <span class="comment">*/</span>
+<a name="l00013"></a>00013
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
+<a name="l00024"></a>00024
+<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
+<a name="l00027"></a>00027 can_be_negative)
+<a name="l00028"></a>00028 {
+<a name="l00029"></a>00029 <span class="keywordflow">try</span> {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">core::random_by_size</a>(bits, high_bit_on, low_bit_on,
+<a name="l00031"></a>00031 can_be_negative));
+<a name="l00032"></a>00032 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00034"></a>00034 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 }
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 } <span class="comment">// namespace blockable</span>
+<a name="l00039"></a>00039 } <span class="comment">// namespace xint</span>
+<a name="l00040"></a>00040 } <span class="comment">// namespace boost</span>
+</pre></div></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Copied: sandbox/xint/doc/blockable__roots_8cpp.html (from r61199, /sandbox/xint/doc/integer_8cpp.html)
==============================================================================
--- /sandbox/xint/doc/integer_8cpp.html (original)
+++ sandbox/xint/doc/blockable__roots_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: integer.cpp File Reference</title>
+<title>The Extended Integer (XInt) Library: blockable_roots.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -26,34 +26,37 @@
</div>
</div>
<div class="contents">
-<h1>integer.cpp File Reference</h1>
-<p>Contains the definitions for the xint::integer member functions.
+<h1>blockable_roots.cpp File Reference</h1>
+<p>Contains the definitions for blockable integer functions related to roots of a number.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<code>#include "../boost/xint/xint_data_t.hpp"</code><br/>
-<p>Go to the source code of this file.</p>
+<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable::sqrt</a> (const integer &n)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Contains the definitions for the xint::integer member functions. </p>
+<p>Contains the definitions for blockable integer functions related to roots of a number. </p>
-<p>Definition in file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+<p>Definition in file <a class="el" href="blockable__roots_8cpp_source.html">blockable_roots.cpp</a>.</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/blockable__roots_8cpp_source.html (from r61199, /sandbox/xint/doc/xint__test_8hpp_source.html)
==============================================================================
--- /sandbox/xint/doc/xint__test_8hpp_source.html (original)
+++ sandbox/xint/doc/blockable__roots_8cpp_source.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: xint_test.hpp Source File</title>
+<title>The Extended Integer (XInt) Library: blockable_roots.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -24,7 +24,7 @@
<li>File Members</li>
</ul>
</div>
-<h1>xint_test.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<h1>blockable_roots.cpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> The Extended Integer (XInt) Library</span>
<a name="l00004"></a>00004 <span class="comment"> A fast, portable C++ library for multi-precision integer math</span>
@@ -37,28 +37,27 @@
<a name="l00011"></a>00011 <span class="comment"> See http://www.boost.org/libs/xint for library home page.</span>
<a name="l00012"></a>00012 <span class="comment">*/</span>
<a name="l00013"></a>00013
-<a name="l00018"></a>00018 <span class="preprocessor">#ifndef BOOST_INCLUDED_XINT_TEST_H</span>
-<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_INCLUDED_XINT_TEST_H</span>
-<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "../boost/xint/xint.hpp"</span>
+<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">namespace </span>boost {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>xint {
-<a name="l00023"></a>00023
-<a name="l00026"></a>00026 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a9d062367dfe2a79e4471c97d1ee101b2">testBitManipulations</a>();
-<a name="l00027"></a>00027 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a8b1647a9b23f45407df6d402852d06ae">testAddSubtract</a>();
-<a name="l00028"></a>00028 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a87d760db18932efaafb906c0ebbdb50f">testMultiply</a>();
-<a name="l00029"></a>00029 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aabf845d8d592d3576d7223fc29362b3a">testDivideMod</a>();
-<a name="l00030"></a>00030 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#aca8ead732f9dac3f23f53095eacd762e">testConvert</a>();
-<a name="l00031"></a>00031 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ace6d9f008e78329286fc9003896667cd">testStreams</a>();
-<a name="l00032"></a>00032 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a6073c3037b644655bc752120b144e804">testMontyMultiply</a>();
-<a name="l00033"></a>00033 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a099082cd8bbd0e994870ad89859e18c1">testMontyPowerMod</a>();
-<a name="l00035"></a>00035
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>blockable {
+<a name="l00024"></a>00024
+<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00027"></a>00027 <span class="keywordflow">try</span> {
+<a name="l00028"></a>00028 <span class="keywordflow">return</span> integer(<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(core::integer(n)));
+<a name="l00029"></a>00029 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00030"></a>00030 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00031"></a>00031 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033 }
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 } <span class="comment">// namespace blockable</span>
<a name="l00036"></a>00036 } <span class="comment">// namespace xint</span>
<a name="l00037"></a>00037 } <span class="comment">// namespace boost</span>
-<a name="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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer-members.html 2010-04-11 10:29:32 EDT (Sun, 11 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: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::blockable::integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(detail::data_t *new_data)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">_set_negative</a>(bool negative)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">even</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">hex_digits</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#acade75e4974489026f1eeb6945c9779a">integer</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a0ff286ad0a69d6f885cf51905331b065">integer</a>(const core::integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2c02cafe2e7f1262a8b45356b32a21ab">integer</a>(const std::string &str, size_t base=10)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td><code> [explicit]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a466b727de74ca896778f7bde6ae3fbf1">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_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">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_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">is_nan</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">nan</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">odd</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">operator%=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">operator&=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">operator*=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">operator++</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a50d2872735d7b1dfcba66d4940cdc658">operator++</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">operator+=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">operator--</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a0e35cc2d6c37f4e14c4d21d998179121">operator--</a>(int)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">operator-=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">operator/=</a>(const integer &b)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">operator<<</a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">operator<<=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">operator=</a>(const integer &c)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">operator>></a>(size_t shift) const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">operator>>=</a>(size_t shift)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">operator^=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">operator|=</a>(const integer &n)</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">sign</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">zero</a>()</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+</table></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,899 @@
+<!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::blockable::integer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1blockable.html">blockable</a>::<a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::blockable::integer Class Reference</h1><!-- doxytag: class="boost::xint::blockable::integer" --><!-- doxytag: inherits="boost::xint::core::base_integer" -->
+<p>The blockable integer class.
+More...</p>
+<div class="dynheader">
+Inheritance diagram for boost::xint::blockable::integer:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classboost_1_1xint_1_1blockable_1_1integer.png" usemap="#boost::xint::blockable::integer_map" alt=""/>
+ <map id="boost::xint::blockable::integer_map" name="boost::xint::blockable::integer_map">
+<area href="classboost_1_1xint_1_1core_1_1base__integer.html" alt="boost::xint::core::base_integer" shape="rect" coords="0,0,178,24"/>
+</map>
+ </div>
+</div>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Constructors & Destructors</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpab1e74c734dea693114ec1f1cb9434ad"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">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_1blockable_1_1integer.html#acade75e4974489026f1eeb6945c9779a">integer</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_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_1blockable_1_1integer.html#a0ff286ad0a69d6f885cf51905331b065">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 integer 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="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2c02cafe2e7f1262a8b45356b32a21ab">integer</a> (const std::string &str, size_t base=10)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a466b727de74ca896778f7bde6ae3fbf1">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_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">integer</a> (const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical and Bitwise Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp8eb1e0f0af70edd858d54ba68b80ce7e"></a>These operate exactly like their counterparts for the built-in integer types.</p>
+<p>Note that there is no <code>operator~</code>. Since the integer type doesn't have a fixed maximum size, there is no logical way to implement it. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">operator*=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">operator/=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">operator%=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">operator++</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">operator--</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a50d2872735d7b1dfcba66d4940cdc658">operator++</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a0e35cc2d6c37f4e14c4d21d998179121">operator--</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">operator&=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">operator|=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">operator^=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">operator<<</a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">operator>></a> (size_t shift) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">operator<<=</a> (size_t shift)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">operator>>=</a> (size_t shift)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf5be5219a55995e13d6b8d7bf99ed653"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">odd</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">even</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">sign</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">is_nan</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests <code>*this</code> for Not-a-Number. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">hex_digits</a> () const </td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a>These functions allow access to the internals of the integer. They are intended for internal use only. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">_set_negative</a> (bool negative)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a> ()</td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbc92fcddffc2f3092779f92fe2501e4a"></a> These return preconstructed integers with the values named by the functions. They are used internally, so that the most common values don't have to be constructed each time they're needed. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">zero</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">nan</a> ()</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The blockable integer class. </p>
+<p>Functions using this class can be exception-blocked. See <a class="el" href="exceptions.html">this page</a> for details.</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#l00387">387</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a9f1ddc3bb2f495ebad9dc666c51ed046"></a><!-- doxytag: member="boost::xint::blockable::integer::integer" ref="a9f1ddc3bb2f495ebad9dc666c51ed046" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::blockable::integer::integer </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Creates a new integer with an initial value of zero. </p>
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00037">37</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acade75e4974489026f1eeb6945c9779a"></a><!-- doxytag: member="boost::xint::blockable::integer::integer" ref="acade75e4974489026f1eeb6945c9779a" args="(const integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::blockable::integer::integer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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 integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>An existing integer. If passed a Not-a-Number, it will create another Not-a-Number.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00042">42</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0ff286ad0a69d6f885cf51905331b065"></a><!-- doxytag: member="boost::xint::blockable::integer::integer" ref="a0ff286ad0a69d6f885cf51905331b065" args="(const core::integer &b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::blockable::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 integer 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="blockable__integer_8cpp_source.html#l00056">56</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2c02cafe2e7f1262a8b45356b32a21ab"></a><!-- doxytag: member="boost::xint::blockable::integer::integer" ref="a2c02cafe2e7f1262a8b45356b32a21ab" args="(const std::string &str, size_t base=10)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::blockable::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 integer from a string representation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>A string representation of a number. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base of the number, or <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_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 integer. See the description of the xint::from_string function for details on its behavior.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>This is the most common way to initialize values that are too large to fit into a native integral type.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00061">61</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a466b727de74ca896778f7bde6ae3fbf1"></a><!-- doxytag: member="boost::xint::blockable::integer::integer" ref="a466b727de74ca896778f7bde6ae3fbf1" 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::blockable::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 integer 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#l00969">969</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a97fd03d9176e7f308518248e738987c7"></a><!-- doxytag: member="boost::xint::blockable::integer::integer" ref="a97fd03d9176e7f308518248e738987c7" 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::blockable::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 integer 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#l00993">993</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="a93aebe2dfcc921ae4959811399b1643e"></a><!-- doxytag: member="boost::xint::blockable::integer::_make_unique" ref="a93aebe2dfcc921ae4959811399b1643e" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00237">237</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7ebbf3b74b5c3307f550efa29180b7f6"></a><!-- doxytag: member="boost::xint::blockable::integer::_set_negative" ref="a7ebbf3b74b5c3307f550efa29180b7f6" args="(bool negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::blockable::integer::_set_negative </td>
+ <td>(</td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>negative</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00248">248</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa4a34e862279bdcabcb10aa3f7015751"></a><!-- doxytag: member="boost::xint::blockable::integer::even" ref="aa4a34e862279bdcabcb10aa3f7015751" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::integer::even </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests the lowest bit of <code>*this</code> to determine evenness. <dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00085">85</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab59ab2bab8ee2620f82328e43d8f8493"></a><!-- doxytag: member="boost::xint::blockable::integer::hex_digits" ref="ab59ab2bab8ee2620f82328e43d8f8493" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::blockable::integer::hex_digits </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tells you roughly how large an integer is. <dl class="return"><dt><b>Returns:</b></dt><dd>The number of hexadecimal digits that would be required to encode <code>this</code>. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00110">110</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa03f255fa20c9340c110a56a9b4e5123"></a><!-- doxytag: member="boost::xint::blockable::integer::is_nan" ref="aa03f255fa20c9340c110a56a9b4e5123" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00125">125</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae52c1f42c887d0fffa40e38c97caedf1"></a><!-- doxytag: member="boost::xint::blockable::integer::nan" ref="ae52c1f42c887d0fffa40e38c97caedf1" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00204">204</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeeb0effdaf500fabdabde386c6d71ecf"></a><!-- doxytag: member="boost::xint::blockable::integer::odd" ref="aeeb0effdaf500fabdabde386c6d71ecf" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::integer::odd </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests the lowest bit of <code>*this</code> to determine oddness. <dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00073">73</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad1c34452538608bee270c1971f8a0bd5"></a><!-- doxytag: member="boost::xint::blockable::integer::one" ref="ad1c34452538608bee270c1971f8a0bd5" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00199">199</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3c95f3fe54f21728cce0363283e63582"></a><!-- doxytag: member="boost::xint::blockable::integer::operator%=" ref="a3c95f3fe54f21728cce0363283e63582" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator%= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00161">161</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acc4f122a18cb417de1e04dbc011cd2ab"></a><!-- doxytag: member="boost::xint::blockable::integer::operator&=" ref="acc4f122a18cb417de1e04dbc011cd2ab" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator&= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00170">170</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aedc9d1a4591b66b96f2074a944990d8d"></a><!-- doxytag: member="boost::xint::blockable::integer::operator*=" ref="aedc9d1a4591b66b96f2074a944990d8d" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator*= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00159">159</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a50d2872735d7b1dfcba66d4940cdc658"></a><!-- doxytag: member="boost::xint::blockable::integer::operator++" ref="a50d2872735d7b1dfcba66d4940cdc658" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00165">165</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaf8089c12fbf456ba44414031975904e"></a><!-- doxytag: member="boost::xint::blockable::integer::operator++" ref="aaf8089c12fbf456ba44414031975904e" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00163">163</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af6ee01d09f0dcb51fa6c45437e18de7e"></a><!-- doxytag: member="boost::xint::blockable::integer::operator+=" ref="af6ee01d09f0dcb51fa6c45437e18de7e" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator+= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00129">129</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0e35cc2d6c37f4e14c4d21d998179121"></a><!-- doxytag: member="boost::xint::blockable::integer::operator--" ref="a0e35cc2d6c37f4e14c4d21d998179121" args="(int)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00166">166</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aac66433b51dba8fa64e555fbe753195c"></a><!-- doxytag: member="boost::xint::blockable::integer::operator--" ref="aac66433b51dba8fa64e555fbe753195c" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00164">164</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9e89bbb863f344227e72585634f4c695"></a><!-- doxytag: member="boost::xint::blockable::integer::operator-=" ref="a9e89bbb863f344227e72585634f4c695" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator-= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00139">139</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac25f98f5fbf12160ea9bfd6acb867f16"></a><!-- doxytag: member="boost::xint::blockable::integer::operator/=" ref="ac25f98f5fbf12160ea9bfd6acb867f16" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator/= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00160">160</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae21b3b4e8189fd051efa649f00a3dce3"></a><!-- doxytag: member="boost::xint::blockable::integer::operator<<" ref="ae21b3b4e8189fd051efa649f00a3dce3" 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_1blockable_1_1integer.html">integer</a> boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afd3d92f33f89c51575062f4d87238380"></a><!-- doxytag: member="boost::xint::blockable::integer::operator<<=" ref="afd3d92f33f89c51575062f4d87238380" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00174">174</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a90efe3e62f20a587d2304d7df6e91c63"></a><!-- doxytag: member="boost::xint::blockable::integer::operator=" ref="a90efe3e62f20a587d2304d7df6e91c63" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00149">149</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a479d19cff13ff3d592f9e543f14c1254"></a><!-- doxytag: member="boost::xint::blockable::integer::operator>>" ref="a479d19cff13ff3d592f9e543f14c1254" 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_1blockable_1_1integer.html">integer</a> boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00169">169</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a31216f4689f95bf82677faa3b43ad458"></a><!-- doxytag: member="boost::xint::blockable::integer::operator>>=" ref="a31216f4689f95bf82677faa3b43ad458" 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_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00184">184</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2e63df76366b1ad1bd0246eebe24e3ef"></a><!-- doxytag: member="boost::xint::blockable::integer::operator^=" ref="a2e63df76366b1ad1bd0246eebe24e3ef" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator^= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00172">172</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af8a5624f5fe99930cf27b13628190717"></a><!-- doxytag: member="boost::xint::blockable::integer::operator|=" ref="af8a5624f5fe99930cf27b13628190717" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::integer::operator|= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_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="blockable__integer_8cpp_source.html#l00171">171</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="addba2da8dc24e5e137dc759b5ec3c211"></a><!-- doxytag: member="boost::xint::blockable::integer::sign" ref="addba2da8dc24e5e137dc759b5ec3c211" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::blockable::integer::sign </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests the sign of <code>*this</code>. <dl class="return"><dt><b>Returns:</b></dt><dd>-1 if <code>*this</code> is negative, 0 if it's zero, or 1 if it's greater than zero. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="blockable__integer_8cpp_source.html#l00097">97</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6f7309f1c9710a8167796c6954e690fd"></a><!-- doxytag: member="boost::xint::blockable::integer::zero" ref="a6f7309f1c9710a8167796c6954e690fd" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::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="blockable__integer_8cpp_source.html#l00194">194</a> of file <a class="el" href="blockable__integer_8cpp_source.html">blockable_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="blockable__integer_8cpp_source.html">blockable_integer.cpp</a></li>
+</ul>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1blockable_1_1integer.png
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1cannot__represent.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -44,7 +42,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00695">695</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">
@@ -62,7 +60,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00697">697</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -70,8 +68,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer-members.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>The Extended Integer (XInt) Library: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::core::base_integer Member List</h1>This is the complete list of members for <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(detail::data_t *new_data)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+</table></div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,264 @@
+<!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::base_integer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Namespaces</li>
+ <li class="current">Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Class List</li>
+ <li>Class Hierarchy</li>
+ <li>Class Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1core.html">core</a>::<a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::core::base_integer Class Reference</h1><!-- doxytag: class="boost::xint::core::base_integer" -->
+<p>The base class for the integer classes.
+More...</p>
+<div class="dynheader">
+Inheritance diagram for boost::xint::core::base_integer:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classboost_1_1xint_1_1core_1_1base__integer.png" usemap="#boost::xint::core::base_integer_map" alt=""/>
+ <map id="boost::xint::core::base_integer_map" name="boost::xint::core::base_integer_map">
+<area href="classboost_1_1xint_1_1blockable_1_1integer.html" alt="boost::xint::blockable::integer" shape="rect" coords="0,56,178,80"/>
+<area href="classboost_1_1xint_1_1core_1_1integer.html" alt="boost::xint::core::integer" shape="rect" coords="188,56,366,80"/>
+</map>
+ </div>
+</div>
+
+<p>List of all members.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a> ()</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a> (size_t index) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a> (size_t index, bool) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a> () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a> () const </td></tr>
+<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> *new_data)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> &copy)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The base class for the integer classes. </p>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00139">139</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="a41cf20da11883ce0547e2391b9a51a80"></a><!-- doxytag: member="boost::xint::core::base_integer::base_integer" ref="a41cf20da11883ce0547e2391b9a51a80" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::base_integer::base_integer </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#l00141">141</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a25b1de1f91bd026add3b07043b0eefcd"></a><!-- doxytag: member="boost::xint::core::base_integer::~base_integer" ref="a25b1de1f91bd026add3b07043b0eefcd" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::core::base_integer::~base_integer </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00036">36</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="a80fd494f4fe59cb29f1f305b1f092e45"></a><!-- doxytag: member="boost::xint::core::base_integer::_attach" ref="a80fd494f4fe59cb29f1f305b1f092e45" args="(const base_integer &copy)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_attach </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> & </td>
+ <td class="paramname"> <em>copy</em></td>
+ <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#l00070">70</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a662d8cca23ec10683e5a4884e9ade5d4"></a><!-- doxytag: member="boost::xint::core::base_integer::_attach" ref="a662d8cca23ec10683e5a4884e9ade5d4" args="(detail::data_t *new_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::core::base_integer::_attach </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a> * </td>
+ <td class="paramname"> <em>new_data</em></td>
+ <td> ) </td>
+ <td><code> [protected]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00053">53</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a28bd6c6ce95b271d6f75d82041515df2"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_data" ref="a28bd6c6ce95b271d6f75d82041515df2" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">detail::data_t</a>* boost::xint::core::base_integer::_get_data </td>
+ <td>(</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#l00146">146</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4cbda067a810993a4d253d9113ca44a8"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_digit" ref="a4cbda067a810993a4d253d9113ca44a8" 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::base_integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>index</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="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="ac932c6bae77d2bbc93bf3456909e30bb"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_digit" ref="ac932c6bae77d2bbc93bf3456909e30bb" 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::base_integer::_get_digit </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>index</em></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="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="a9ed6fed4d931d2eb9b481ca02cc96bd7"></a><!-- doxytag: member="boost::xint::core::base_integer::_get_length" ref="a9ed6fed4d931d2eb9b481ca02cc96bd7" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::core::base_integer::_get_length </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00049">49</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa3d3f1dafb98685d92dec931dd0e3671"></a><!-- doxytag: member="boost::xint::core::base_integer::_is_unique" ref="aa3d3f1dafb98685d92dec931dd0e3671" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::core::base_integer::_is_unique </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td> ) </td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00074">74</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 class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1base__integer.png
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -28,27 +28,27 @@
</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_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(detail::data_t *new_data)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">_attach</a>(const base_integer &copy)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(size_t index) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(detail::digit_t init=0)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a>(const integer &c)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a>(boost::uintmax_t n)</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td><td><code> [protected]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() const </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_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_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_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#ad0f5b3fdf28a3e2892198dd1c39afe82">integer</a>(const blockable::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#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#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>
@@ -70,10 +70,10 @@
<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>
+ <tr class="memlist"><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>()</td><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td><td></td></tr>
</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,30 +29,42 @@
</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.
+<h1>boost::xint::core::integer Class Reference</h1><!-- doxytag: class="boost::xint::core::integer" --><!-- doxytag: inherits="boost::xint::core::base_integer" -->
+<p>The core integer class.
<a href="#_details">More...</a></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::core::integer:</div>
+<div class="dynsection">
+ <div class="center">
+ <img src="classboost_1_1xint_1_1core_1_1integer.png" usemap="#boost::xint::core::integer_map" alt=""/>
+ <map id="boost::xint::core::integer_map" name="boost::xint::core::integer_map">
+<area href="classboost_1_1xint_1_1core_1_1base__integer.html" alt="boost::xint::core::base_integer" shape="rect" coords="0,0,178,24"/>
+</map>
+ </div>
+</div>
<p>List of all members.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Constructors & Destructors</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpab1e74c734dea693114ec1f1cb9434ad"></a> </p>
-<br/><br/></div></td></tr>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">integer</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new integer with an initial value of zero. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">integer</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="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="mdescLeft"> </td><td class="mdescRight">Creates a copy of an existing integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ad0f5b3fdf28a3e2892198dd1c39afe82">integer</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">blockable::integer</a> &b)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an integer from a <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">integer</a> (const std::string &str, size_t base=10)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an integer from a string representation. <br/></td></tr>
<tr><td class="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 colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp8eb1e0f0af70edd858d54ba68b80ce7e"></a>These operate exactly like their counterparts for the built-in integer types.</p>
+<p>Note that there is no <code>operator~</code>. Since the integer type doesn't have a fixed maximum size, there is no logical way to implement it. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &b)</td></tr>
@@ -72,40 +84,38 @@
<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>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">odd</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine oddness. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">even</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the lowest bit of <code>*this</code> to determine evenness. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">sign</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests the sign of <code>*this</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">hex_digits</a> () const </td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells you roughly how large an integer is. <br/></td></tr>
<tr><td 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 colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpae260ff3a3a80dad696f01482c30bb91"></a>These functions allow access to the internals of the integer. They are intended for internal use only. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a> (bool negative)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a> ()</td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Preconstructed integers</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbc92fcddffc2f3092779f92fe2501e4a"></a> </p>
-<br/><br/></div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbc92fcddffc2f3092779f92fe2501e4a"></a> These return preconstructed integers with the values named by the functions. They are used internally, so that the most common values don't have to be constructed each time they're needed. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a> ()</td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">_init</a> (const <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> &c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">_init</a> (boost::uintmax_t n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">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>The core integer class. </p>
+<p>This class implements the "pure" <code>integer</code> type, uncontaminated by things like the Not-a-Number value.</p>
+<p>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#l00142">142</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00173">173</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">
@@ -122,7 +132,9 @@
</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>
+<p>Creates a new integer with an initial value of zero. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00082">82</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -142,18 +154,28 @@
</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>
+<p>Creates a copy of an existing integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>An existing integer. 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#l00097">97</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)" -->
+<a class="anchor" id="ad0f5b3fdf28a3e2892198dd1c39afe82"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="ad0f5b3fdf28a3e2892198dd1c39afe82" args="(const blockable::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="paramtype">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">blockable::integer</a> & </td>
<td class="paramname"> <em>b</em></td>
<td> ) </td>
<td><code> [explicit]</code></td>
@@ -162,48 +184,69 @@
</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>
+<p>Creates an integer from a <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>An existing <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This library can use a <a class="el" href="cow.html">copy-on-write technique</a>, making copying (even of large numbers) a very inexpensive operation.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00111">111</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="afb6b73128973a835a261546f0a7fa0e7"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="afb6b73128973a835a261546f0a7fa0e7" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_signed< T > >::type *=0)" -->
+<a class="anchor" id="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">
-<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>
+ <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">typename boost::enable_if< boost::is_signed< T > >::type * </td>
- <td class="paramname"> = <code>0</code></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> [inline]</code></td>
+ <td></td><td></td><td><code> [explicit]</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>
+<p>Create an integer 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 integer. See the description of the xint::from_string function for details on its behavior.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>This is the most common way to initialize values that are too large to fit into a native integral type.</dd></dl>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00136">136</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a570690c9233ceb8d73dccb9af052f12b"></a><!-- doxytag: member="boost::xint::core::integer::integer" ref="a570690c9233ceb8d73dccb9af052f12b" args="(const T &n, typename boost::enable_if< boost::is_integral< T > >::type *=0, typename boost::enable_if< boost::is_unsigned< T > >::type *=0)" -->
+<a class="anchor" id="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">
@@ -224,7 +267,7 @@
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">typename boost::enable_if< boost::is_unsigned< T > >::type * </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>
@@ -235,205 +278,79 @@
</table>
</div>
<div class="memdoc">
+<p>Constructs a new integer 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#l00728">728</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00798">798</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)" -->
+<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 std::string & </td>
- <td class="paramname"> <em>str</em>, </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">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>
+ <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">bool </td>
- <td class="paramname"></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> const</td>
+ <td></td><td></td><td><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
+<p>Constructs a new integer object with the value of the built-in 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="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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00830">830</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
+<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a275c6dc7e675e5395ab16d92c9851429"></a><!-- doxytag: member="boost::xint::core::integer::_init" ref="a275c6dc7e675e5395ab16d92c9851429" args="(boost::uintmax_t n)" -->
<div class="memitem">
<div class="memproto">
@@ -451,7 +368,7 @@
<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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00152">152</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -472,7 +389,7 @@
<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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00148">148</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -492,7 +409,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00140">140</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -511,7 +428,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00160">160</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -531,7 +448,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00168">168</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -550,7 +467,10 @@
</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>
+<p>Tests the lowest bit of <code>*this</code> to determine evenness. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is even, otherwise <code>false</code>. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00189">189</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -569,7 +489,10 @@
</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>
+<p>Tells you roughly how large an integer is. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The number of hexadecimal digits that would be required to encode <code>this</code>. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00208">208</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -588,7 +511,10 @@
</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>
+<p>Tests the lowest bit of <code>*this</code> to determine oddness. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if <code>*this</code> is odd, otherwise <code>false</code>. </dd></dl>
+
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00181">181</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -607,7 +533,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00280">280</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -627,7 +553,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00246">246</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -647,7 +573,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00255">255</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -667,7 +593,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00244">244</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -688,7 +614,7 @@
<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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00250">250</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -708,7 +634,7 @@
<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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00248">248</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -728,7 +654,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00213">213</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -749,7 +675,7 @@
<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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00251">251</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -769,7 +695,7 @@
<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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00249">249</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -789,7 +715,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00227">227</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -809,7 +735,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00245">245</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -829,7 +755,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00253">253</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -849,7 +775,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00259">259</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -869,7 +795,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00239">239</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -889,7 +815,7 @@
</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>
+<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>
@@ -909,7 +835,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00267">267</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -929,7 +855,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00257">257</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -949,7 +875,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00256">256</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -968,7 +894,10 @@
</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>
+<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>
+
+<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>
@@ -987,23 +916,7 @@
</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>
+<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00275">275</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
</div>
</div>
@@ -1012,8 +925,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/classboost_1_1xint_1_1core_1_1integer.png
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1divide__by__zero.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -44,7 +42,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00685">685</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">
@@ -62,7 +60,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00687">687</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -70,8 +68,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1integer-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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>
Deleted: sandbox/xint/doc/classboost_1_1xint_1_1integer.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1integer.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,1019 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: boost::xint::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>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1invalid__base-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1invalid__base-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__base-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1invalid__base.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1invalid__base.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__base.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -44,7 +42,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00655">655</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">
@@ -62,7 +60,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00657">657</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -70,8 +68,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__digit.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -44,7 +42,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00665">665</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">
@@ -62,7 +60,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00667">667</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -70,8 +68,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1invalid__modulus.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -44,7 +42,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00675">675</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">
@@ -62,7 +60,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00677">677</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -70,8 +68,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1no__strong__random.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -46,7 +44,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00740">740</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">
@@ -64,7 +62,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00742">742</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -72,8 +70,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1not__a__number-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1not__a__number-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1not__a__number-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1not__a__number.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1not__a__number.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1not__a__number.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -46,7 +44,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00722">722</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">
@@ -64,7 +62,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00724">724</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -72,8 +70,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1overflow__error-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1overflow__error-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1overflow__error-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1overflow__error.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1overflow__error.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1overflow__error.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -45,7 +43,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00754">754</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">
@@ -63,7 +61,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00756">756</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -71,8 +69,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -39,8 +39,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1strong__random__generator.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>A convenience class for cryptographically-secure random numbers.
<a href="#_details">More...</a></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>
@@ -56,7 +54,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00602">602</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
<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">
@@ -69,7 +67,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00604">604</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -89,7 +87,7 @@
</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>
+<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>
@@ -108,7 +106,7 @@
</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>
+<p>Definition at line <a class="el" href="random_8cpp_source.html#l00170">170</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
</div>
</div>
@@ -179,7 +177,7 @@
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="random_8cpp_source.html#l00169">169</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
+<p>Definition at line <a class="el" href="random_8cpp_source.html#l00171">171</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
</div>
</div>
@@ -195,7 +193,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00610">610</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -212,7 +210,7 @@
<b>Initial value:</b><div class="fragment"><pre class="fragment">
(std::numeric_limits<impl_t::result_type>::max)()
</pre></div>
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00349">349</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00612">612</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -229,7 +227,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00611">611</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -238,8 +236,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1too__big-members.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1too__big-members.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1too__big-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,8 +30,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classboost_1_1xint_1_1too__big.html
==============================================================================
--- sandbox/xint/doc/classboost_1_1xint_1_1too__big.html (original)
+++ sandbox/xint/doc/classboost_1_1xint_1_1too__big.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Exception class.
<a href="#_details">More...</a></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>
@@ -44,7 +42,7 @@
<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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00705">705</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">
@@ -62,7 +60,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00707">707</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -70,8 +68,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/classes.html
==============================================================================
--- sandbox/xint/doc/classes.html (original)
+++ sandbox/xint/doc/classes.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,19 +30,19 @@
<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a></div>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> B </div></td></tr></table>
-</td><td><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">divide_by_zero</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">invalid_modulus</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1overflow__error.html">overflow_error</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
+</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1invalid__digit.html">invalid_digit</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1overflow__error.html">overflow_error</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
+</td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a>) </td><td><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html">divide_by_zero</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">invalid_modulus</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Q </div></td></tr></table>
+</td><td><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">strong_random_generator</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">base_random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
</td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> N </div></td></tr></table>
-</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_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="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">data_t::QuickDigits</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table>
+</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
+</td><td><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a>) </td><td><a class="el" href="classboost_1_1xint_1_1no__strong__random.html">no_strong_random</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table>
+</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td></tr><tr><td><a class="el" href="classboost_1_1xint_1_1cannot__represent.html">cannot_represent</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a> (<a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a>) </td><td><a class="el" href="classboost_1_1xint_1_1not__a__number.html">not_a_number</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">random_generator</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a>) </td><td><a class="el" href="classboost_1_1xint_1_1too__big.html">too_big</a> (<a
class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
</td><td><a class="el" href="classboost_1_1xint_1_1invalid__base.html">invalid_base</a> (<a class="el" href="namespaceboost_1_1xint.html">boost::xint</a>) </td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
-</td><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>
+</td></tr></table><div class="qindex"><a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a></div>
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/classxint_1_1cannot__represent-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1cannot__represent-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::cannot_represent Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1cannot__represent.html">xint::cannot_represent</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1cannot__represent.html#ae551af601d2ab445a380a9c48e2a1db9">cannot_represent</a>(const std::string &what="cannot represent the requested value")</td><td><a class="el" href="classxint_1_1cannot__represent.html">xint::cannot_represent</a></td><td><code> [inline]</code></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1cannot__represent.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1cannot__represent.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1cannot__represent.html">cannot_represent</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::cannot_represent Class Reference</h1><!-- doxytag: class="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="classxint_1_1cannot__represent.html#ae551af601d2ab445a380a9c48e2a1db9">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#l00452">452</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="ae551af601d2ab445a380a9c48e2a1db9"></a><!-- doxytag: member="xint::cannot_represent::cannot_represent" ref="ae551af601d2ab445a380a9c48e2a1db9" args="(const std::string &what="cannot represent the requested value")" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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#l00454">454</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1divide__by__zero-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1divide__by__zero-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::divide_by_zero Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1divide__by__zero.html">xint::divide_by_zero</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1divide__by__zero.html#a31233d42a45ca6ef7078e700fa114ad2">divide_by_zero</a>(const std::string &what="divide by zero error")</td><td><a class="el" href="classxint_1_1divide__by__zero.html">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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1divide__by__zero.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1divide__by__zero.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1divide__by__zero.html">divide_by_zero</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::divide_by_zero Class Reference</h1><!-- doxytag: class="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="classxint_1_1divide__by__zero.html#a31233d42a45ca6ef7078e700fa114ad2">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#l00442">442</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="a31233d42a45ca6ef7078e700fa114ad2"></a><!-- doxytag: member="xint::divide_by_zero::divide_by_zero" ref="a31233d42a45ca6ef7078e700fa114ad2" args="(const std::string &what="divide by zero error")" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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#l00444">444</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1integer-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1integer-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::integer Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1integer.html">xint::integer</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#ae5578d7d5be17df3ecd3ddc5a852d0a0">_get_data</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#aff99f7868567ae0dd4666a985873a5a7">_get_data</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a81ab47d2f92ec66ac1586b61d7fd8b60">_get_digit</a>(size_t index) const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a33fe6f16dfba7b076f04a5ea40d8dccb">_get_digit</a>(size_t index, bool) const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a5723a74b98da2d5ed9452a7ec10c0ca2">_get_length</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#adc5c7b5bc30c0cfa30d62610e0bc0366">_make_unique</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#ab2f4df250e1030c518180b7e832c5ebd">_set_negative</a>(bool negative)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#ad5935c358b92f15064b1f910613f7a3e">_throw_if_nan</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a2ffb63eee276c65d8ea8b365adeb1ee2">even</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a25f066e30e4548bc22e0e9d75b809955">hex_digits</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#ad32b3b13167c61e48aede083a3e1c7a8">integer</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#aa123fb47accd778f87e2866c9d986bb7">integer</a>(const integer &b)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a67db70248d9890990c257a1d069192e3">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="classxint_1_1integer.html">xint::integer</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a0cad684bc9d7032497c7178edb91a5eb">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="classxint_1_1integer.html">xint::integer</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a6dfc86dfc539cfda1062ef1bc24aa526">integer</a>(const std::string &str, size_t base=10)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td><code> [explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a1211c9298c3281815bc9b709439d031a">integer</a>(const not_a_number &)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td><code> [explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a0bca68386478755dc787f981d9cd5606">is_nan</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#af2d420708a02755a8851140928e50e23">odd</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a9237b21f4162146c7b5749b169c081b8">one</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#abee8874a961c2bb15a288494e096f36b">operator%=</a>(const integer &b)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a0d4c730e3d45d3fa2895b706b202d860">operator&=</a>(const integer &n)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a531cdc9ce5667c4553fd1e4dac151b51">operator*=</a>(const integer &b)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a60cd241278892070d14a0d57e45c9264">operator++</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a79624fb580bdb2ba19fe13223c801c25">operator++</a>(int)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#aa0259f75f66b97b68310cfed2c0ecc7b">operator+=</a>(const integer &b)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a48452b868e2279e202039c9918f0dcf3">operator--</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a40ff1ffeda1df544b8bcd907f76d93cd">operator--</a>(int)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a2ce7f54adccb88836d1474fc67fa9a62">operator-=</a>(const integer &b)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a3366a33f7ca5ad3285515e260d0dce66">operator/=</a>(const integer &b)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a3733741d7e1c8ba1c1f490c8949a308f">operator<<</a>(size_t shift) const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a14545146f86ed797e97758d8aea32ecd">operator<<=</a>(size_t shift)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#abfa13a313f2782885bbbfa9a5f4a22c2">operator=</a>(const integer &c)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a5cbc6986de4ca89b49162736f8750986">operator>></a>(size_t shift) const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#aa0151e58a97bc1801221907d68582ec2">operator>>=</a>(size_t shift)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#afc13b5ae9c6f28ef5e75777976aeb56d">operator^=</a>(const integer &n)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a1af418341e64a317b4cc41fcddaa849f">operator|=</a>(const integer &n)</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a5d84398ce89b376f695ccded2d20c8c2">sign</a>() const </td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a64a0f99de7c33239237cb59d8464f3d2">zero</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1integer.html#a4f687cc90353b1c347448f1d94fa157e">~integer</a>()</td><td><a class="el" href="classxint_1_1integer.html">xint::integer</a></td><td></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1integer.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1integer.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,1040 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1integer.html">integer</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::integer Class Reference</h1><!-- doxytag: class="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="classxint_1_1integer.html#ad32b3b13167c61e48aede083a3e1c7a8">integer</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new <a class="el" href="classxint_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="classxint_1_1integer.html#aa123fb47accd778f87e2866c9d986bb7">integer</a> (const <a class="el" href="classxint_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="classxint_1_1integer.html" title="The extended integer class.">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="classxint_1_1integer.html#a67db70248d9890990c257a1d069192e3">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="classxint_1_1integer.html#a0cad684bc9d7032497c7178edb91a5eb">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="classxint_1_1integer.html#a6dfc86dfc539cfda1062ef1bc24aa526">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="classxint_1_1integer.html" title="The extended integer class.">integer</a> from a string representation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a1211c9298c3281815bc9b709439d031a">integer</a> (const <a class="el" href="classxint_1_1not__a__number.html">not_a_number</a> &)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> with the value of Not-a-Number. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a4f687cc90353b1c347448f1d94fa157e">~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>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="classxint_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="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#abfa13a313f2782885bbbfa9a5f4a22c2">operator=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#aa0259f75f66b97b68310cfed2c0ecc7b">operator+=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a2ce7f54adccb88836d1474fc67fa9a62">operator-=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a531cdc9ce5667c4553fd1e4dac151b51">operator*=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a3366a33f7ca5ad3285515e260d0dce66">operator/=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#abee8874a961c2bb15a288494e096f36b">operator%=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a60cd241278892070d14a0d57e45c9264">operator++</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a48452b868e2279e202039c9918f0dcf3">operator--</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a79624fb580bdb2ba19fe13223c801c25">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a40ff1ffeda1df544b8bcd907f76d93cd">operator--</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a0d4c730e3d45d3fa2895b706b202d860">operator&=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a1af418341e64a317b4cc41fcddaa849f">operator|=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#afc13b5ae9c6f28ef5e75777976aeb56d">operator^=</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a3733741d7e1c8ba1c1f490c8949a308f">operator<<</a> (size_t shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a5cbc6986de4ca89b49162736f8750986">operator>></a> (size_t shift) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a14545146f86ed797e97758d8aea32ecd">operator<<=</a> (size_t shift)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#aa0151e58a97bc1801221907d68582ec2">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="classxint_1_1integer.html#af2d420708a02755a8851140928e50e23">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="classxint_1_1integer.html#a2ffb63eee276c65d8ea8b365adeb1ee2">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="classxint_1_1integer.html#a5d84398ce89b376f695ccded2d20c8c2">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="classxint_1_1integer.html#a0bca68386478755dc787f981d9cd5606">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="classxint_1_1integer.html#a25f066e30e4548bc22e0e9d75b809955">hex_digits</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells you roughly how large an <a class="el" href="classxint_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="structxint_1_1detail_1_1data__t.html">detail::data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#ae5578d7d5be17df3ecd3ddc5a852d0a0">_get_data</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structxint_1_1detail_1_1data__t.html">detail::data_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#aff99f7868567ae0dd4666a985873a5a7">_get_data</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a81ab47d2f92ec66ac1586b61d7fd8b60">_get_digit</a> (size_t index) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">detail::digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a33fe6f16dfba7b076f04a5ea40d8dccb">_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="classxint_1_1integer.html#a5723a74b98da2d5ed9452a7ec10c0ca2">_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="classxint_1_1integer.html#ab2f4df250e1030c518180b7e832c5ebd">_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="classxint_1_1integer.html#adc5c7b5bc30c0cfa30d62610e0bc0366">_make_unique</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#ad5935c358b92f15064b1f910613f7a3e">_throw_if_nan</a> () const </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="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a64a0f99de7c33239237cb59d8464f3d2">zero</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1integer.html#a9237b21f4162146c7b5749b169c081b8">one</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="classxint_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#l00141">141</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="ad32b3b13167c61e48aede083a3e1c7a8"></a><!-- doxytag: member="xint::integer::integer" ref="ad32b3b13167c61e48aede083a3e1c7a8" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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="classxint_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#l00034">34</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa123fb47accd778f87e2866c9d986bb7"></a><!-- doxytag: member="xint::integer::integer" ref="aa123fb47accd778f87e2866c9d986bb7" args="(const integer &b)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">xint::integer::integer </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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="classxint_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="classxint_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#l00049">49</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a67db70248d9890990c257a1d069192e3"></a><!-- doxytag: member="xint::integer::integer" ref="a67db70248d9890990c257a1d069192e3" 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">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="classxint_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#l00540">540</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0cad684bc9d7032497c7178edb91a5eb"></a><!-- doxytag: member="xint::integer::integer" ref="a0cad684bc9d7032497c7178edb91a5eb" 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">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="classxint_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#l00573">573</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6dfc86dfc539cfda1062ef1bc24aa526"></a><!-- doxytag: member="xint::integer::integer" ref="a6dfc86dfc539cfda1062ef1bc24aa526" args="(const std::string &str, size_t base=10)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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="classxint_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="namespacexint.html#a7a5434a5f5fb1db19f0de18014c4fc41">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="classxint_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="namespacexint.html#a7a5434a5f5fb1db19f0de18014c4fc41">xint::autobase</a>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>. See the description of the <a class="el" href="namespacexint.html#ad9dcb2b835be5f8ee918979945911ac0" 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#l00074">74</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1211c9298c3281815bc9b709439d031a"></a><!-- doxytag: member="xint::integer::integer" ref="a1211c9298c3281815bc9b709439d031a" args="(const not_a_number &)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">xint::integer::integer </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1not__a__number.html">not_a_number</a> & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td><code> [explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Creates an <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> with the value of Not-a-Number. </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>An <a class="el" href="classxint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a> object (normally used as an exception class).</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the official way to create an <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> with the Not-a-Number value, if you ever wish to use that value for your own purposes.</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>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#l00090">90</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4f687cc90353b1c347448f1d94fa157e"></a><!-- doxytag: member="xint::integer::~integer" ref="a4f687cc90353b1c347448f1d94fa157e" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">xint::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#l00094">94</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="aff99f7868567ae0dd4666a985873a5a7"></a><!-- doxytag: member="xint::integer::_get_data" ref="aff99f7868567ae0dd4666a985873a5a7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="structxint_1_1detail_1_1data__t.html">detail::data_t</a>* 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#l00217">217</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae5578d7d5be17df3ecd3ddc5a852d0a0"></a><!-- doxytag: member="xint::integer::_get_data" ref="ae5578d7d5be17df3ecd3ddc5a852d0a0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structxint_1_1detail_1_1data__t.html">detail::data_t</a>* 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#l00216">216</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a33fe6f16dfba7b076f04a5ea40d8dccb"></a><!-- doxytag: member="xint::integer::_get_digit" ref="a33fe6f16dfba7b076f04a5ea40d8dccb" args="(size_t index, bool) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">detail::digit_t</a> 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#l00293">293</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a81ab47d2f92ec66ac1586b61d7fd8b60"></a><!-- doxytag: member="xint::integer::_get_digit" ref="a81ab47d2f92ec66ac1586b61d7fd8b60" args="(size_t index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">detail::digit_t</a> 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#l00289">289</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5723a74b98da2d5ed9452a7ec10c0ca2"></a><!-- doxytag: member="xint::integer::_get_length" ref="a5723a74b98da2d5ed9452a7ec10c0ca2" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t 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#l00298">298</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adc5c7b5bc30c0cfa30d62610e0bc0366"></a><!-- doxytag: member="xint::integer::_make_unique" ref="adc5c7b5bc30c0cfa30d62610e0bc0366" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00143">143</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab2f4df250e1030c518180b7e832c5ebd"></a><!-- doxytag: member="xint::integer::_set_negative" ref="ab2f4df250e1030c518180b7e832c5ebd" args="(bool negative)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00156">156</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad5935c358b92f15064b1f910613f7a3e"></a><!-- doxytag: member="xint::integer::_throw_if_nan" ref="ad5935c358b92f15064b1f910613f7a3e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void xint::integer::_throw_if_nan </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#l00302">302</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2ffb63eee276c65d8ea8b365adeb1ee2"></a><!-- doxytag: member="xint::integer::even" ref="a2ffb63eee276c65d8ea8b365adeb1ee2" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00173">173</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a25f066e30e4548bc22e0e9d75b809955"></a><!-- doxytag: member="xint::integer::hex_digits" ref="a25f066e30e4548bc22e0e9d75b809955" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t 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="classxint_1_1integer.html" title="The extended integer class.">integer</a> is. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>the number of hex digits to show the <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a>.</dd>
-<dd>
-The number of hexadecimal digits that would be required to encode <code>this</code>. </dd></dl>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00205">205</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0bca68386478755dc787f981d9cd5606"></a><!-- doxytag: member="xint::integer::is_nan" ref="a0bca68386478755dc787f981d9cd5606" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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>true if <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> is Not-a-Number.</dd>
-<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#l00196">196</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af2d420708a02755a8851140928e50e23"></a><!-- doxytag: member="xint::integer::odd" ref="af2d420708a02755a8851140928e50e23" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00164">164</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9237b21f4162146c7b5749b169c081b8"></a><!-- doxytag: member="xint::integer::one" ref="a9237b21f4162146c7b5749b169c081b8" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classxint_1_1integer.html">integer</a> & 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#l00284">284</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abee8874a961c2bb15a288494e096f36b"></a><!-- doxytag: member="xint::integer::operator%=" ref="abee8874a961c2bb15a288494e096f36b" args="(const integer &b)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator%= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00250">250</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0d4c730e3d45d3fa2895b706b202d860"></a><!-- doxytag: member="xint::integer::operator&=" ref="a0d4c730e3d45d3fa2895b706b202d860" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator&= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00259">259</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a531cdc9ce5667c4553fd1e4dac151b51"></a><!-- doxytag: member="xint::integer::operator*=" ref="a531cdc9ce5667c4553fd1e4dac151b51" args="(const integer &b)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator*= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00248">248</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a79624fb580bdb2ba19fe13223c801c25"></a><!-- doxytag: member="xint::integer::operator++" ref="a79624fb580bdb2ba19fe13223c801c25" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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#l00254">254</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a60cd241278892070d14a0d57e45c9264"></a><!-- doxytag: member="xint::integer::operator++" ref="a60cd241278892070d14a0d57e45c9264" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & 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#l00252">252</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa0259f75f66b97b68310cfed2c0ecc7b"></a><!-- doxytag: member="xint::integer::operator+=" ref="aa0259f75f66b97b68310cfed2c0ecc7b" args="(const integer &b)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00211">211</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a40ff1ffeda1df544b8bcd907f76d93cd"></a><!-- doxytag: member="xint::integer::operator--" ref="a40ff1ffeda1df544b8bcd907f76d93cd" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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#l00255">255</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a48452b868e2279e202039c9918f0dcf3"></a><!-- doxytag: member="xint::integer::operator--" ref="a48452b868e2279e202039c9918f0dcf3" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & 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#l00253">253</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2ce7f54adccb88836d1474fc67fa9a62"></a><!-- doxytag: member="xint::integer::operator-=" ref="a2ce7f54adccb88836d1474fc67fa9a62" args="(const integer &b)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00225">225</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3366a33f7ca5ad3285515e260d0dce66"></a><!-- doxytag: member="xint::integer::operator/=" ref="a3366a33f7ca5ad3285515e260d0dce66" args="(const integer &b)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator/= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00249">249</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3733741d7e1c8ba1c1f490c8949a308f"></a><!-- doxytag: member="xint::integer::operator<<" ref="a3733741d7e1c8ba1c1f490c8949a308f" args="(size_t shift) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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#l00257">257</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a14545146f86ed797e97758d8aea32ecd"></a><!-- doxytag: member="xint::integer::operator<<=" ref="a14545146f86ed797e97758d8aea32ecd" args="(size_t shift)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & 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#l00263">263</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abfa13a313f2782885bbbfa9a5f4a22c2"></a><!-- doxytag: member="xint::integer::operator=" ref="abfa13a313f2782885bbbfa9a5f4a22c2" args="(const integer &c)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00237">237</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5cbc6986de4ca89b49162736f8750986"></a><!-- doxytag: member="xint::integer::operator>>" ref="a5cbc6986de4ca89b49162736f8750986" args="(size_t shift) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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#l00258">258</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa0151e58a97bc1801221907d68582ec2"></a><!-- doxytag: member="xint::integer::operator>>=" ref="aa0151e58a97bc1801221907d68582ec2" args="(size_t shift)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & 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#l00271">271</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="afc13b5ae9c6f28ef5e75777976aeb56d"></a><!-- doxytag: member="xint::integer::operator^=" ref="afc13b5ae9c6f28ef5e75777976aeb56d" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator^= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00261">261</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1af418341e64a317b4cc41fcddaa849f"></a><!-- doxytag: member="xint::integer::operator|=" ref="a1af418341e64a317b4cc41fcddaa849f" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> & xint::integer::operator|= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_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#l00260">260</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5d84398ce89b376f695ccded2d20c8c2"></a><!-- doxytag: member="xint::integer::sign" ref="a5d84398ce89b376f695ccded2d20c8c2" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int 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>
-
-<p>Definition at line <a class="el" href="integer_8cpp_source.html#l00183">183</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a64a0f99de7c33239237cb59d8464f3d2"></a><!-- doxytag: member="xint::integer::zero" ref="a64a0f99de7c33239237cb59d8464f3d2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classxint_1_1integer.html">integer</a> & 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#l00279">279</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1invalid__base-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1invalid__base-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::invalid_base Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1invalid__base.html">xint::invalid_base</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1invalid__base.html#a16a577d5584652ca358450cbb55b5d55">invalid_base</a>(const std::string &what="invalid base")</td><td><a class="el" href="classxint_1_1invalid__base.html">xint::invalid_base</a></td><td><code> [inline]</code></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1invalid__base.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1invalid__base.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1invalid__base.html">invalid_base</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::invalid_base Class Reference</h1><!-- doxytag: class="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="classxint_1_1invalid__base.html#a16a577d5584652ca358450cbb55b5d55">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#l00412">412</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="a16a577d5584652ca358450cbb55b5d55"></a><!-- doxytag: member="xint::invalid_base::invalid_base" ref="a16a577d5584652ca358450cbb55b5d55" args="(const std::string &what="invalid base")" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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#l00414">414</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1invalid__digit-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1invalid__digit-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::invalid_digit Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1invalid__digit.html">xint::invalid_digit</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1invalid__digit.html#a832283e75569bd7e9d09f38ebae87a27">invalid_digit</a>(const std::string &what="invalid digit")</td><td><a class="el" href="classxint_1_1invalid__digit.html">xint::invalid_digit</a></td><td><code> [inline]</code></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1invalid__digit.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1invalid__digit.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1invalid__digit.html">invalid_digit</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::invalid_digit Class Reference</h1><!-- doxytag: class="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="classxint_1_1invalid__digit.html#a832283e75569bd7e9d09f38ebae87a27">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#l00422">422</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="a832283e75569bd7e9d09f38ebae87a27"></a><!-- doxytag: member="xint::invalid_digit::invalid_digit" ref="a832283e75569bd7e9d09f38ebae87a27" args="(const std::string &what="invalid digit")" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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#l00424">424</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1invalid__modulus-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1invalid__modulus-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::invalid_modulus Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1invalid__modulus.html">xint::invalid_modulus</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1invalid__modulus.html#a691026e352d38fc5120c12d6d134e854">invalid_modulus</a>(const std::string &what="invalid modulus")</td><td><a class="el" href="classxint_1_1invalid__modulus.html">xint::invalid_modulus</a></td><td><code> [inline]</code></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1invalid__modulus.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1invalid__modulus.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1invalid__modulus.html">invalid_modulus</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::invalid_modulus Class Reference</h1><!-- doxytag: class="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="classxint_1_1invalid__modulus.html#a691026e352d38fc5120c12d6d134e854">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#l00432">432</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="a691026e352d38fc5120c12d6d134e854"></a><!-- doxytag: member="xint::invalid_modulus::invalid_modulus" ref="a691026e352d38fc5120c12d6d134e854" args="(const std::string &what="invalid modulus")" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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#l00434">434</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1no__strong__random-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1no__strong__random-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::no_strong_random Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1no__strong__random.html">xint::no_strong_random</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1no__strong__random.html#a1ed9b4ac87613e636ad8f87bacf25544">no_strong_random</a>(const std::string &what="system does not have a strong random generator")</td><td><a class="el" href="classxint_1_1no__strong__random.html">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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1no__strong__random.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1no__strong__random.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1no__strong__random.html">no_strong_random</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::no_strong_random Class Reference</h1><!-- doxytag: class="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="classxint_1_1no__strong__random.html#a1ed9b4ac87613e636ad8f87bacf25544">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>
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00497">497</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="a1ed9b4ac87613e636ad8f87bacf25544"></a><!-- doxytag: member="xint::no_strong_random::no_strong_random" ref="a1ed9b4ac87613e636ad8f87bacf25544" 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">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#l00499">499</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1not__a__number-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1not__a__number-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::not_a_number Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1not__a__number.html">xint::not_a_number</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1not__a__number.html#a4ecc5bcc06a5d660176d51fc63c996cd">not_a_number</a>(const std::string &what="attempted to use a Not-a-Number")</td><td><a class="el" href="classxint_1_1not__a__number.html">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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1not__a__number.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1not__a__number.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1not__a__number.html">not_a_number</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::not_a_number Class Reference</h1><!-- doxytag: class="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="classxint_1_1not__a__number.html#a4ecc5bcc06a5d660176d51fc63c996cd">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="note"><dt><b>Note:</b></dt><dd>Cannot (presently) be blocked.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>Most library functions will throw an <a class="el" href="classxint_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>An object of type <a class="el" href="classxint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a> can also be fed to an <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> constructor to deliberately produce a Not-a-Number value.</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#l00485">485</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="a4ecc5bcc06a5d660176d51fc63c996cd"></a><!-- doxytag: member="xint::not_a_number::not_a_number" ref="a4ecc5bcc06a5d660176d51fc63c996cd" 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">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#l00487">487</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1overflow__error-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1overflow__error-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::overflow_error Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1overflow__error.html">xint::overflow_error</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1overflow__error.html#a126d839e9138532447e0de9e39d1b4c8">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="classxint_1_1overflow__error.html">xint::overflow_error</a></td><td><code> [inline]</code></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1overflow__error.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1overflow__error.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1overflow__error.html">overflow_error</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::overflow_error Class Reference</h1><!-- doxytag: class="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="classxint_1_1overflow__error.html#a126d839e9138532447e0de9e39d1b4c8">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="note"><dt><b>Note:</b></dt><dd>Cannot (presently) be blocked.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>Thrown by the <a class="el" href="classxint_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#l00516">516</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="a126d839e9138532447e0de9e39d1b4c8"></a><!-- doxytag: member="xint::overflow_error::overflow_error" ref="a126d839e9138532447e0de9e39d1b4c8" 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">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#l00518">518</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1strong__random__generator-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1strong__random__generator-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::strong_random_generator Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a57ff17a9c2b36775acfedd53f5a0b30e">entropy</a>() const </td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a1a808cca9189eb64f420e4745ca5122d">has_fixed_range</a></td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a1327ad0fe9d6f1f1c851456592b178db">max</a>() const </td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#aea47e4fbf8b0fe5914ade7ce2704a3c3">max_value</a></td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a5ec89070a7a7338c2b7318086efef701">min</a>() const </td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a4bea7dba7f086441548dfee576e54fce">min_value</a></td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a2bbb1944511585f66e5daec4737bd4e7">operator()</a>()</td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> typedef</td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#a8841d21b6614967e0520f55c3093871a">strong_random_generator</a>()</td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classxint_1_1strong__random__generator.html#ac75f659c2adb7c822d49fe534b2d76a4">~strong_random_generator</a>()</td><td><a class="el" href="classxint_1_1strong__random__generator.html">xint::strong_random_generator</a></td><td></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1strong__random__generator.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1strong__random__generator.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,245 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1strong__random__generator.html">strong_random_generator</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::strong_random_generator Class Reference</h1><!-- doxytag: class="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="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">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="classxint_1_1strong__random__generator.html#a8841d21b6614967e0520f55c3093871a">strong_random_generator</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1strong__random__generator.html#ac75f659c2adb7c822d49fe534b2d76a4">~strong_random_generator</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1strong__random__generator.html#a2bbb1944511585f66e5daec4737bd4e7">operator()</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1strong__random__generator.html#a5ec89070a7a7338c2b7318086efef701">min</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1strong__random__generator.html#a1327ad0fe9d6f1f1c851456592b178db">max</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1strong__random__generator.html#a57ff17a9c2b36775acfedd53f5a0b30e">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="classxint_1_1strong__random__generator.html#a1a808cca9189eb64f420e4745ca5122d">has_fixed_range</a> = true</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1strong__random__generator.html#a4bea7dba7f086441548dfee576e54fce">min_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxint_1_1strong__random__generator.html#aea47e4fbf8b0fe5914ade7ce2704a3c3">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="namespacexint.html#a9c50302b216b64d17d9c1d6350e88036" 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#l00245">245</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="a470b586d0730deb716ffa3c13164e493"></a><!-- doxytag: member="xint::strong_random_generator::result_type" ref="a470b586d0730deb716ffa3c13164e493" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef unsigned int <a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">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#l00247">247</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="a8841d21b6614967e0520f55c3093871a"></a><!-- doxytag: member="xint::strong_random_generator::strong_random_generator" ref="a8841d21b6614967e0520f55c3093871a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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#l00166">166</a> of file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac75f659c2adb7c822d49fe534b2d76a4"></a><!-- doxytag: member="xint::strong_random_generator::~strong_random_generator" ref="ac75f659c2adb7c822d49fe534b2d76a4" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">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>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a57ff17a9c2b36775acfedd53f5a0b30e"></a><!-- doxytag: member="xint::strong_random_generator::entropy" ref="a57ff17a9c2b36775acfedd53f5a0b30e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double 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="a1327ad0fe9d6f1f1c851456592b178db"></a><!-- doxytag: member="xint::strong_random_generator::max" ref="a1327ad0fe9d6f1f1c851456592b178db" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> 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="a5ec89070a7a7338c2b7318086efef701"></a><!-- doxytag: member="xint::strong_random_generator::min" ref="a5ec89070a7a7338c2b7318086efef701" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">result_type</a> 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="a2bbb1944511585f66e5daec4737bd4e7"></a><!-- doxytag: member="xint::strong_random_generator::operator()" ref="a2bbb1944511585f66e5daec4737bd4e7" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">strong_random_generator::result_type</a> 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#l00168">168</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="a1a808cca9189eb64f420e4745ca5122d"></a><!-- doxytag: member="xint::strong_random_generator::has_fixed_range" ref="a1a808cca9189eb64f420e4745ca5122d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const bool <a class="el" href="classxint_1_1strong__random__generator.html#a1a808cca9189eb64f420e4745ca5122d">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#l00253">253</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aea47e4fbf8b0fe5914ade7ce2704a3c3"></a><!-- doxytag: member="xint::strong_random_generator::max_value" ref="aea47e4fbf8b0fe5914ade7ce2704a3c3" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">strong_random_generator::result_type</a> <a class="el" href="classxint_1_1strong__random__generator.html#aea47e4fbf8b0fe5914ade7ce2704a3c3">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#l00255">255</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4bea7dba7f086441548dfee576e54fce"></a><!-- doxytag: member="xint::strong_random_generator::min_value" ref="a4bea7dba7f086441548dfee576e54fce" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classxint_1_1strong__random__generator.html#a470b586d0730deb716ffa3c13164e493">strong_random_generator::result_type</a> <a class="el" href="classxint_1_1strong__random__generator.html#a4bea7dba7f086441548dfee576e54fce">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#l00254">254</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1too__big-members.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1too__big-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::too_big Member List</h1>This is the complete list of members for <a class="el" href="classxint_1_1too__big.html">xint::too_big</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classxint_1_1too__big.html#af57a30cd18f06bef869c35b9c98f6115">too_big</a>(const std::string &what="value out of range for requested conversion")</td><td><a class="el" href="classxint_1_1too__big.html">xint::too_big</a></td><td><code> [inline]</code></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/classxint_1_1too__big.html
==============================================================================
--- sandbox/xint/doc/classxint_1_1too__big.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="classxint_1_1too__big.html">too_big</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::too_big Class Reference</h1><!-- doxytag: class="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="classxint_1_1too__big.html#af57a30cd18f06bef869c35b9c98f6115">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#l00462">462</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="af57a30cd18f06bef869c35b9c98f6115"></a><!-- doxytag: member="xint::too_big::too_big" ref="af57a30cd18f06bef869c35b9c98f6115" 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">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#l00464">464</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 Tue Apr 6 01:22:08 2010 for The 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/compare_8cpp.html
==============================================================================
--- sandbox/xint/doc/compare_8cpp.html (original)
+++ sandbox/xint/doc/compare_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,9 +29,6 @@
<h1>compare.cpp File Reference</h1>
<p>Contains the the compare function and comparison operators.
<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">
@@ -39,16 +36,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core::operator!</a> (const integer &num1)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core::operator==</a> (const integer &num1, const integer &num2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
@@ -56,29 +60,14 @@
<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>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> objects. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
-<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">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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -46,99 +46,55 @@
<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="l00039"></a>00039 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> integer &b1, <span class="keyword">const</span> integer &b2, <span class="keywordtype">bool</span> ignoresign) {
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (!ignoresign) {
+<a name="l00041"></a>00041 <span class="keywordtype">int</span> sign1=b1.sign(), sign2=b2.sign();
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (sign1==0 && sign2==0) <span class="keywordflow">return</span> 0;
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> -sign2;
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> sign1;
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (sign1 != sign2) <span class="keywordflow">return</span> sign1;
+<a name="l00047"></a>00047 <span class="keywordflow">if</span> (sign1 < 0) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(-b2, -b1, ignoresign);
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keyword">const</span> detail::data_t *b1data=b1._get_data();
+<a name="l00051"></a>00051 <span class="keyword">const</span> detail::data_t *b2data=b2._get_data();
<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="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>
+<a name="l00053"></a>00053 <span class="keywordtype">int</span> answer=0;
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (b1data->mLength != b2data->mLength) {
+<a name="l00055"></a>00055 answer=((b1data->mLength < b2data->mLength) ? -1 : 1);
+<a name="l00056"></a>00056 } <span class="keywordflow">else</span> {
+<a name="l00057"></a>00057 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = <span class="keywordtype">int</span>(b1data->mLength) - 1; x >= 0; --x) {
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (b1data->digits[x] != b2data->digits[x]) {
+<a name="l00059"></a>00059 answer=((b1data->digits[x] < b2data->digits[x]) ? -1 : 1);
+<a name="l00060"></a>00060 <span class="keywordflow">break</span>;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> answer;
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">operator!</a>(<span class="keyword">const</span> integer &num1) { <span class="keywordflow">return</span> num1.sign()==0; }
+<a name="l00069"></a>00069 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">operator==</a>(<span class="keyword">const</span> integer &num1, <span class="keyword">const</span> integer &num2) {
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)==0; }
+<a name="l00071"></a>00071 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">operator!=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)!=0; }
+<a name="l00073"></a>00073 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">operator<</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00074"></a>00074 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)<0; }
+<a name="l00075"></a>00075 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator></a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)>0; }
+<a name="l00077"></a>00077 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator<=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00078"></a>00078 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)<=0; }
+<a name="l00079"></a>00079 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator>=</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(num1, num2)>=0; }
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 } <span class="comment">// namespace core</span>
+<a name="l00083"></a>00083 } <span class="comment">// namespace xint</span>
+<a name="l00084"></a>00084 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/convert_8cpp.html
==============================================================================
--- sandbox/xint/doc/convert_8cpp.html (original)
+++ sandbox/xint/doc/convert_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,11 +29,6 @@
<h1>convert.cpp File Reference</h1>
<p>Contains the conversion functions.
<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 <vector></code><br/>
-<code>#include <algorithm></code><br/>
-<code>#include <sstream></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -41,30 +36,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core::from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core::to_binary</a> (const integer &n)</td></tr>
-<tr><td 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">boost::xint::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint::from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint::from_binary</a> (const std::string &str)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an <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">boost::xint::to_binary</a> (const integer &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="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an integer, lowest byte first. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the conversion functions. </p>
@@ -73,8 +64,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -52,190 +52,152 @@
<a name="l00038"></a>00038 <span class="keyword">namespace </span>{
<a name="l00039"></a>00039
<a name="l00040"></a>00040 <span class="keywordtype">char</span> nToChar(<span class="keywordtype">int</span> n, <span class="keywordtype">bool</span> upperCase) {
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (n < 10) <span class="keywordflow">return</span> char(n+<span class="charliteral">'0'</span>);
-<a name="l00042"></a>00042 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (upperCase) <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'A'</span>);
-<a name="l00043"></a>00043 <span class="keywordflow">else</span> <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'a'</span>);
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (n < 10) <span class="keywordflow">return</span> char(n+<span class="charliteral">'0'</span>);
+<a name="l00042"></a>00042 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (upperCase) <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'A'</span>);
+<a name="l00043"></a>00043 <span class="keywordflow">else</span> <span class="keywordflow">return</span> char((n - 10) + <span class="charliteral">'a'</span>);
<a name="l00044"></a>00044 }
<a name="l00045"></a>00045
<a name="l00046"></a>00046 } <span class="comment">// namespace</span>
<a name="l00047"></a>00047
<a name="l00048"></a>00048 <span class="keyword">namespace </span>core {
<a name="l00049"></a>00049
-<a name="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="l00068"></a>00068 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> integer& n, <span class="keywordtype">size_t</span> base, <span class="keywordtype">bool</span> uppercase) {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (base<2 || base>36) <span class="keywordflow">throw</span> invalid_base();
<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordflow">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="l00071"></a>00071 <span class="keywordflow">if</span> (n.sign()==0) <span class="keywordflow">return</span> <span class="stringliteral">"0"</span>;
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 std::ostringstream out;
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> (base==16) {
+<a name="l00075"></a>00075 <span class="comment">// Special no-division version, primarily for debugging division</span>
+<a name="l00076"></a>00076 <span class="keyword">const</span> data_t *ndata=n._get_data();
+<a name="l00077"></a>00077 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *firstDigit=ndata->digits,
+<a name="l00078"></a>00078 *lastDigit=firstDigit + ndata->mLength - 1;
<a name="l00079"></a>00079
-<a name="l00080"></a>00080 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="l00080"></a>00080 <span class="keyword">const</span> <span class="keywordtype">int</span> bitsPerDigit=4;
+<a name="l00081"></a>00081 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(1) << bitsPerDigit)-1;
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="comment">// Suppress any leading zeros</span>
+<a name="l00084"></a>00084 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=lastDigit;
+<a name="l00085"></a>00085 <span class="keywordtype">int</span> digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
+<a name="l00086"></a>00086 <span class="keywordflow">while</span> (digitShift >= 0 && ((*d >> digitShift) & mask) == 0)
+<a name="l00087"></a>00087 digitShift -= bitsPerDigit;
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="keywordflow">do</span> {
+<a name="l00090"></a>00090 <span class="keywordflow">while</span> (digitShift >= 0) {
+<a name="l00091"></a>00091 out << nToChar((*d >> digitShift) & mask, uppercase);
+<a name="l00092"></a>00092 digitShift -= bitsPerDigit;
+<a name="l00093"></a>00093 }
<a name="l00094"></a>00094
-<a name="l00095"></a>00095 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="l00095"></a>00095 digitShift=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bitsPerDigit);
+<a name="l00096"></a>00096 } <span class="keywordflow">while</span> (d-- != firstDigit);
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 std::string r(n.sign() < 0 ? std::string(<span class="stringliteral">"-"</span>)+out.str() : out.str());
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> r;
+<a name="l00100"></a>00100 } <span class="keywordflow">else</span> {
+<a name="l00101"></a>00101 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>=base;
+<a name="l00102"></a>00102 std::pair<integer, integer> a=std::make_pair(n, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>());
+<a name="l00103"></a>00103 a.first._set_negative(<span class="keyword">false</span>);
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 integer r;
+<a name="l00106"></a>00106 <span class="keywordflow">while</span> (a.first.sign()!=0) {
+<a name="l00107"></a>00107 a=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(a.first, shift);
+<a name="l00108"></a>00108 out << nToChar(a.second._get_digit(0), uppercase);
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (n.sign() < 0) out << <span class="charliteral">'-'</span>;
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 std::string rval=out.str();
+<a name="l00114"></a>00114 std::reverse(rval.begin(), rval.end());
+<a name="l00115"></a>00115 <span class="keywordflow">return</span> rval;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118
+<a name="l00145"></a>00145 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00146"></a>00146 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>=<span class="keyword">false</span>;
+<a name="l00147"></a>00147 <span class="keyword">const</span> <span class="keywordtype">char</span> *c=str.c_str();
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (*c==<span class="charliteral">'+'</span>) ++c;
+<a name="l00149"></a>00149 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c==<span class="charliteral">'-'</span>) { negate=<span class="keyword">true</span>; ++c; }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> (*c==<span class="charliteral">'0'</span>) {
+<a name="l00153"></a>00153 ++c;
+<a name="l00154"></a>00154 <span class="keywordflow">if</span> (*c==<span class="charliteral">'x'</span> || *c==<span class="charliteral">'X'</span>) {
+<a name="l00155"></a>00155 ++c;
+<a name="l00156"></a>00156 base=16;
+<a name="l00157"></a>00157 } <span class="keywordflow">else</span> base=8;
+<a name="l00158"></a>00158 } <span class="keywordflow">else</span> base=10;
+<a name="l00159"></a>00159 }
<a name="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 }
-<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>
+<a name="l00161"></a>00161 <span class="keywordflow">if</span> (base<2 || base>36) <span class="keywordflow">throw</span> invalid_base();
+<a name="l00162"></a>00162 <span class="keywordflow">if</span> (*c==0) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"No valid digits"</span>);
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="keyword">const</span> integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>(base);
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 integer r;
+<a name="l00167"></a>00167 <span class="keywordflow">while</span> (*c) {
+<a name="l00168"></a>00168 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digit;
+<a name="l00169"></a>00169 <span class="keywordflow">if</span> (*c>=<span class="charliteral">'0'</span> && *c<=<span class="charliteral">'9'</span>) digit=*c-<span class="charliteral">'0'</span>;
+<a name="l00170"></a>00170 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'A'</span> && *c<=<span class="charliteral">'Z'</span>) digit=*c-<span class="charliteral">'A'</span>+10;
+<a name="l00171"></a>00171 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*c>=<span class="charliteral">'a'</span> && *c<=<span class="charliteral">'z'</span>) digit=*c-<span class="charliteral">'a'</span>+10;
+<a name="l00172"></a>00172 <span class="keywordflow">else</span> <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"encountered non-alphanumeric character in "</span>
+<a name="l00173"></a>00173 <span class="stringliteral">"string"</span>);
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (digit >= base) <span class="keywordflow">throw</span> invalid_digit(<span class="stringliteral">"encountered digit greater than "</span>
+<a name="l00176"></a>00176 <span class="stringliteral">"base allows"</span>);
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 r = (r * shift) + digit;
+<a name="l00179"></a>00179 ++c;
+<a name="l00180"></a>00180 }
+<a name="l00181"></a>00181 r._set_negative(negate);
+<a name="l00182"></a>00182 <span class="keywordflow">return</span> r;
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00194"></a>00194 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string& str) {
+<a name="l00195"></a>00195 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
+<a name="l00196"></a>00196 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits<unsigned char>::digits;
+<a name="l00197"></a>00197
+<a name="l00198"></a>00198 integer r;
+<a name="l00199"></a>00199 detail::data_t *rdata=r.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00200"></a>00200 rdata->alloc((str.length() + bytesPerDigit - 1)/bytesPerDigit);
+<a name="l00201"></a>00201 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=rdata->digits;
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s=(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)str.data(), *se=s+str.length();
+<a name="l00204"></a>00204 <span class="keywordflow">while</span> (s<se) {
+<a name="l00205"></a>00205 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d=0;
+<a name="l00206"></a>00206 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<bytesPerDigit && s<se; ++i)
+<a name="l00207"></a>00207 d |= (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(*s++) << (i * bitsPerByte));
+<a name="l00208"></a>00208 *p++=d;
+<a name="l00209"></a>00209 }
+<a name="l00210"></a>00210 rdata->skipLeadingZeros();
+<a name="l00211"></a>00211 <span class="keywordflow">return</span> r;
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213
+<a name="l00233"></a>00233 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00234"></a>00234 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesPerDigit=<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>);
+<a name="l00235"></a>00235 <span class="keyword">const</span> <span class="keywordtype">size_t</span> bitsPerByte=std::numeric_limits<unsigned char>::digits;
+<a name="l00236"></a>00236 std::vector<unsigned char> temp;
+<a name="l00237"></a>00237 temp.reserve(n._get_length() * bytesPerDigit);
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 <span class="keyword">const</span> detail::data_t *ndata=n._get_data();
+<a name="l00240"></a>00240 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p=ndata->digits, *pe=p+n._get_length();
+<a name="l00241"></a>00241 <span class="keywordflow">while</span> (p != pe) {
+<a name="l00242"></a>00242 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d(*p++);
+<a name="l00243"></a>00243 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<bytesPerDigit; ++i) {
+<a name="l00244"></a>00244 temp.push_back((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(d));
+<a name="l00245"></a>00245 d >>= bitsPerByte;
+<a name="l00246"></a>00246 }
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 <span class="keywordflow">while</span> (!temp.empty() && temp.back()==0) temp.pop_back();
+<a name="l00249"></a>00249 <span class="keywordtype">char</span> *c=(<span class="keywordtype">char</span>*)&temp[0];
+<a name="l00250"></a>00250 <span class="keywordflow">return</span> std::string(c, c+temp.size());
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252
+<a name="l00253"></a>00253 } <span class="comment">// namespace core</span>
+<a name="l00254"></a>00254 } <span class="comment">// namespace xint</span>
+<a name="l00255"></a>00255 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/copyonwrite_8dox.html
==============================================================================
--- sandbox/xint/doc/copyonwrite_8dox.html (original)
+++ sandbox/xint/doc/copyonwrite_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/cow.html
==============================================================================
--- sandbox/xint/doc/cow.html (original)
+++ sandbox/xint/doc/cow.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -24,11 +24,11 @@
<div class="contents">
-<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>
+<h1><a class="anchor" id="cow">Copying and Argument-Passing </a></h1><p>By default, the integer classes use copy-on-write, which means that if you copy an integer, the copy and the original share the same storage. They are only assigned separate storage when one of them is changed. This mechanism makes copying an integer (explicitly, by returning it, or by using it as a non-reference parameter to a function) very fast, regardless of its size.</p>
+<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,9 +29,6 @@
<h1>data_t.cpp File Reference</h1>
<p>Contains the definitions for xint::detail::data_t member functions.
<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 <cassert></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -39,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -53,8 +50,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -81,267 +81,287 @@
<a name="l00060"></a>00060 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
<a name="l00061"></a>00061 }
<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="preprocessor">#ifdef XINT_SECURE</span>
-<a name="l00064"></a>00064 <span class="preprocessor"></span>data_t::~data_t() {
-<a name="l00065"></a>00065 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>);
-<a name="l00066"></a>00066 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> != <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>) {
-<a name="l00067"></a>00067 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>);
-<a name="l00068"></a>00068 <span class="keyword">delete</span>[] <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071 <span class="preprocessor">#endif</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span>
-<a name="l00077"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">00077</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">data_t::skipLeadingZeros</a>() {
-<a name="l00078"></a>00078 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-1;
-<a name="l00079"></a>00079 <span class="keywordflow">while</span> (d><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> && *d==0) --d;
-<a name="l00080"></a>00080 mLength=int((d-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>)+1);
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (mLength==1 && <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]==0) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>; <span class="comment">// Zero isn't negative</span>
+<a name="l00064"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a84c1163a2b0a698a74125b4d21f99d12">00064</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t::data_t</a>(boost::uintmax_t n, <span class="keywordtype">bool</span>) {
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keywordtype">int</span> bits=std::numeric_limits<boost::uintmax_t>::digits;
+<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keywordtype">int</span> maxDigits=(bits+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>-1)/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=1;
+<a name="l00069"></a>00069 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>;
+<a name="l00070"></a>00070 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>;
+<a name="l00071"></a>00071 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[1]=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[2]=0;
+<a name="l00072"></a>00072 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>=0;
+<a name="l00073"></a>00073 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>;
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(maxDigits);
+<a name="l00076"></a>00076 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00077"></a>00077 <span class="keywordflow">while</span> (n != 0) {
+<a name="l00078"></a>00078 *i++=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>);
+<a name="l00079"></a>00079 n >>= <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
<a name="l00082"></a>00082 }
<a name="l00083"></a>00083
-<a name="l00084"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">00084</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">data_t::quickset</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3) {
-<a name="l00085"></a>00085 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=3;
-<a name="l00088"></a>00088 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]=d1;
-<a name="l00089"></a>00089 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[1]=d2;
-<a name="l00090"></a>00090 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[2]=d3;
-<a name="l00091"></a>00091 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>;
-<a name="l00092"></a>00092 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">00095</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">data_t::alloc</a>(<span class="keywordtype">size_t</span> newcount, <span class="keywordtype">bool</span> copydigits) {
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>==<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> && newcount<=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>) {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!copydigits) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>);
-<a name="l00098"></a>00098 <span class="keywordflow">else</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, (newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>));
-<a name="l00099"></a>00099 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
-<a name="l00100"></a>00100 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (newcount < <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>) {
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (copydigits) {
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (newcount><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00103"></a>00103 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
-<a name="l00104"></a>00104 } <span class="keywordflow">else</span> {
-<a name="l00105"></a>00105 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
-<a name="l00106"></a>00106 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 } <span class="keywordflow">else</span> {
-<a name="l00109"></a>00109 <span class="preprocessor"> #ifdef XINT_SECURE</span>
-<a name="l00110"></a>00110 <span class="preprocessor"></span> <span class="keywordtype">int</span> e=newcount;
-<a name="l00111"></a>00111 newcount=1;
-<a name="l00112"></a>00112 <span class="keywordflow">while</span> (newcount < e) newcount <<= 1;
-<a name="l00113"></a>00113 <span class="preprocessor"> #endif</span>
-<a name="l00114"></a>00114 <span class="preprocessor"></span>
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>==<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> && copydigits) {
-<a name="l00116"></a>00116 <span class="keywordflow">try</span> {
-<a name="l00117"></a>00117 <span class="preprocessor"> #ifdef XINT_SECURE</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[newcount];
-<a name="l00119"></a>00119 <span class="preprocessor"> #else</span>
-<a name="l00120"></a>00120 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>.resize(newcount);
-<a name="l00121"></a>00121 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=&<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>[0];
-<a name="l00122"></a>00122 <span class="preprocessor"> #endif</span>
-<a name="l00123"></a>00123 <span class="preprocessor"></span> } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00124"></a>00124 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>; <span class="comment">// Might allow for recovery in some cases</span>
-<a name="l00125"></a>00125 <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="l00126"></a>00126 }
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 memcpy(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
-<a name="l00129"></a>00129 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00130"></a>00130 } <span class="keywordflow">else</span> {
-<a name="l00131"></a>00131 <span class="preprocessor"> #ifdef XINT_SECURE</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *newDigits=0;
-<a name="l00133"></a>00133 <span class="keywordflow">try</span> {
-<a name="l00134"></a>00134 newDigits=<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[newcount];
-<a name="l00135"></a>00135 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
-<a name="l00136"></a>00136 <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="l00137"></a>00137 }
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 <span class="keywordflow">if</span> (copydigits) {
-<a name="l00140"></a>00140 memcpy(newDigits, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
-<a name="l00141"></a>00141 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(newDigits+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00142"></a>00142 } <span class="keywordflow">else</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(newDigits, newcount);
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>!=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>) {
-<a name="l00145"></a>00145 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>);
-<a name="l00146"></a>00146 <span class="keyword">delete</span>[] <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=newDigits;
-<a name="l00149"></a>00149 <span class="preprocessor"> #else</span>
-<a name="l00150"></a>00150 <span class="preprocessor"></span> <span class="keywordflow">try</span> {
-<a name="l00151"></a>00151 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>.resize(newcount);
-<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 class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=&<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>[0];
-<a name="l00156"></a>00156 <span class="keywordflow">if</span> (!copydigits) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, newcount);
-<a name="l00157"></a>00157 <span class="preprocessor"> #endif</span>
-<a name="l00158"></a>00158 <span class="preprocessor"></span> }
-<a name="l00159"></a>00159 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=newcount;
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">00163</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">data_t::copy</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c, <span class="keywordtype">size_t</span> extraDigits) {
-<a name="l00164"></a>00164 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+extraDigits);
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00167"></a>00167 <span class="keywordflow">if</span> (c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>==1) *<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> = *c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00168"></a>00168 <span class="keywordflow">else</span> memcpy(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 <span class="comment">// Deliberately doesn't call skipLeadingZeros().</span>
-<a name="l00173"></a>00173 }
-<a name="l00174"></a>00174
-<a name="l00175"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">00175</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">data_t::zero</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, <span class="keywordtype">size_t</span> count) {
-<a name="l00176"></a>00176 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *pe=p+count;
-<a name="l00177"></a>00177 <span class="keywordflow">while</span> (p<pe) *p++=0;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00180"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">00180</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">data_t::invert</a>() {
-<a name="l00181"></a>00181 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=!<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *e=d+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00186"></a>00186 <span class="keywordflow">while</span> (d<e) {
-<a name="l00187"></a>00187 *d=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> - 1 - *d);
-<a name="l00188"></a>00188 ++d;
-<a name="l00189"></a>00189 }
+<a name="l00084"></a>00084 <span class="preprocessor">#ifdef XINT_SECURE</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span>data_t::~data_t() {
+<a name="l00086"></a>00086 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>);
+<a name="l00087"></a>00087 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> != <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>) {
+<a name="l00088"></a>00088 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>);
+<a name="l00089"></a>00089 <span class="keyword">delete</span>[] <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092 <span class="preprocessor">#endif</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span>
+<a name="l00098"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">00098</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">data_t::skipLeadingZeros</a>() {
+<a name="l00099"></a>00099 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-1;
+<a name="l00100"></a>00100 <span class="keywordflow">while</span> (d><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> && *d==0) --d;
+<a name="l00101"></a>00101 mLength=int((d-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>)+1);
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (mLength==1 && <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]==0) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>; <span class="comment">// Zero isn't negative</span>
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00105"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">00105</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">data_t::quickset</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3) {
+<a name="l00106"></a>00106 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=3;
+<a name="l00109"></a>00109 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]=d1;
+<a name="l00110"></a>00110 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[1]=d2;
+<a name="l00111"></a>00111 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[2]=d3;
+<a name="l00112"></a>00112 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=<span class="keyword">false</span>;
+<a name="l00113"></a>00113 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00116"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">00116</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">data_t::alloc</a>(<span class="keywordtype">size_t</span> newcount, <span class="keywordtype">bool</span> copydigits) {
+<a name="l00117"></a>00117 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>==<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> && newcount<=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>) {
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (!copydigits) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html#ae820a83ad097f0cc70ba3f53ea00ab70">QuickDigits::count</a>);
+<a name="l00119"></a>00119 <span class="keywordflow">else</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, (newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>));
+<a name="l00120"></a>00120 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
+<a name="l00121"></a>00121 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (newcount < <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>) {
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (copydigits) {
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (newcount><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00124"></a>00124 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
+<a name="l00125"></a>00125 } <span class="keywordflow">else</span> {
+<a name="l00126"></a>00126 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=newcount;
+<a name="l00127"></a>00127 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 } <span class="keywordflow">else</span> {
+<a name="l00130"></a>00130 <span class="preprocessor"> #ifdef XINT_SECURE</span>
+<a name="l00131"></a>00131 <span class="preprocessor"></span> <span class="keywordtype">int</span> e=newcount;
+<a name="l00132"></a>00132 newcount=1;
+<a name="l00133"></a>00133 <span class="keywordflow">while</span> (newcount < e) newcount <<= 1;
+<a name="l00134"></a>00134 <span class="preprocessor"> #endif</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span>
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>==<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a> && copydigits) {
+<a name="l00137"></a>00137 <span class="keywordflow">try</span> {
+<a name="l00138"></a>00138 <span class="preprocessor"> #ifdef XINT_SECURE</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[newcount];
+<a name="l00140"></a>00140 <span class="preprocessor"> #else</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>.resize(newcount);
+<a name="l00142"></a>00142 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=&<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>[0];
+<a name="l00143"></a>00143 <span class="preprocessor"> #endif</span>
+<a name="l00144"></a>00144 <span class="preprocessor"></span> } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00145"></a>00145 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>; <span class="comment">// Might allow for recovery in some cases</span>
+<a name="l00146"></a>00146 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 memcpy(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
+<a name="l00150"></a>00150 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00151"></a>00151 } <span class="keywordflow">else</span> {
+<a name="l00152"></a>00152 <span class="preprocessor"> #ifdef XINT_SECURE</span>
+<a name="l00153"></a>00153 <span class="preprocessor"></span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *newDigits=0;
+<a name="l00154"></a>00154 <span class="keywordflow">try</span> {
+<a name="l00155"></a>00155 newDigits=<span class="keyword">new</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>[newcount];
+<a name="l00156"></a>00156 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00157"></a>00157 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keywordflow">if</span> (copydigits) {
+<a name="l00161"></a>00161 memcpy(newDigits, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
+<a name="l00162"></a>00162 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(newDigits+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>, newcount-<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00163"></a>00163 } <span class="keywordflow">else</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(newDigits, newcount);
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>!=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#af91f399a0533e8cdf46ac021616e2500">mQuickDigits</a>) {
+<a name="l00166"></a>00166 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>);
+<a name="l00167"></a>00167 <span class="keyword">delete</span>[] <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=newDigits;
+<a name="l00170"></a>00170 <span class="preprocessor"> #else</span>
+<a name="l00171"></a>00171 <span class="preprocessor"></span> <span class="keywordflow">try</span> {
+<a name="l00172"></a>00172 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>.resize(newcount);
+<a name="l00173"></a>00173 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00174"></a>00174 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=&<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8867fdad2325f390790c1188e6f71219">mStorage</a>[0];
+<a name="l00177"></a>00177 <span class="keywordflow">if</span> (!copydigits) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, newcount);
+<a name="l00178"></a>00178 <span class="preprocessor"> #endif</span>
+<a name="l00179"></a>00179 <span class="preprocessor"></span> }
+<a name="l00180"></a>00180 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a02411914c8a9d59e3521b04367352ea5">mAllocated</a>=newcount;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183
+<a name="l00184"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">00184</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">data_t::copy</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c, <span class="keywordtype">size_t</span> extraDigits) {
+<a name="l00185"></a>00185 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+extraDigits);
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00188"></a>00188 <span class="keywordflow">if</span> (c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>==1) *<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> = *c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00189"></a>00189 <span class="keywordflow">else</span> memcpy(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>*<span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>));
<a name="l00190"></a>00190
-<a name="l00191"></a>00191 d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
-<a name="l00192"></a>00192 <span class="keywordflow">while</span> (d<e) {
-<a name="l00193"></a>00193 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> w=(*d)+1;
-<a name="l00194"></a>00194 (*d++)=static_cast<digit_t>(w);
-<a name="l00195"></a>00195 <span class="keywordflow">if</span> (w<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) <span class="keywordflow">break</span>;
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00191"></a>00191 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=c-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="comment">// Deliberately doesn't call skipLeadingZeros().</span>
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195
+<a name="l00196"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">00196</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">data_t::zero</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, <span class="keywordtype">size_t</span> count) {
+<a name="l00197"></a>00197 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *pe=p+count;
+<a name="l00198"></a>00198 <span class="keywordflow">while</span> (p<pe) *p++=0;
<a name="l00199"></a>00199 }
<a name="l00200"></a>00200
-<a name="l00201"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">00201</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">data_t::negate</a>() {
+<a name="l00201"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">00201</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">data_t::invert</a>() {
<a name="l00202"></a>00202 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
<a name="l00203"></a>00203
-<a name="l00204"></a>00204 <span class="comment">// If it's zero, don't change the sign</span>
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>>1 || <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]!=0) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=!<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207
-<a name="l00208"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">00208</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">data_t::add</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& addend) {
-<a name="l00209"></a>00209 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00210"></a>00210 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00204"></a>00204 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=!<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *e=d+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00207"></a>00207 <span class="keywordflow">while</span> (d<e) {
+<a name="l00208"></a>00208 *d=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> - 1 - *d);
+<a name="l00209"></a>00209 ++d;
+<a name="l00210"></a>00210 }
<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="comment">// The answer to any addition problem contains, at most, one digit more</span>
-<a name="l00213"></a>00213 <span class="comment">// than the largest addend.</span>
-<a name="l00214"></a>00214 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+1);
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="comment">// Now add the digits, starting at the least-significant digit.</span>
-<a name="l00217"></a>00217 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> carry=0;
-<a name="l00218"></a>00218 <span class="keywordtype">size_t</span> x=0;
-<a name="l00219"></a>00219 <span class="keywordflow">for</span> (; x<addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>; ++x) {
-<a name="l00220"></a>00220 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x])+addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+carry;
-<a name="l00221"></a>00221 <span class="keywordflow">if</span> (t>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry=1; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; } <span class="keywordflow">else</span> carry=0;
-<a name="l00222"></a>00222 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00223"></a>00223 }
+<a name="l00212"></a>00212 d=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>;
+<a name="l00213"></a>00213 <span class="keywordflow">while</span> (d<e) {
+<a name="l00214"></a>00214 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> w=(*d)+1;
+<a name="l00215"></a>00215 (*d++)=static_cast<digit_t>(w);
+<a name="l00216"></a>00216 <span class="keywordflow">if</span> (w<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) <span class="keywordflow">break</span>;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221
+<a name="l00222"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">00222</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">data_t::negate</a>() {
+<a name="l00223"></a>00223 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
<a name="l00224"></a>00224
-<a name="l00225"></a>00225 <span class="keywordflow">while</span> (carry) {
-<a name="l00226"></a>00226 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x])+1;
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (t>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry=1; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; } <span class="keywordflow">else</span> carry=0;
-<a name="l00228"></a>00228 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00229"></a>00229 ++x;
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234
-<a name="l00235"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">00235</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">data_t::subtract</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& subtrahend) {
-<a name="l00236"></a>00236 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00237"></a>00237 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
-<a name="l00238"></a>00238
-<a name="l00239"></a>00239 <span class="comment">// For subtraction, the answer will always be less than or equal to the</span>
-<a name="l00240"></a>00240 <span class="comment">// size of the longest operand, so we've already got enough room.</span>
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">// Now subtract the digits, starting at the least-significant one.</span>
-<a name="l00243"></a>00243 <span class="keywordtype">size_t</span> x;
-<a name="l00244"></a>00244 <span class="keywordtype">int</span> borrow=0;
-<a name="l00245"></a>00245 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t;
-<a name="l00246"></a>00246 <span class="keywordflow">for</span> (x=0; x<subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>; ++x) {
-<a name="l00247"></a>00247 t=(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>)-subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]-borrow;
-<a name="l00248"></a>00248 if (t<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow=1; <span class="keywordflow">else</span> { borrow=0; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
+<a name="l00225"></a>00225 <span class="comment">// If it's zero, don't change the sign</span>
+<a name="l00226"></a>00226 <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>>1 || <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[0]!=0) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=!<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>;
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">00229</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">data_t::add</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& addend) {
+<a name="l00230"></a>00230 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
+<a name="l00231"></a>00231 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 <span class="comment">// The answer to any addition problem contains, at most, one digit more</span>
+<a name="l00234"></a>00234 <span class="comment">// than the largest addend.</span>
+<a name="l00235"></a>00235 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+1);
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="comment">// Now add the digits, starting at the least-significant digit.</span>
+<a name="l00238"></a>00238 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> carry=0;
+<a name="l00239"></a>00239 <span class="keywordtype">size_t</span> x=0;
+<a name="l00240"></a>00240 <span class="keywordflow">for</span> (; x<addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>; ++x) {
+<a name="l00241"></a>00241 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x])+addend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+carry;
+<a name="l00242"></a>00242 <span class="keywordflow">if</span> (t>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry=1; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; } <span class="keywordflow">else</span> carry=0;
+<a name="l00243"></a>00243 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245
+<a name="l00246"></a>00246 <span class="keywordflow">while</span> (carry) {
+<a name="l00247"></a>00247 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x])+1;
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (t>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) { carry=1; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; } <span class="keywordflow">else</span> carry=0;
<a name="l00249"></a>00249 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="keywordflow">for</span> (; x<<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> && borrow; ++x) {
-<a name="l00253"></a>00253 t=(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>)-borrow;
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (t<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow=1; <span class="keywordflow">else</span> { borrow=0; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
-<a name="l00255"></a>00255 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (borrow) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>();
-<a name="l00259"></a>00259 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00260"></a>00260 }
-<a name="l00261"></a>00261
-<a name="l00262"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">00262</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">data_t::shift_left</a>(<span class="keywordtype">size_t</span> byBits) {
-<a name="l00263"></a>00263 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00264"></a>00264 assert(byBits>0);
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
-<a name="l00267"></a>00267 <span class="keywordtype">size_t</span> oldLength=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+bytes+1);
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="keywordflow">if</span> (bits != 0) {
-<a name="l00272"></a>00272 <span class="comment">// Handle both bits and bytes in one pass</span>
-<a name="l00273"></a>00273 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+oldLength-1, *t=s+bytes+1;
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 *t-- = *s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits);
-<a name="l00276"></a>00276 <span class="keywordflow">while</span> (s > <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>) {
-<a name="l00277"></a>00277 *t = (*s-- << bits);
-<a name="l00278"></a>00278 *t-- |= (*s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits));
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 *t = (*s << bits);
-<a name="l00281"></a>00281
-<a name="l00282"></a>00282 <span class="keywordflow">if</span> (bytes != 0) memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00283"></a>00283 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
-<a name="l00284"></a>00284 memmove(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+bytes, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * oldLength);
-<a name="l00285"></a>00285 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00286"></a>00286 }
-<a name="l00287"></a>00287 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00288"></a>00288 }
+<a name="l00250"></a>00250 ++x;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252
+<a name="l00253"></a>00253 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00254"></a>00254 }
+<a name="l00255"></a>00255
+<a name="l00256"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">00256</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">data_t::subtract</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& subtrahend) {
+<a name="l00257"></a>00257 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
+<a name="l00258"></a>00258 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> >= subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>);
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260 <span class="comment">// For subtraction, the answer will always be less than or equal to the</span>
+<a name="l00261"></a>00261 <span class="comment">// size of the longest operand, so we've already got enough room.</span>
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 <span class="comment">// Now subtract the digits, starting at the least-significant one.</span>
+<a name="l00264"></a>00264 <span class="keywordtype">size_t</span> x;
+<a name="l00265"></a>00265 <span class="keywordtype">int</span> borrow=0;
+<a name="l00266"></a>00266 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t;
+<a name="l00267"></a>00267 <span class="keywordflow">for</span> (x=0; x<subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>; ++x) {
+<a name="l00268"></a>00268 t=(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>)-subtrahend.<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]-borrow;
+<a name="l00269"></a>00269 if (t<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow=1; <span class="keywordflow">else</span> { borrow=0; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
+<a name="l00270"></a>00270 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 <span class="keywordflow">for</span> (; x<<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> && borrow; ++x) {
+<a name="l00274"></a>00274 t=(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]+<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>)-borrow;
+<a name="l00275"></a>00275 <span class="keywordflow">if</span> (t<<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>) borrow=1; <span class="keywordflow">else</span> { borrow=0; t-=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a>; }
+<a name="l00276"></a>00276 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[x]=<span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(t);
+<a name="l00277"></a>00277 }
+<a name="l00278"></a>00278
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (borrow) <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>();
+<a name="l00280"></a>00280 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00281"></a>00281 }
+<a name="l00282"></a>00282
+<a name="l00283"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">00283</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">data_t::shift_left</a>(<span class="keywordtype">size_t</span> byBits) {
+<a name="l00284"></a>00284 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
+<a name="l00285"></a>00285 assert(byBits>0);
+<a name="l00286"></a>00286
+<a name="l00287"></a>00287 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00288"></a>00288 <span class="keywordtype">size_t</span> oldLength=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
<a name="l00289"></a>00289
-<a name="l00290"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">00290</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">data_t::shift_right</a>(<span class="keywordtype">size_t</span> byBits) {
-<a name="l00291"></a>00291 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
-<a name="l00292"></a>00292 assert(byBits>0);
-<a name="l00293"></a>00293
-<a name="l00294"></a>00294 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>,
-<a name="l00295"></a>00295 bits2 = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits;
-<a name="l00296"></a>00296
-<a name="l00297"></a>00297 <span class="keywordflow">if</span> (bytes >= <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) {
-<a name="l00298"></a>00298 <span class="comment">// Right-shift it into oblivion.</span>
-<a name="l00299"></a>00299 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=1;
-<a name="l00300"></a>00300 *<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=0;
-<a name="l00301"></a>00301 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits != 0) {
-<a name="l00302"></a>00302 <span class="comment">// Handle both bits and bytes in one pass</span>
-<a name="l00303"></a>00303 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+bytes, *se=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-1;
-<a name="l00304"></a>00304 <span class="keywordflow">while</span> (s!=se) {
-<a name="l00305"></a>00305 *t = (*s++ >> bits);
-<a name="l00306"></a>00306 *t++ |= (*s << bits2);
-<a name="l00307"></a>00307 }
-<a name="l00308"></a>00308 *t = (*s >> bits);
-<a name="l00309"></a>00309 <span class="keywordflow">if</span> (bytes != 0) {
-<a name="l00310"></a>00310 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+mLength-bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00311"></a>00311 mLength-=bytes;
-<a name="l00312"></a>00312 }
-<a name="l00313"></a>00313 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00314"></a>00314 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
-<a name="l00315"></a>00315 memmove(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> + bytes, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> - bytes));
-<a name="l00316"></a>00316 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> + <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> - bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
-<a name="l00317"></a>00317 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-=bytes;
-<a name="l00318"></a>00318 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00319"></a>00319 }
-<a name="l00320"></a>00320 }
-<a name="l00321"></a>00321
-<a name="l00322"></a>00322 } <span class="comment">// namespace detail</span>
-<a name="l00323"></a>00323 } <span class="comment">// namespace xint</span>
-<a name="l00324"></a>00324 } <span class="comment">// namespace boost</span>
+<a name="l00290"></a>00290 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>+bytes+1);
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 <span class="keywordflow">if</span> (bits != 0) {
+<a name="l00293"></a>00293 <span class="comment">// Handle both bits and bytes in one pass</span>
+<a name="l00294"></a>00294 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *s=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+oldLength-1, *t=s+bytes+1;
+<a name="l00295"></a>00295
+<a name="l00296"></a>00296 *t-- = *s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits);
+<a name="l00297"></a>00297 <span class="keywordflow">while</span> (s > <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>) {
+<a name="l00298"></a>00298 *t = (*s-- << bits);
+<a name="l00299"></a>00299 *t-- |= (*s >> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits));
+<a name="l00300"></a>00300 }
+<a name="l00301"></a>00301 *t = (*s << bits);
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keywordflow">if</span> (bytes != 0) memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
+<a name="l00304"></a>00304 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
+<a name="l00305"></a>00305 memmove(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+bytes, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * oldLength);
+<a name="l00306"></a>00306 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
+<a name="l00307"></a>00307 }
+<a name="l00308"></a>00308 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00309"></a>00309 }
+<a name="l00310"></a>00310
+<a name="l00311"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">00311</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">data_t::shift_right</a>(<span class="keywordtype">size_t</span> byBits) {
+<a name="l00312"></a>00312 assert(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
+<a name="l00313"></a>00313 assert(byBits>0);
+<a name="l00314"></a>00314
+<a name="l00315"></a>00315 <span class="keywordtype">size_t</span> bytes=byBits / <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>, bits=byBits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>,
+<a name="l00316"></a>00316 bits2 = <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a> - bits;
+<a name="l00317"></a>00317
+<a name="l00318"></a>00318 <span class="keywordflow">if</span> (bytes >= <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) {
+<a name="l00319"></a>00319 <span class="comment">// Right-shift it into oblivion.</span>
+<a name="l00320"></a>00320 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>=1;
+<a name="l00321"></a>00321 *<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>=0;
+<a name="l00322"></a>00322 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits != 0) {
+<a name="l00323"></a>00323 <span class="comment">// Handle both bits and bytes in one pass</span>
+<a name="l00324"></a>00324 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *t=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, *s=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+bytes, *se=<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-1;
+<a name="l00325"></a>00325 <span class="keywordflow">while</span> (s!=se) {
+<a name="l00326"></a>00326 *t = (*s++ >> bits);
+<a name="l00327"></a>00327 *t++ |= (*s << bits2);
+<a name="l00328"></a>00328 }
+<a name="l00329"></a>00329 *t = (*s >> bits);
+<a name="l00330"></a>00330 <span class="keywordflow">if</span> (bytes != 0) {
+<a name="l00331"></a>00331 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>+mLength-bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
+<a name="l00332"></a>00332 mLength-=bytes;
+<a name="l00333"></a>00333 }
+<a name="l00334"></a>00334 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00335"></a>00335 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes != 0) {
+<a name="l00336"></a>00336 memmove(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> + bytes, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * (<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> - bytes));
+<a name="l00337"></a>00337 memset(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a> + <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a> - bytes, 0, <span class="keyword">sizeof</span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>) * bytes);
+<a name="l00338"></a>00338 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>-=bytes;
+<a name="l00339"></a>00339 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00340"></a>00340 }
+<a name="l00341"></a>00341 }
+<a name="l00342"></a>00342
+<a name="l00343"></a>00343 } <span class="comment">// namespace detail</span>
+<a name="l00344"></a>00344 } <span class="comment">// namespace xint</span>
+<a name="l00345"></a>00345 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/dependencies.html
==============================================================================
--- sandbox/xint/doc/dependencies.html (original)
+++ sandbox/xint/doc/dependencies.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -36,8 +36,8 @@
</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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/dependencies_8dox.html
==============================================================================
--- sandbox/xint/doc/dependencies_8dox.html (original)
+++ sandbox/xint/doc/dependencies_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/dox/Doxyfile
==============================================================================
--- sandbox/xint/doc/dox/Doxyfile (original)
+++ sandbox/xint/doc/dox/Doxyfile 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -1,4 +1,4 @@
-# Doxyfile 1.5.8
+# Doxyfile 1.6.3
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@@ -54,11 +54,11 @@
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
-# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
-# Spanish, Swedish, and Ukrainian.
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
OUTPUT_LANGUAGE = English
@@ -225,7 +225,8 @@
# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
-# use: inc=Fortran f=C
+# use: inc=Fortran f=C. Note that for custom extensions you also need to set
+# FILE_PATTERNS otherwise the files are not read by doxygen.
EXTENSION_MAPPING =
@@ -395,7 +396,13 @@
# will put a list of the files that are included by a file in the documentation
# of that file.
-SHOW_INCLUDE_FILES = YES
+SHOW_INCLUDE_FILES = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members.
@@ -416,11 +423,21 @@
SORT_BRIEF_DOCS = NO
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
# hierarchy of group names into alphabetical order. If set to NO (the default)
# the group names will appear in their defined order.
-SORT_GROUP_NAMES = NO
+SORT_GROUP_NAMES = YES
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
# sorted by fully-qualified names, including namespaces. If set to
@@ -521,7 +538,7 @@
# The QUIET tag can be used to turn on/off the messages that are generated
# by doxygen. Possible values are YES and NO. If left blank NO is used.
-QUIET = NO
+QUIET = YES
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
@@ -830,6 +847,12 @@
HTML_STYLESHEET =
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP = YES
+
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
@@ -931,7 +954,7 @@
# Qt Help Project output. For more information please see
# http://doc.trolltech.com/qthelpproject.html#namespace
-QHP_NAMESPACE =
+QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
@@ -963,6 +986,23 @@
QHG_LOCATION =
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+# will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
# top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it.
@@ -976,20 +1016,18 @@
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
-# If the tag value is set to FRAME, a side panel will be generated
+# If the tag value is set to YES, a side panel will be generated
# containing a tree-like index structure (just like the one that
# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature. Other possible values
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list;
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with previous
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
-# respectively.
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
-GENERATE_TREEVIEW = NONE
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
@@ -1005,6 +1043,26 @@
FORMULA_FONTSIZE = 10
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE = NO
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvances is that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH = NO
+
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
@@ -1021,7 +1079,10 @@
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
LATEX_CMD_NAME = latex
@@ -1081,6 +1142,13 @@
LATEX_HIDE_INDICES = NO
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
@@ -1232,7 +1300,7 @@
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
+# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
@@ -1298,7 +1366,7 @@
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
-# Configuration::additions related to external references
+# Configuration::additions related to external references
#---------------------------------------------------------------------------
# The TAGFILES option can be used to specify one or more tagfiles.
@@ -1341,7 +1409,7 @@
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
+# Configuration options related to the dot tool
#---------------------------------------------------------------------------
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
@@ -1533,12 +1601,3 @@
# the various graphs.
DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Options related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
Modified: sandbox/xint/doc/dox/acknowledgements.dox
==============================================================================
--- sandbox/xint/doc/dox/acknowledgements.dox (original)
+++ sandbox/xint/doc/dox/acknowledgements.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,8 +2,8 @@
Several people have helped me improve the XInt library. Particular thanks go to
Paul Bristow, for...
-- Pointing out the need for a specialization of \c std::numeric_limits for \c
-xint::integer;
+- Pointing out the need for a specialization of \c std::numeric_limits for the
+library-provided types;
- Spending a great deal of time and effort to introduce me to the Boost.Test
framework and Doxygen/QuickBook;
- Providing test cases and documentation tweaks;
@@ -29,6 +29,7 @@
- Peter Dimov, for suggesting a separate \c xint::overflow_error exception
class.
- "Fred," a.k.a. "Gottlob Frege", for information on infinities.
+- Joachim Faulhaber for a discussion of intervals and interval containers.
And the other Boost development list members who joined the discussion:
Modified: sandbox/xint/doc/dox/copyonwrite.dox
==============================================================================
--- sandbox/xint/doc/dox/copyonwrite.dox (original)
+++ sandbox/xint/doc/dox/copyonwrite.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -1,12 +1,12 @@
/*! \page cow Copying and Argument-Passing
-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
+By default, the integer classes use copy-on-write, which means that if you copy
+an integer, the copy and the original share the same storage. They are only
assigned separate storage when one of them is changed. This mechanism makes
copying an integer (explicitly, by returning it, or by using it as a
non-reference parameter to a function) very fast, regardless of its size.
-(Unfortunately, this makes thread-safe operation impossible. If you need to use
+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 \link threadsafe the thread-safe option\endlink.
+with \ref threadsafe "the thread-safe option".
*/
Modified: sandbox/xint/doc/dox/dependencies.dox
==============================================================================
--- sandbox/xint/doc/dox/dependencies.dox (original)
+++ sandbox/xint/doc/dox/dependencies.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -10,8 +10,8 @@
- Boost.Random
- Boost.TypeTraits
- Boost.SmartPointers
-- Boost.Thread (but only if the library was compiled for \link threadsafe
-thread-safe operation\endlink)
+- Boost.Thread (but only if the library was compiled for \ref threadsafe
+"thread-safe operation")
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.
Modified: sandbox/xint/doc/dox/exceptions.dox
==============================================================================
--- sandbox/xint/doc/dox/exceptions.dox (original)
+++ sandbox/xint/doc/dox/exceptions.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -11,40 +11,37 @@
\section howitworks How it Works
-When exceptions are blocked, any function that would normally throw a blockable
-exception will return a special value indicating failure instead. For functions
-that return an xint::integer, this will be \link nan the Not-a-Number
-value\endlink; for other functions, the value will be noted in the
+When exceptions are blocked, any function from the \c xint::blockable namespace
+that would normally throw an exception will return a special value indicating
+failure instead. For functions that return an integer, this will be \ref nan
+"the Not-a-Number value"; for other functions, the value will be noted in the
documentation.
-Note that, while most exceptions can be blocked, a few are unblockable, by
-design.
-
\warning
-When exceptions are blocked, \e any function can return Not-a-Number under
-certain conditions, not just the ones listed as throwing exceptions. An
-insufficient-memory exception (xint::overflow_error), for instance, can happen
-nearly anywhere.
+When exceptions are blocked, \e any function in the \c xint::blockable namespace
+can return Not-a-Number under certain conditions, not just the ones listed as
+throwing exceptions directly. An insufficient-memory exception
+(<code>xint::overflow_error</code>), for instance, can happen nearly anywhere.
\section howtouse How to Use the Functions
By default, the library throws exceptions when it can't complete the task you've
asked it to do, and there's no other logical way to indicate an error. But when
-it is more convenient, most of the exceptions that the library might throw can
-be blocked, by holding the xint::token object returned by the
-xint::block_exceptions function. Here's an example (which can be found in the
-\c examples subdirectory as exceptions.cpp):
+it is more convenient, most of those exceptions can be blocked, by holding the
+\c xint::token object returned by the \c xint::block_exceptions function, and
+using the \c blockable::integer type. Here's an example, which can be found in
+the \c examples subdirectory as exceptions.cpp:
\include exceptions.cpp
If you need to ensure that exceptions are allowed, in one of your own functions
-that might be called with them blocked, you can hold the xint::token object
-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
+that might be called with them blocked, you can hold the \c xint::token object
+returned by \c xint::allow_exceptions. It works the same way. Alternatively, you
+can use the functions in the \c xint::core namespace, which are immune to
exception-blocking.
-xint::token objects should always be created on the stack, so that they are
+\c xint::token objects should always be created on the stack, so that they are
guaranteed to be destroyed in reverse order. If they are not, or if they are
copied elsewhere, the results are undefined.
*/
Modified: sandbox/xint/doc/dox/history.dox
==============================================================================
--- sandbox/xint/doc/dox/history.dox (original)
+++ sandbox/xint/doc/dox/history.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -15,4 +15,17 @@
\b 2010-03-30
- Many improvements, primarily from feedback on the first Boost upload. Second
version posted to the Boost File Vault.
+
+\b 2010-04-?? (updated through 10th)
+- Major refactoring, separating xint::integer into two classes, each with their
+own namespace (xint::core and xint::blockable), and their own functions.
+- Fixed problem with MSVC 9.
+- Major overhaul of the division function.
+- All test functions now use Boost.Test.
+- "Fixed" several small memory leaks. They weren't real leaks, but Boost.Test
+couldn't tell that.
+- All documentation moved to Doxygen format.
+- Moved xint namespace into boost namespace.
+- Fixed minor stream-output formatting problem (the code wasn't aware of the \c
+showpos stream option).
*/
Modified: sandbox/xint/doc/dox/index.dox
==============================================================================
--- sandbox/xint/doc/dox/index.dox (original)
+++ sandbox/xint/doc/dox/index.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -20,14 +20,15 @@
\li <b>Because it's completely portable.</b> It's written entirely in modern
C++, with many different types of operating system, compiler, and hardware in
mind. It will compile cleanly on many operating systems without any changes,
-automatically adapting to whatever native integer sizes are available.
+automatically adapting to the most efficient native integer sizes available.
\li <b>Because it's fast.</b> Speed of execution takes a back seat to
portability, so it doesn't include things like assembly-language modules to
wring every last CPU cycle out of it -- but it's still pretty darn fast.
\li <b>Because it has the features you need.</b> Modular arithmetic.
-Cryptographically-secure prime number generation. Bit manipulation functions. A
-friendly and intuitive interface. An option for thread-safe operation. Complete
-and carefully maintained documentation. What more could you want?
+Cryptographically-secure prime number generation. Bit manipulation functions.
+Exception- or error-code-based operation. A friendly and intuitive interface. An
+option for thread-safe operation. Complete and carefully maintained
+documentation. What more could you want?
\li <b>Because it's open-source.</b> You can see exactly how it works. You can
never be left high and dry because the company that made it goes out of
business, or decides that it's not profitable to maintain it. If you find a bug
@@ -44,9 +45,9 @@
That's the best part. If you've installed or compiled the Boost library already,
all you need to do is add <code>\#include \<boost/xint/xint.hpp\></code> at the
top of your source code file, and declare your variable as type \c
-boost::xint::integer. Then just use it the way you'd use any integer. If you
-need something more advanced, take a look in \link boost::xint the reference
-section\endlink and you just might find it.
+boost::xint::core::integer. Then just use it the way you'd use any integer. If
+you need something more advanced, take a look in \ref boost::xint
+"the reference section" and you just might find it.
More information on how to use it can be found on the pages listed below.
Modified: sandbox/xint/doc/dox/nan.dox
==============================================================================
--- sandbox/xint/doc/dox/nan.dox (original)
+++ sandbox/xint/doc/dox/nan.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,20 +2,21 @@
Sometimes it's useful for a variable to have a value that doesn't represent any
proper value, to indicate that it hasn't been specified or that there was an
-error in a calculation. For that purpose, the \c xint::integer class provides
-Not-a-Number.
+error in a calculation. For that purpose, the XInt library provides
+Not-a-Number (which can only be represented by the blockable::integer type).
-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 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#".
+To create a Not-a-Number, use the blockable::integer::nan function. No other
+library function will return a Not-a-Number except under the following
+circumstances:
+
+- If a function that returns a \c blockable::integer tries to throw an
+exception, but exceptions are blocked.
+- If the string-to-integer functions in the \c blockable namespace are asked to
+convert the string \c "#NaN#".
The only things you can do with a Not-a-Number are:
-- Test for it, using the member function integer::is_nan.
+- Test for it, using the member function blockable::integer::is_nan.
- Convert it to a string, or write it to a stream. The result will be the string
\c "#NaN#".
- Make a copy of it.
@@ -23,6 +24,6 @@
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).
+calling returns a <code>blockable::integer</code>).
*/
Modified: sandbox/xint/doc/dox/primes.dox
==============================================================================
--- sandbox/xint/doc/dox/primes.dox (original)
+++ sandbox/xint/doc/dox/primes.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -4,12 +4,12 @@
encryption, and the algorithms for such encryption often require large prime
numbers.
-With larger bit-sizes, the xint::is_prime and xint::random_prime functions can
-take a very long time to run, so you can pass an optional callback function to
-them as well. The provided callback function (which takes no parameters and
-returns a <code>bool</code>) will be called regularly during this time, and if
-it returns \c false, the function will abort and return zero (for random_prime)
-or -1 (for is_prime) instead of a value.
+With larger bit-sizes, the \c is_prime and \c random_prime functions can take a
+very long time to run, so you can pass an optional callback function to them as
+well. The provided callback function (which takes no parameters and returns a
+<code>bool</code>) will be called regularly during this time, and if it returns
+\c false, the function will abort and return zero (for random_prime) or -1 (for
+is_prime) instead of a value.
Here is an example of how to use the library functions to create a prime number
of a specific length, using the system's strong random number generator:
Modified: sandbox/xint/doc/dox/r_core.dox
==============================================================================
--- sandbox/xint/doc/dox/r_core.dox (original)
+++ sandbox/xint/doc/dox/r_core.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -1,4 +1,4 @@
-/*! \page r_core What's with the \c core namespace?
+/*! \page r_core What's with the \c core and \c blockable namespaces?
Several people on the Boost developers' mailing list expressed reservations
about the exception-blocking mechanism and the Not-a-Number value. After a
@@ -11,19 +11,19 @@
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.
+compromise: two \c integer classes, one that would always contain a valid
+%integer value and would be immune to exception-blocking, and one that would
+honor exception-blocking and could hold the Not-a-Number value. These now reside
+in the \c xint::core and \c xint::blockable namespaces.
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
+that the Not-a-Number value only needs to be checked for in a single \c
+xint::core::integer constructor, and all but eliminates any speed penalty from
+it. It also gives a base of functions that are immune to the exception-blocking
mechanism, which provides firm ground to build other libraries on.
-Every function in the \c xint namespace calls its \c core counterpart in a
+Every function in the \c blockable namespace calls its \c core counterpart in a
try/catch construct, allowing it to intercept any exceptions and either pass
them through (if exceptions are allowed) or take some alternate action, such as
returning a Not-a-Number value. That preserves the exception-blocking feature as
Modified: sandbox/xint/doc/dox/r_cow.dox
==============================================================================
--- sandbox/xint/doc/dox/r_cow.dox (original)
+++ sandbox/xint/doc/dox/r_cow.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -6,8 +6,8 @@
copy-on-write stuff.) It is also more CPU- and memory-efficient.
It \e does 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 \link
-threadsafe thread-safe mode\endlink, which ensures that every \c integer gets
-its own unique storage, among other things. You still have to ensure that only
-one thread accesses a particular \c integer at a time.
+at the same time. To deal with that, the library can be compiled in a \ref
+threadsafe "thread-safe mode", which ensures that every \c integer gets its own
+unique storage, among other things. You still have to ensure that only one
+thread accesses a particular \c integer at a time.
*/
Modified: sandbox/xint/doc/dox/r_insecure_default.dox
==============================================================================
--- sandbox/xint/doc/dox/r_insecure_default.dox (original)
+++ sandbox/xint/doc/dox/r_insecure_default.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -1,7 +1,7 @@
/*! \page r_insecure_default But why default to an insecure random number generator? Why not default to the secure one?
-Because the secure one isn't available on all systems. If I relied on
-\c random_device as a default, the library wouldn't compile under those systems.
-If I used \c xint::strong_random_generator, it would compile, but would always
-fail on them.
+Because the secure one isn't available on all systems. If the library relied on
+\c random_device as a default, it wouldn't compile under those systems. If it
+used \c xint::strong_random_generator, it would compile, but would always fail
+on them.
*/
Modified: sandbox/xint/doc/dox/r_negzero.dox
==============================================================================
--- sandbox/xint/doc/dox/r_negzero.dox (original)
+++ sandbox/xint/doc/dox/r_negzero.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -9,6 +9,6 @@
number does have a sign. But mathematically, a negative zero is simply zero.
The concept of infinity (in either direction) comes up very rarely in an integer
-library. Since infinity is a concept, not a countable value, it's simply
-represented by the Not-a-Number value in the few places that it might be needed.
+library. Since infinity is a concept, not a countable value, it is not included
+in the library at present.
*/
Modified: sandbox/xint/doc/dox/random.dox
==============================================================================
--- sandbox/xint/doc/dox/random.dox (original)
+++ sandbox/xint/doc/dox/random.dox 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -1,15 +1,15 @@
/*! \page random The XInt Random Number System
-The library includes a random number system to support the xint::random_prime
+The library includes a random number system to support the \c xint::random_prime
function. The default random number generator is \e not cryptographically secure
-(see \link rationale the rationale page\endlink for details). However, the
-system can easily be configured to use a cryptographically-secure generator.
+(see \ref rationale "the rationale page" for details). However, the system can
+easily be configured to use a cryptographically-secure generator.
-The XInt library provides a convenience class, xint::strong_random_generator,
+The XInt library provides a convenience class, \c xint::strong_random_generator,
for both Windows and UNIX-derived systems. It will throw an exception of type
-xint::no_strong_random if you try to instantiate it on a system that does not
+\c xint::no_strong_random if you try to instantiate it on a system that does not
have a strong random number generator.
-See the code at the top of \link primes the Prime Numbers page\endlink for an
-example of how to use it.
+See the code at the top of \ref primes "the Prime Numbers page" for an example
+of how to use it.
*/
Modified: sandbox/xint/doc/doxygen.css
==============================================================================
--- sandbox/xint/doc/doxygen.css (original)
+++ sandbox/xint/doc/doxygen.css 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -31,7 +31,7 @@
-webkit-column-count: 3;
}
-p.startli, p.startdd {
+p.startli, p.startdd, p.starttd {
margin-top: 2px;
}
@@ -43,6 +43,10 @@
margin-bottom: 4px;
}
+p.endtd {
+ margin-bottom: 2px;
+}
+
/* @end */
caption {
@@ -54,6 +58,11 @@
text-align: center;
}
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
div.qindex, div.navtab{
background-color: #e8eef2;
border: 1px solid #84b0c7;
@@ -110,9 +119,11 @@
}
a.code {
+ color: #3030f0;
}
a.codeRef {
+ color: #3030f0;
}
/* @end */
@@ -131,6 +142,10 @@
background-color: #f5f5f5;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
}
div.ah {
@@ -288,11 +303,15 @@
}
hr {
- height: 0;
+ height: 0px;
border: none;
border-top: 1px solid #666;
}
+hr.footer {
+ height: 1px;
+}
+
/* @group Member Descriptions */
.mdescLeft, .mdescRight,
@@ -350,37 +369,46 @@
}
.memname {
- white-space: nowrap;
- font-weight: bold;
-}
-
-.memproto, .memdoc {
- border: 1px solid #84b0c7;
+ white-space: nowrap;
+ font-weight: bold;
+ margin-left: 6px;
}
.memproto {
- padding: 0;
- background-color: #d5e1e8;
- font-weight: bold;
- -webkit-border-top-left-radius: 8px;
- -webkit-border-top-right-radius: 8px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -moz-border-radius-topleft: 8px;
- -moz-border-radius-topright: 8px;
+ border-top: 1px solid #84b0c7;
+ border-left: 1px solid #84b0c7;
+ border-right: 1px solid #84b0c7;
+ padding: 0;
+ background-color: #d5e1e8;
+ font-weight: bold;
+ /* firefox specific markup */
+ background-image: -moz-linear-gradient(rgba(228, 233, 245, 1.0) 0%, rgba(193, 205, 232, 1.0) 100%);
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 8px;
+ -moz-border-radius-topleft: 8px;
+ /* webkit specific markup */
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(228, 233, 245, 1.0)), to(rgba(193, 205, 232, 1.0)));
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 8px;
+ -webkit-border-top-left-radius: 8px;
}
.memdoc {
- padding: 2px 5px;
- background-color: #eef3f5;
- border-top-width: 0;
- -webkit-border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -moz-border-radius-bottomleft: 8px;
- -moz-border-radius-bottomright: 8px;
+ border-bottom: 1px solid #84b0c7;
+ border-left: 1px solid #84b0c7;
+ border-right: 1px solid #84b0c7;
+ padding: 2px 5px;
+ background-color: #eef3f5;
+ border-top-width: 0;
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 8px;
+ -moz-border-radius-bottomright: 8px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 8px;
+ -webkit-border-bottom-right-radius: 8px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.paramkey {
@@ -496,3 +524,22 @@
font-style: normal;
color: #333;
}
+
+table.doxtable {
+ border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #153788;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #254798;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+}
+
Copied: sandbox/xint/doc/ex__fibonacci.html (from r61199, /sandbox/xint/doc/ex_fibonacci.html)
==============================================================================
--- /sandbox/xint/doc/ex_fibonacci.html (original)
+++ sandbox/xint/doc/ex__fibonacci.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -31,7 +31,7 @@
<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></span>
<span class="keywordtype">int</span> main() {
- <span class="keyword">using</span> xint::integer;
+ <span class="keyword">using namespace </span>xint::core;
<span class="keyword">using</span> std::cout;
<span class="keyword">using</span> std::endl;
@@ -43,7 +43,7 @@
integer n, n1=0, n2=1;
<span class="comment">// Now count the items in the sequence as we iterate over them, until we</span>
- <span class="comment">// come to the first one greater than the limit we've set.</span>
+ <span class="comment">// come to the first one greater than the limit we've set.</span>
<span class="keywordtype">size_t</span> counter=0;
cout << counter++ << <span class="stringliteral">": "</span> << n1 << endl;
cout << counter++ << <span class="stringliteral">": "</span> << n2 << endl;
@@ -52,7 +52,7 @@
n = n1 + n2;
<span class="keywordflow">if</span> (n > limit) <span class="keywordflow">break</span>;
- <span class="comment">// That one didn't do it, go back for another try.</span>
+ <span class="comment">// That one didn't do it, go back for another try.</span>
cout << counter++ << <span class="stringliteral">": "</span> << n << endl;
n1=n2;
@@ -65,8 +65,8 @@
</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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/ex_fibonacci.html
==============================================================================
--- sandbox/xint/doc/ex_fibonacci.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Fibonacci Numbers</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>
- </div>
-</div>
-<div class="contents">
-
-
-<h1><a class="anchor" id="ex_fibonacci">Fibonacci Numbers </a></h1><p>Fibonacci numbers are a sequence of numbers, starting with the numbers 0 and 1, where each successive number is the sum of the previous two. The first few Fibonacci numbers are:</p>
-<p><code>0 1 1 2 3 5 8 13 21 34 55 89 144...</code></p>
-<p>You might be curious what the first Fibonacci number is that's too big to calculate using the standard C++ <code>unsigned long</code> type. A brute-force method of calculating this would be problematic, since it might not be possible to tell when it overflows. But with the XInt library, it's child's play:</p>
-<div class="fragment"><pre class="fragment"><span class="preprocessor">#include <iostream></span>
-<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></span>
-
-<span class="keywordtype">int</span> main() {
- <span class="keyword">using</span> xint::integer;
- <span class="keyword">using</span> std::cout;
- <span class="keyword">using</span> std::endl;
-
- <span class="comment">// Select the limit, in this case the largest number that will fit into an</span>
- <span class="comment">// unsigned long.</span>
- integer limit=(std::numeric_limits<unsigned long>::max)();
-
- <span class="comment">// Set the first two numbers in the sequence.</span>
- integer n, n1=0, n2=1;
-
- <span class="comment">// Now count the items in the sequence as we iterate over them, until we</span>
- <span class="comment">// come to the first one greater than the limit we've set.</span>
- <span class="keywordtype">size_t</span> counter=0;
- cout << counter++ << <span class="stringliteral">": "</span> << n1 << endl;
- cout << counter++ << <span class="stringliteral">": "</span> << n2 << endl;
-
- <span class="keywordflow">while</span> (1) {
- n = n1 + n2;
- <span class="keywordflow">if</span> (n > limit) <span class="keywordflow">break</span>;
-
- <span class="comment">// That one didn't do it, go back for another try.</span>
- cout << counter++ << <span class="stringliteral">": "</span> << n << endl;
-
- n1=n2;
- n2=n;
- }
-
- cout << <span class="stringliteral">"The answer is "</span> << counter << <span class="stringliteral">" ("</span> << n << <span class="stringliteral">")."</span> << endl;
-}
-
-</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 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/exception__blocker_8cpp.html
==============================================================================
--- sandbox/xint/doc/exception__blocker_8cpp.html (original)
+++ sandbox/xint/doc/exception__blocker_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,7 +29,6 @@
<h1>exception_blocker.cpp File Reference</h1>
<p>Contains the definitions for the exception-blocker classes and functions.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -37,13 +36,13 @@
<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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">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>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">boost::xint::exceptions_allowed</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Query whether exceptions are currently allowed or blocked. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">token </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint::block_exceptions</a> ()</td></tr>
@@ -72,8 +71,8 @@
</div>
</div>
</div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -92,8 +92,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/exceptions.html
==============================================================================
--- sandbox/xint/doc/exceptions.html (original)
+++ sandbox/xint/doc/exceptions.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,13 +29,12 @@
<p>This library includes a mechanism for preventing most exceptions from being thrown. This was added to give you, the developer using the library, maximum flexibility in dealing with its functions. You can choose to deal with errors by catching exceptions or by checking returned values for error codes, on a case-by-case basis, depending on which would make for easier or more readable code.</p>
<h2><a class="anchor" id="howitworks">
How it Works</a></h2>
-<p>When exceptions are blocked, any function that would normally throw a blockable exception will return a special value indicating failure instead. For functions that return an xint::integer, this will be <a class="el" href="nan.html">the Not-a-Number value</a>; for other functions, the value will be noted in the documentation.</p>
-<p>Note that, while most exceptions can be blocked, a few are unblockable, by design.</p>
+<p>When exceptions are blocked, any function from the <code>xint::blockable</code> namespace that would normally throw an exception will return a special value indicating failure instead. For functions that return an integer, this will be <a class="el" href="nan.html">the Not-a-Number value</a>; for other functions, the value will be noted in the documentation.</p>
<dl class="warning"><dt><b>Warning:</b></dt><dd></dd></dl>
-<p>When exceptions are blocked, <em>any</em> function can return Not-a-Number under certain conditions, not just the ones listed as throwing exceptions. An insufficient-memory exception (xint::overflow_error), for instance, can happen nearly anywhere.</p>
+<p>When exceptions are blocked, <em>any</em> function in the <code>xint::blockable</code> namespace can return Not-a-Number under certain conditions, not just the ones listed as throwing exceptions directly. An insufficient-memory exception (<code>xint::overflow_error</code>), for instance, can happen nearly anywhere.</p>
<h2><a class="anchor" id="howtouse">
How to Use the Functions</a></h2>
-<p>By default, the library throws exceptions when it can't complete the task you've asked it to do, and there's no other logical way to indicate an error. But when it is more convenient, most of the exceptions that the library might throw can be blocked, by holding the xint::token object returned by the xint::block_exceptions function. Here's an example (which can be found in the <code>examples</code> subdirectory as exceptions.cpp):</p>
+<p>By default, the library throws exceptions when it can't complete the task you've asked it to do, and there's no other logical way to indicate an error. But when it is more convenient, most of those exceptions can be blocked, by holding the <code>xint::token</code> object returned by the <code>xint::block_exceptions</code> function, and using the <code>blockable::integer</code> type. Here's an example, which can be found in the <code>examples</code> subdirectory as exceptions.cpp:</p>
<div class="fragment"><pre class="fragment">
<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></span>
<span class="preprocessor">#include <ostream></span>
@@ -43,18 +42,18 @@
<span class="keywordtype">int</span> main() {
<span class="keyword">using namespace </span>std;
<span class="keyword">using namespace </span>boost;
- <span class="keyword">using</span> xint::integer;
+ <span class="keyword">using namespace </span>xint::blockable;
integer n;
<span class="comment">// It *is* possible to block exceptions multiple times, so this assert</span>
- <span class="comment">// checks to see whether they're presently allowed. It is not needed,</span>
- <span class="comment">// it's only here for demonstration purposes.</span>
+ <span class="comment">// checks to see whether they're presently allowed. It is not needed,</span>
+ <span class="comment">// it's only here for demonstration purposes.</span>
assert(<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">xint::exceptions_allowed</a>() == <span class="keyword">true</span>);
- <span class="comment">// We'll wrap this in a try block for demonstration purposes, just to</span>
- <span class="comment">// prove that it doesn't throw an exception. You normally don't need a</span>
- <span class="comment">// try block if you're only expecting blockable exceptions.</span>
+ <span class="comment">// We'll wrap this in a try block for demonstration purposes, just to</span>
+ <span class="comment">// prove that it doesn't throw an exception. You normally don't need a</span>
+ <span class="comment">// try block if you're only expecting blockable exceptions.</span>
<span class="keywordflow">try</span> {
<span class="comment">// Create the "blocker" token. Until the token is destroyed, exceptions</span>
<span class="comment">// will be blocked, except when explicitly re-enabled.</span>
@@ -78,7 +77,7 @@
} <span class="keywordflow">else</span> {
<span class="comment">// This example code should never get to this block, but you would</span>
<span class="comment">// usually put the normal program flow code here.</span>
- cout << <span class="stringliteral">"Error, n should be Not-a-Number and it isn't!"</span> << endl;
+ cout << <span class="stringliteral">"Error, n should be Not-a-Number and it isn't!"</span> << endl;
}
} <span class="keywordflow">catch</span> (std::exception& e) {
<span class="comment">// This example code should never get to this block, because exceptions</span>
@@ -89,14 +88,14 @@
<span class="comment">// Now exceptions are re-enabled, because the blocking behavior ended when</span>
<span class="comment">// the "blocker" token was destroyed at the end of the try block. Note that</span>
- <span class="comment">// this assert is not needed, it's only here for demonstration purposes.</span>
+ <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. 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>
+</pre></div><p>If you need to ensure that exceptions are allowed, in one of your own functions that might be called with them blocked, you can hold the <code>xint::token</code> object returned by <code>xint::allow_exceptions</code>. It works the same way. Alternatively, you can use the functions in the <code>xint::core</code> namespace, which are immune to exception-blocking.</p>
+<p><code>xint::token</code> objects should always be created on the stack, so that they are guaranteed to be destroyed in reverse order. If they are not, or if they are copied elsewhere, the results are undefined. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/exceptions_8dox.html
==============================================================================
--- sandbox/xint/doc/exceptions_8dox.html (original)
+++ sandbox/xint/doc/exceptions_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/files.html
==============================================================================
--- sandbox/xint/doc/files.html (original)
+++ sandbox/xint/doc/files.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -32,6 +32,19 @@
<tr><td class="indexkey"><a class="el" href="xint__monty_8hpp.html">xint_monty.hpp</a> [code]</td><td class="indexvalue">Internally-used functions </td></tr>
<tr><td class="indexkey"><a class="el" href="xint__test_8hpp.html">xint_test.hpp</a> [code]</td><td class="indexvalue">Declares the library's self-testing functions </td></tr>
<tr><td class="indexkey"><a class="el" href="bit__manipulations_8cpp.html">bit_manipulations.cpp</a> [code]</td><td class="indexvalue">Contains the bit-manipulation functions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__bit__manipulations_8cpp.html">blockable_bit_manipulations.cpp</a> [code]</td><td class="indexvalue">Contains the bit-manipulation functions for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__compare_8cpp.html">blockable_compare.cpp</a> [code]</td><td class="indexvalue">Contains the the compare function and comparison operators for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__convert_8cpp.html">blockable_convert.cpp</a> [code]</td><td class="indexvalue">Contains the conversion functions for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__gcd_8cpp.html">blockable_gcd.cpp</a> [code]</td><td class="indexvalue">Greatest Common Denominator and Least Common Multple for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__integer_8cpp.html">blockable_integer.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the xint::blockable::integer member functions </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__misc_8cpp.html">blockable_misc.cpp</a> [code]</td><td class="indexvalue">Functions for blockable integers that don't fall into any other category </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__modular_8cpp.html">blockable_modular.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic modular math functions for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__operators_8cpp.html">blockable_operators.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the basic math operators for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__powers_8cpp.html">blockable_powers.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for blockable integer functions related to powers of a number </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__primes_8cpp.html">blockable_primes.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for functions related to prime numbers for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__primitives_8cpp.html">blockable_primitives.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for math primitives for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__random_8cpp.html">blockable_random.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for the random number functions for blockable integers </td></tr>
+ <tr><td class="indexkey"><a class="el" href="blockable__roots_8cpp.html">blockable_roots.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for blockable integer functions related to roots of a number </td></tr>
<tr><td class="indexkey"><a class="el" href="compare_8cpp.html">compare.cpp</a> [code]</td><td class="indexvalue">Contains the the compare function and comparison operators </td></tr>
<tr><td class="indexkey"><a class="el" href="convert_8cpp.html">convert.cpp</a> [code]</td><td class="indexvalue">Contains the conversion functions </td></tr>
<tr><td class="indexkey"><a class="el" href="data__t_8cpp.html">data_t.cpp</a> [code]</td><td class="indexvalue">Contains the definitions for xint::detail::data_t member functions </td></tr>
@@ -49,8 +62,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/functions.html
==============================================================================
--- sandbox/xint/doc/functions.html (original)
+++ sandbox/xint/doc/functions.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -37,6 +37,7 @@
<ul>
<li>_</li>
<li>a</li>
+ <li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
@@ -60,36 +61,30 @@
<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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">boost::xint::core::base_integer</a>
</li>
<li>_get_data()
-: <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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">boost::xint::core::base_integer</a>
</li>
<li>_get_digit()
-: <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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">boost::xint::core::base_integer</a>
</li>
<li>_get_length()
-: <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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">boost::xint::core::base_integer</a>
</li>
<li>_init()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">boost::xint::core::integer</a>
</li>
+<li>_is_unique()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">boost::xint::core::base_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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">boost::xint::blockable::integer</a>
</li>
<li>_set_negative()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">boost::xint::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">boost::xint::blockable::integer</a>
</li>
</ul>
@@ -107,6 +102,13 @@
</ul>
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
+<li>base_integer()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">boost::xint::core::base_integer</a>
+</li>
+</ul>
+
+
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>cannot_represent()
: <a class="el" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">boost::xint::cannot_represent</a>
@@ -121,9 +123,6 @@
<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>
@@ -147,7 +146,7 @@
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">boost::xint::strong_random_generator</a>
</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_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">boost::xint::core::integer</a>
</li>
</ul>
@@ -171,7 +170,7 @@
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">boost::xint::strong_random_generator</a>
</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_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">boost::xint::core::integer</a>
</li>
</ul>
@@ -183,9 +182,9 @@
</li>
<li>integer()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_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_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">boost::xint::blockable::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">boost::xint::core::integer</a>
</li>
<li>invalid_base()
@@ -201,7 +200,7 @@
: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">boost::xint::detail::data_t</a>
</li>
<li>is_nan()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">boost::xint::blockable::integer</a>
</li>
</ul>
@@ -245,7 +244,7 @@
<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>
+: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">boost::xint::blockable::integer</a>
</li>
<li>negate()
: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">boost::xint::detail::data_t</a>
@@ -262,18 +261,18 @@
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>odd()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">boost::xint::blockable::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_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">boost::xint::core::integer</a>
</li>
<li>operator%=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">boost::xint::blockable::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_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">boost::xint::core::integer</a>
</li>
<li>operator()()
@@ -283,54 +282,54 @@
</li>
<li>operator*=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">boost::xint::blockable::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_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">boost::xint::core::integer</a>
</li>
<li>operator+=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">boost::xint::blockable::integer</a>
</li>
<li>operator--()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">boost::xint::blockable::integer</a>
</li>
<li>operator-=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">boost::xint::blockable::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_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">boost::xint::core::integer</a>
</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_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">boost::xint::core::integer</a>
</li>
<li>operator<<=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">boost::xint::blockable::integer</a>
</li>
<li>operator=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">boost::xint::blockable::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_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">boost::xint::core::integer</a>
</li>
<li>operator>>=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">boost::xint::blockable::integer</a>
</li>
<li>operator^=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">boost::xint::blockable::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_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">boost::xint::core::integer</a>
</li>
<li>overflow_error()
@@ -368,7 +367,7 @@
: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">boost::xint::detail::data_t</a>
</li>
<li>sign()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">boost::xint::core::integer</a>
</li>
<li>skipLeadingZeros()
@@ -397,22 +396,22 @@
<li>zero()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">boost::xint::core::integer</a>
, <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">boost::xint::detail::data_t</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">boost::xint::blockable::integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_0x7e">- ~ -</a></h3><ul>
-<li>~integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">boost::xint::core::integer</a>
+<li>~base_integer()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">boost::xint::core::base_integer</a>
</li>
<li>~strong_random_generator()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">boost::xint::strong_random_generator</a>
</li>
</ul>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/functions_func.html
==============================================================================
--- sandbox/xint/doc/functions_func.html (original)
+++ sandbox/xint/doc/functions_func.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -37,6 +37,7 @@
<ul>
<li>_</li>
<li>a</li>
+ <li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
@@ -59,36 +60,30 @@
<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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">boost::xint::core::base_integer</a>
</li>
<li>_get_data()
-: <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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">boost::xint::core::base_integer</a>
</li>
<li>_get_digit()
-: <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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">boost::xint::core::base_integer</a>
</li>
<li>_get_length()
-: <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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">boost::xint::core::base_integer</a>
</li>
<li>_init()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">boost::xint::core::integer</a>
</li>
+<li>_is_unique()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">boost::xint::core::base_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>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">boost::xint::blockable::integer</a>
</li>
<li>_set_negative()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#ae19edd0d1ee7ecc2d7115b3d489fed55">boost::xint::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">boost::xint::blockable::integer</a>
</li>
</ul>
@@ -106,6 +101,13 @@
</ul>
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
+<li>base_integer()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">boost::xint::core::base_integer</a>
+</li>
+</ul>
+
+
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>cannot_represent()
: <a class="el" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">boost::xint::cannot_represent</a>
@@ -134,7 +136,7 @@
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">boost::xint::strong_random_generator</a>
</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_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">boost::xint::core::integer</a>
</li>
</ul>
@@ -143,7 +145,7 @@
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>hex_digits()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#af9206e301a190df90fa2e76a30238c6f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">boost::xint::blockable::integer</a>
</li>
</ul>
@@ -151,11 +153,11 @@
<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
<li>integer()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_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>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#acade75e4974489026f1eeb6945c9779a">boost::xint::blockable::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">boost::xint::blockable::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#ad0f5b3fdf28a3e2892198dd1c39afe82">boost::xint::core::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">boost::xint::blockable::integer</a>
</li>
<li>invalid_base()
: <a class="el" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">boost::xint::invalid_base</a>
@@ -170,7 +172,7 @@
: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">boost::xint::detail::data_t</a>
</li>
<li>is_nan()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#a65fb2696f8506a6db16b8fb422c98ff5">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123">boost::xint::blockable::integer</a>
</li>
</ul>
@@ -187,7 +189,7 @@
<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>
+: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">boost::xint::blockable::integer</a>
</li>
<li>negate()
: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">boost::xint::detail::data_t</a>
@@ -204,18 +206,18 @@
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>odd()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a5d17a8184d20e7829273f769550954c1">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">boost::xint::blockable::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_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">boost::xint::core::integer</a>
</li>
<li>operator%=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a1acfe3b61f26b7168fd103521f6deee9">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">boost::xint::blockable::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_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">boost::xint::core::integer</a>
</li>
<li>operator()()
@@ -225,54 +227,54 @@
</li>
<li>operator*=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a3452b0a1af51a556bdcb6a3d087b44db">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">boost::xint::blockable::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_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">boost::xint::core::integer</a>
</li>
<li>operator+=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a8ba263f6a5e51c15e3c51241d113c35e">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">boost::xint::blockable::integer</a>
</li>
<li>operator--()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#aa535f200d1d95306aae3d5f991df4e8f">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">boost::xint::blockable::integer</a>
</li>
<li>operator-=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a92f8f3cb4e080c43d889103e7606b7ba">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">boost::xint::blockable::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_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">boost::xint::core::integer</a>
</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_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">boost::xint::core::integer</a>
</li>
<li>operator<<=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a33f0a1167639a60ac8ad8ef0f3d3f585">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">boost::xint::blockable::integer</a>
</li>
<li>operator=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a9ae8cfa93f2e43cf0471266c54b06be2">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">boost::xint::blockable::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_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">boost::xint::core::integer</a>
</li>
<li>operator>>=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a0ca39c4cb36160461fb9848cc9e7f2d4">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">boost::xint::blockable::integer</a>
</li>
<li>operator^=()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">boost::xint::core::integer</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a40fdf2cd80d53e173aa5129fe02289c3">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">boost::xint::blockable::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_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">boost::xint::core::integer</a>
</li>
<li>overflow_error()
@@ -306,7 +308,7 @@
: <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">boost::xint::detail::data_t</a>
</li>
<li>sign()
-: <a class="el" href="classboost_1_1xint_1_1integer.html#aea1bfa7f915f8d2a1e493aedb22bdd12">boost::xint::integer</a>
+: <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">boost::xint::blockable::integer</a>
, <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">boost::xint::core::integer</a>
</li>
<li>skipLeadingZeros()
@@ -332,22 +334,22 @@
<li>zero()
: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">boost::xint::core::integer</a>
, <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">boost::xint::detail::data_t</a>
-, <a class="el" href="classboost_1_1xint_1_1integer.html#a5c08ebe10f3f6333328b35193edd53d0">boost::xint::integer</a>
+, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">boost::xint::blockable::integer</a>
</li>
</ul>
<h3><a class="anchor" id="index_0x7e">- ~ -</a></h3><ul>
-<li>~integer()
-: <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#a38cca795dabe23e124640fec8b46bdf5">boost::xint::core::integer</a>
+<li>~base_integer()
+: <a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">boost::xint::core::base_integer</a>
</li>
<li>~strong_random_generator()
: <a class="el" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">boost::xint::strong_random_generator</a>
</li>
</ul>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/functions_type.html
==============================================================================
--- sandbox/xint/doc/functions_type.html (original)
+++ sandbox/xint/doc/functions_type.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -48,8 +48,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/functions_vars.html
==============================================================================
--- sandbox/xint/doc/functions_vars.html (original)
+++ sandbox/xint/doc/functions_vars.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -39,9 +39,6 @@
<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>
@@ -89,8 +86,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/gcd_8cpp.html
==============================================================================
--- sandbox/xint/doc/gcd_8cpp.html (original)
+++ sandbox/xint/doc/gcd_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,7 +29,6 @@
<h1>gcd.cpp File Reference</h1>
<p>Greatest Common Denominator and Least Common Multple.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -37,34 +36,31 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">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>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint::gcd</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint::lcm</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core::lcm</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
<tr><td 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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint::invmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core::invmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Greatest Common Denominator and Least Common Multple. </p>
-<p>Also holds the definition for xint::invmod, since it uses the GCD algorithm. </p>
+<p>Also holds the definition for invmod, since it uses the GCD algorithm. </p>
<p>Definition in file <a class="el" href="gcd_8cpp_source.html">gcd.cpp</a>.</p>
<hr/><h2>Variable Documentation</h2>
@@ -114,8 +110,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -59,7 +59,7 @@
<a name="l00039"></a>00039 }
<a name="l00040"></a>00040
<a name="l00041"></a>00041 <span class="keywordflow">if</span> (t3.even() || <a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a> < t3) {
-<a name="l00042"></a>00042 <span class="comment">// Swap the u's with the t's</span>
+<a name="l00042"></a>00042 <span class="comment">// Swap the u's with the t's</span>
<a name="l00043"></a>00043 std::swap(<a class="code" href="gcd_8cpp.html#accb7b3088be4aa6fea6fe05dc527f01c">u1</a>, t1);
<a name="l00044"></a>00044 std::swap(<a class="code" href="gcd_8cpp.html#a35cdbdce7a7d33309a6cabd35c878b2f">u2</a>, t2);
<a name="l00045"></a>00045 std::swap(<a class="code" href="gcd_8cpp.html#a7ac8f5a4ca4a1c621ad1c8ea155faaf2">u3</a>, t3);
@@ -78,89 +78,61 @@
<a name="l00058"></a>00058
<a name="l00059"></a>00059 } <span class="comment">// namespace</span>
<a name="l00060"></a>00060
-<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 gcd_core core(n, m);
+<a name="l00068"></a>00068 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00069"></a>00069 <span class="keywordtype">int</span> sign1=num1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), sign2=num2.sign();
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (sign1==0 && sign2==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00071"></a>00071 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1==0) <span class="keywordflow">return</span> num2;
+<a name="l00072"></a>00072 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">return</span> num1;
<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <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="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="l00074"></a>00074 integer n(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(num1)), m(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(num2));
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keywordtype">size_t</span> k=0;
+<a name="l00077"></a>00077 <span class="keywordflow">while</span> (n.even() && m.even()) { ++k; n >>= 1; m >>= 1; }
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 gcd_core core(n, m);
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keywordflow">if</span> (core.u3.sign() != 0) <span class="keywordflow">return</span> core.u3 << k;
+<a name="l00082"></a>00082 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() << k;
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084
+<a name="l00093"></a>00093 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) {
+<a name="l00094"></a>00094 <span class="keywordflow">if</span> (num1.sign() == 0 || num2.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00095"></a>00095 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(num1 * num2) / <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(num1, num2);
+<a name="l00096"></a>00096 }
<a name="l00097"></a>00097
-<a name="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="l00108"></a>00108 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00109"></a>00109 <span class="comment">// Calculates the modular inverse of n mod m, or (n^(-1)) mod m</span>
+<a name="l00110"></a>00110 <span class="comment">// Defined as b, where n*b corresponds to 1 (mod m)</span>
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (m < <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">throw</span> invalid_modulus();
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="keywordtype">int</span> sign=n.sign();
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (sign==0) {
+<a name="l00115"></a>00115 <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00116"></a>00116 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n.sign() < 0) {
+<a name="l00117"></a>00117 integer _n(n);
+<a name="l00118"></a>00118 _n._set_negative(<span class="keyword">false</span>);
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 integer nn=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(_n, m);
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (nn.sign()==0) <span class="keywordflow">return</span> nn;
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 nn._set_negative(<span class="keyword">true</span>);
+<a name="l00124"></a>00124 <span class="keywordflow">return</span> nn + m;
<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127
-<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>
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keywordflow">if</span> (n.even() && m.even()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 gcd_core core(n, m);
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (core.u3 != <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(); <span class="comment">// GCD(x,y)!=1, no inverse possible.</span>
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> core.u1;
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 } <span class="comment">// namespace core</span>
+<a name="l00136"></a>00136 } <span class="comment">// namespace xint</span>
+<a name="l00137"></a>00137 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/globals.html
==============================================================================
--- sandbox/xint/doc/globals.html (original)
+++ sandbox/xint/doc/globals.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -54,8 +54,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/globals_defs.html
==============================================================================
--- sandbox/xint/doc/globals_defs.html (original)
+++ sandbox/xint/doc/globals_defs.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -39,8 +39,8 @@
</li>
</ul>
</div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/globals_vars.html
==============================================================================
--- sandbox/xint/doc/globals_vars.html (original)
+++ sandbox/xint/doc/globals_vars.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -51,8 +51,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/hierarchy.html
==============================================================================
--- sandbox/xint/doc/hierarchy.html (original)
+++ sandbox/xint/doc/hierarchy.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -28,6 +28,11 @@
</div>
<div class="contents">
<h1>Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
+<li><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a><ul>
+<li><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></li>
+<li><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></li>
+</ul>
+</li>
<li><a class="el" href="structboost_1_1xint_1_1detail_1_1base__random__generator.html">boost::xint::detail::base_random_generator</a><ul>
<li><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></li>
</ul>
@@ -35,8 +40,6 @@
<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>
<li><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html">boost::xint::invalid_modulus</a></li>
@@ -49,8 +52,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/history.html
==============================================================================
--- sandbox/xint/doc/history.html (original)
+++ sandbox/xint/doc/history.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -32,11 +32,22 @@
</ul>
<p><b>2010-03-30</b> </p>
<ul>
-<li>Many improvements, primarily from feedback on the first Boost upload. Second version posted to the Boost File Vault. </li>
+<li>Many improvements, primarily from feedback on the first Boost upload. Second version posted to the Boost File Vault.</li>
+</ul>
+<p><b>2010-04-</b>?? (updated through 10th)</p>
+<ul>
+<li>Major refactoring, separating xint::integer into two classes, each with their own namespace (xint::core and xint::blockable), and their own functions.</li>
+<li>Fixed problem with MSVC 9.</li>
+<li>Major overhaul of the division function.</li>
+<li>All test functions now use Boost.Test.</li>
+<li>"Fixed" several small memory leaks. They weren't real leaks, but Boost.Test couldn't tell that.</li>
+<li>All documentation moved to Doxygen format.</li>
+<li>Moved xint namespace into boost namespace.</li>
+<li>Fixed minor stream-output formatting problem (the code wasn't aware of the <code>showpos</code> stream option). </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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/history_8dox.html
==============================================================================
--- sandbox/xint/doc/history_8dox.html (original)
+++ sandbox/xint/doc/history_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/index.html
==============================================================================
--- sandbox/xint/doc/index.html (original)
+++ sandbox/xint/doc/index.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -20,22 +20,22 @@
</div>
</div>
<div class="contents">
-<h1>The Extended Integer (XInt) Library</h1><center>A fast, portable C++ library for multi-precision integer math.</center><center>Copyright 2010 by Chad Nelson</center><h2><a class="anchor" id="what">
+<h1>The Extended Integer (XInt) Library </h1><center>A fast, portable C++ library for multi-precision integer math.</center><center>Copyright 2010 by Chad Nelson</center><h2><a class="anchor" id="what">
What is it?</a></h2>
<p>It's a C++ library that lets your program handle much, <em>much</em> larger integer numbers than the built-in <code>int</code>, <code>long</code>, or even <code>long long</code> types, and handle them using the same syntax that C and C++ use for the standard integer types.</p>
<p>The maximum size of the integer is limited only by the memory available to store it. In practice that's millions of hexadecimal digits, so it's effectively infinite.</p>
<h2><a class="anchor" id="why">
Why would I use it?</a></h2>
<ul>
-<li><b>Because it's completely portable.</b> It's written entirely in modern C++, with many different types of operating system, compiler, and hardware in mind. It will compile cleanly on many operating systems without any changes, automatically adapting to whatever native integer sizes are available. </li>
+<li><b>Because it's completely portable.</b> It's written entirely in modern C++, with many different types of operating system, compiler, and hardware in mind. It will compile cleanly on many operating systems without any changes, automatically adapting to the most efficient native integer sizes available. </li>
<li><b>Because it's fast.</b> Speed of execution takes a back seat to portability, so it doesn't include things like assembly-language modules to wring every last CPU cycle out of it -- but it's still pretty darn fast. </li>
-<li><b>Because it has the features you need.</b> Modular arithmetic. Cryptographically-secure prime number generation. Bit manipulation functions. A friendly and intuitive interface. An option for thread-safe operation. Complete and carefully maintained documentation. What more could you want? </li>
+<li><b>Because it has the features you need.</b> Modular arithmetic. Cryptographically-secure prime number generation. Bit manipulation functions. Exception- or error-code-based operation. A friendly and intuitive interface. An option for thread-safe operation. Complete and carefully maintained documentation. What more could you want? </li>
<li><b>Because it's open-source.</b> You can see exactly how it works. You can never be left high and dry because the company that made it goes out of business, or decides that it's not profitable to maintain it. If you find a bug that isn't fixed fast enough for you, you can fix it yourself, no waiting for someone else to get around to it. </li>
<li><b>Because it's closed-source-friendly and commercial-friendly.</b> It's licensed under the Boost Software License 1.0 (which you can find at http://www.boost.org/LICENSE_1_0.txt), an OSI-approved open-source license that permits you to use it for pretty much anything you want, and doesn't make any anti-commercial or anti-closed-source demands.</li>
</ul>
<h2><a class="anchor" id="how">
How do I use it?</a></h2>
-<p>That's the best part. If you've installed or compiled the Boost library already, all you need to do is add <code>#include <<a class="el" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></code> at the top of your source code file, and declare your variable as type <code><a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">boost::xint::integer</a></code>. Then just use it the way you'd use any integer. If you need something more advanced, take a look in <a class="el" href="namespaceboost_1_1xint.html">the reference section</a> and you just might find it.</p>
+<p>That's the best part. If you've installed or compiled the Boost library already, all you need to do is add <code>#include <<a class="el" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></code> at the top of your source code file, and declare your variable as type <code><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">boost::xint::core::integer</a></code>. Then just use it the way you'd use any integer. If you need something more advanced, take a look in <a class="el" href="namespaceboost_1_1xint.html">the reference section</a> and you just might find it.</p>
<p>More information on how to use it can be found on the pages listed below.</p>
<p>Detailed Usage Information:</p>
<ul>
@@ -60,11 +60,11 @@
</ul>
<p>Stand-Alone Examples:</p>
<ul>
-<li><a class="el" href="ex_fibonacci.html">Fibonacci Numbers</a> </li>
+<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 Wed Apr 7 03:40:42 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/index_8dox.html
==============================================================================
--- sandbox/xint/doc/index_8dox.html (original)
+++ sandbox/xint/doc/index_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/integer_8cpp.html
==============================================================================
--- sandbox/xint/doc/integer_8cpp.html (original)
+++ sandbox/xint/doc/integer_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,6 @@
<h1>integer.cpp File Reference</h1>
<p>Contains the definitions for the xint::integer member functions.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<code>#include "../boost/xint/xint_data_t.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -38,12 +36,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
</table>
@@ -52,8 +50,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -52,482 +52,202 @@
<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="l00034"></a>00034 <span class="comment">// The base_integer class</span>
<a name="l00035"></a>00035
-<a name="l00036"></a><a class="code" href="classboost_1_1xint_1_1core_1_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="l00036"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">00036</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">base_integer::~base_integer</a>() {
+<a name="l00037"></a>00037 <span class="keywordflow">if</span> (data && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()) <span class="keyword">delete</span> data;
<a name="l00038"></a>00038 }
<a name="l00039"></a>00039
-<a name="l00040"></a><a class="code" href="classboost_1_1xint_1_1core_1_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="l00040"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">00040</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">base_integer::_get_digit</a>(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
<a name="l00042"></a>00042 }
<a name="l00043"></a>00043
-<a name="l00044"></a><a class="code" href="classboost_1_1xint_1_1core_1_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>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="l00044"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a4cbda067a810993a4d253d9113ca44a8">00044</a> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">base_integer::_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{
+<a name="l00045"></a>00045 <span class="keywordflow">if</span> (index >= data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>) <span class="keywordflow">return</span> 0;
+<a name="l00046"></a>00046 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>[index];
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048
+<a name="l00049"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">00049</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">base_integer::_get_length</a>()<span class="keyword"> const </span>{
+<a name="l00050"></a>00050 <span class="keywordflow">return</span> data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3b494184a00a17108f8bb80d8f07a3a4">mLength</a>;
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052
+<a name="l00053"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">00053</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">base_integer::_attach</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *new_data) {
+<a name="l00054"></a>00054 <span class="keywordflow">if</span> (data && data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()) <span class="keyword">delete</span> data;
+<a name="l00055"></a>00055 <span class="preprocessor"> #ifdef XINT_DISABLE_COPY_ON_WRITE</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span> <span class="keywordflow">if</span> (new_data==0 || new_data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==0) data=new_data;
+<a name="l00057"></a>00057 <span class="keywordflow">else</span> {
+<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059 data=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(new_data);
+<a name="l00060"></a>00060 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00061"></a>00061 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064 <span class="preprocessor"> #else</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span> data=new_data;
+<a name="l00066"></a>00066 <span class="preprocessor"> #endif</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span> <span class="keywordflow">if</span> (data) data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>();
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069
+<a name="l00070"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a80fd494f4fe59cb29f1f305b1f092e45">00070</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">base_integer::_attach</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& copy) {
+<a name="l00071"></a>00071 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(copy.data);
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">00074</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">base_integer::_is_unique</a>()<span class="keyword"> const </span>{
+<a name="l00075"></a>00075 <span class="keywordflow">return</span> (!data || data-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==1);
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077
+<a name="l00079"></a>00079 <span class="comment">// The core integer class</span>
+<a name="l00080"></a>00080
+<a name="l00082"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625">00082</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>() {
+<a name="l00083"></a>00083 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>();
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085
+<a name="l00097"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa8a21b616c6c6f78f3c49686f897b067">00097</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) {
+<a name="l00098"></a>00098 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(b);
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00111"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ad0f5b3fdf28a3e2892198dd1c39afe82">00111</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>& b) {
+<a name="l00112"></a>00112 <span class="keywordflow">if</span> (b.<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a>();
+<a name="l00113"></a>00113 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(b);
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115
+<a name="l00136"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f">00136</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base) {
+<a name="l00137"></a>00137 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(str, base));
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139
+<a name="l00140"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">00140</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init) {
+<a name="l00141"></a>00141 <span class="keywordflow">try</span> {
+<a name="l00142"></a>00142 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(init));
+<a name="l00143"></a>00143 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00144"></a>00144 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147
+<a name="l00148"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab02f3ddc3b8bd2f892f8a072427076b4">00148</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c) {
+<a name="l00149"></a>00149 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151
+<a name="l00152"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a275c6dc7e675e5395ab16d92c9851429">00152</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">integer::_init</a>(boost::uintmax_t n) {
+<a name="l00153"></a>00153 <span class="keywordflow">try</span> {
+<a name="l00154"></a>00154 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(n, <span class="keyword">true</span>));
+<a name="l00155"></a>00155 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00156"></a>00156 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159
+<a name="l00160"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">00160</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">integer::_make_unique</a>() {
+<a name="l00161"></a>00161 <span class="keywordflow">try</span> {
+<a name="l00162"></a>00162 <span class="keywordflow">if</span> (!<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>()) <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()));
+<a name="l00163"></a>00163 } <span class="keywordflow">catch</span> (std::bad_alloc&) {
+<a name="l00164"></a>00164 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a>(<span class="stringliteral">"Out of memory allocating xint::integer"</span>);
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 }
+<a name="l00167"></a>00167
+<a name="l00168"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">00168</a> <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">integer::_set_negative</a>(<span class="keywordtype">bool</span> negative) {
+<a name="l00169"></a>00169 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative != negative) {
+<a name="l00170"></a>00170 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00171"></a>00171 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *p=<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00172"></a>00172 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abd6528e0c4f7674b4421cc7f1e2aba09">mIsNegative</a>=negative;
+<a name="l00173"></a>00173 p-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00174"></a>00174 }
<a name="l00175"></a>00175 }
<a name="l00176"></a>00176
-<a name="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="l00181"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e">00181</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e" title="Tests the lowest bit of *this to determine oddness.">integer::odd</a>()<span class="keyword"> const </span>{
+<a name="l00182"></a>00182 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==1);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00189"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3">00189</a> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3" title="Tests the lowest bit of *this to determine evenness.">integer::even</a>()<span class="keyword"> const </span>{
+<a name="l00190"></a>00190 <span class="keywordflow">return</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0) & 0x01)==0);
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192
+<a name="l00198"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9">00198</a> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">integer::sign</a>()<span class="keyword"> const </span>{
+<a name="l00199"></a>00199 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>()==1 && <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(0)==0) <span class="keywordflow">return</span> 0;
+<a name="l00200"></a>00200 <span class="keywordflow">else</span> <span class="keywordflow">return</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()->mIsNegative ? -1 : 1);
+<a name="l00201"></a>00201 }
<a name="l00202"></a>00202
-<a name="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_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="l00208"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43">00208</a> <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43" title="Tells you roughly how large an integer is.">integer::hex_digits</a>()<span class="keyword"> const </span>{
+<a name="l00209"></a>00209 <span class="keywordtype">size_t</span> bits=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(*<span class="keyword">this</span>);
+<a name="l00210"></a>00210 <span class="keywordflow">return</span> (bits+3)/4; <span class="comment">// Four bits per hex digit, rounded up</span>
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212
+<a name="l00213"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">00213</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">integer::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& addend) {
+<a name="l00214"></a>00214 <span class="keywordflow">if</span> ((<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() < 0) == (addend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() < 0)
+<a name="l00215"></a>00215 && <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() >= addend.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>())
+<a name="l00216"></a>00216 {
+<a name="l00217"></a>00217 <span class="comment">// Fast in-place add</span>
+<a name="l00218"></a>00218 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00219"></a>00219 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(addend.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>());
+<a name="l00220"></a>00220 } <span class="keywordflow">else</span> {
+<a name="l00221"></a>00221 <span class="comment">// This works for all cases</span>
+<a name="l00222"></a>00222 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(*<span class="keyword">this</span>, addend);
+<a name="l00223"></a>00223 }
+<a name="l00224"></a>00224 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226
+<a name="l00227"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">00227</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">integer::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& subtrahend) {
+<a name="l00228"></a>00228 <span class="keywordflow">if</span> (<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() >= 0 && subtrahend.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() >= 0 && *<span class="keyword">this</span> >= subtrahend) {
+<a name="l00229"></a>00229 <span class="comment">// Fast in-place subtract</span>
+<a name="l00230"></a>00230 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00231"></a>00231 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(subtrahend.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>());
+<a name="l00232"></a>00232 } <span class="keywordflow">else</span> {
+<a name="l00233"></a>00233 <span class="comment">// This works for all cases</span>
+<a name="l00234"></a>00234 *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(*<span class="keyword">this</span>, subtrahend);
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238
+<a name="l00239"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">00239</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">integer::operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c) {
+<a name="l00240"></a>00240 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(c);
+<a name="l00241"></a>00241 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00242"></a>00242 }
<a name="l00243"></a>00243
-<a name="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="l00244"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">00244</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">integer::operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00245"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">00245</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">integer::operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00246"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">00246</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">integer::operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(*<span class="keyword">this</span>, b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00247"></a>00247
+<a name="l00248"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">00248</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">integer::operator++</a>() { *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00249"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">00249</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">integer::operator--</a>() { *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00250"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab04d9f5bfe1d4b9d10acf4cf3f8a6115">00250</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">integer::operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> += <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> s; }
+<a name="l00251"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#ab30e34305c00e55f9ea0012085c49c9d">00251</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">integer::operator--</a>(<span class="keywordtype">int</span>) { <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> s=*<span class="keyword">this</span>; *<span class="keyword">this</span> -= <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>(); <span class="keywordflow">return</span> s; }
<a name="l00252"></a>00252
-<a name="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="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>
+<a name="l00253"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">00253</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">integer::operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00254"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">00254</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">integer::operator>></a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(*<span class="keyword">this</span>, shift); }
+<a name="l00255"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">00255</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">integer::operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00256"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">00256</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">integer::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00257"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">00257</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">integer::operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) { *<span class="keyword">this</span>=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(*<span class="keyword">this</span>, n); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
+<a name="l00258"></a>00258
+<a name="l00259"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">00259</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">integer::operator<<=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00260"></a>00260 <span class="keywordflow">if</span> (shift>0) {
+<a name="l00261"></a>00261 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00262"></a>00262 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(shift);
+<a name="l00263"></a>00263 }
+<a name="l00264"></a>00264 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266
+<a name="l00267"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">00267</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">integer::operator>>=</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>) {
+<a name="l00268"></a>00268 <span class="keywordflow">if</span> (shift>0) {
+<a name="l00269"></a>00269 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00270"></a>00270 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()-><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(shift);
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274
+<a name="l00275"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">00275</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>() {
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (cZero.get()==0) cZero.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>(0));
+<a name="l00277"></a>00277 <span class="keywordflow">return</span> *cZero;
+<a name="l00278"></a>00278 }
+<a name="l00279"></a>00279
+<a name="l00280"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">00280</a> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() {
+<a name="l00281"></a>00281 <span class="keywordflow">if</span> (cOne.get()==0) cOne.reset(<span class="keyword">new</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>(1));
+<a name="l00282"></a>00282 <span class="keywordflow">return</span> *cOne;
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 } <span class="comment">// namespace core</span>
+<a name="l00286"></a>00286 } <span class="comment">// namespace xint</span>
+<a name="l00287"></a>00287 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/misc_8cpp.html
==============================================================================
--- sandbox/xint/doc/misc_8cpp.html (original)
+++ sandbox/xint/doc/misc_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,7 +29,6 @@
<h1>misc.cpp File Reference</h1>
<p>Functions that don't fall into any other category.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -37,33 +36,35 @@
<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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">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>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint::opt_secure_mode</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379">boost::xint::opt_thread_safe</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">boost::xint::log2</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an <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">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core::log2</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Functions that don't fall into any other category. </p>
<p>Definition in file <a class="el" href="misc_8cpp_source.html">misc.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -59,32 +59,22 @@
<a name="l00048"></a>00048 <span class="preprocessor"></span>}
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="keyword">namespace </span>core {
-<a name="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>
+<a name="l00064"></a>00064 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00065"></a>00065 <span class="keywordtype">size_t</span> r=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a> * n._get_length();
+<a name="l00066"></a>00066 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">detail::digit_hibit</a>, d=n._get_digit(n._get_length()-1);
+<a name="l00067"></a>00067 <span class="keywordflow">while</span> (mask!=0) {
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> ((mask & d)!=0) <span class="keywordflow">break</span>;
+<a name="l00069"></a>00069 mask>>=1;
+<a name="l00070"></a>00070 --r;
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> r;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 } <span class="comment">// namespace core</span>
+<a name="l00075"></a>00075 } <span class="comment">// namespace xint</span>
+<a name="l00076"></a>00076 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/modular_8cpp.html
==============================================================================
--- sandbox/xint/doc/modular_8cpp.html (original)
+++ sandbox/xint/doc/modular_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,6 @@
<h1>modular.cpp File Reference</h1>
<p>Contains the definitions for the basic modular math functions.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<code>#include "../boost/xint/xint_monty.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -38,30 +36,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
-<tr><td 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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint::mod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">boost::xint::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint::sqrmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for the basic modular math functions. </p>
@@ -69,8 +63,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -44,105 +44,64 @@
<a name="l00025"></a>00025 <span class="keyword">namespace </span>xint {
<a name="l00026"></a>00026 <span class="keyword">namespace </span>core {
<a name="l00027"></a>00027
-<a name="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="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>
+<a name="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00036"></a>00036 integer r=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(n, m).second;
+<a name="l00037"></a>00037 <span class="keywordflow">if</span> (r.sign() < 0) r+=<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(m);
+<a name="l00038"></a>00038 <span class="keywordflow">return</span> r;
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040
+<a name="l00053"></a>00053 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by, <span class="keyword">const</span> integer& m) {
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(n * by, m);
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00069"></a>00069 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& m) {
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(n), m);
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072
+<a name="l00094"></a>00094 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e, <span class="keyword">const</span> integer& m, <span class="keywordtype">bool</span>
+<a name="l00095"></a>00095 noMontgomery)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (m < <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>()) <span class="keywordflow">throw</span> invalid_modulus();
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> (e.sign()==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 integer answer(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="comment">// Montgomery's method is often noticeably faster, but only works if the</span>
+<a name="l00105"></a>00105 <span class="comment">// m is odd.</span>
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (m.odd() && !noMontgomery) {
+<a name="l00107"></a>00107 answer=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964" title="Returns the Montgomery equivalent of powmod(a, b, n). Used internally.">montgomeryPowerMod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n) % m, <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(e), m);
+<a name="l00108"></a>00108 } <span class="keywordflow">else</span> {
+<a name="l00109"></a>00109 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n));
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keywordtype">size_t</span> length=e._get_length(), lastBitCount=0;
+<a name="l00112"></a>00112 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(length-1));
+<a name="l00113"></a>00113 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
+<a name="l00116"></a>00116 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> ee(e._get_digit(eIndex));
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount :
+<a name="l00119"></a>00119 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">detail::bits_per_digit</a>));
+<a name="l00120"></a>00120 <span class="keywordflow">while</span> (bitCount-- > 0) {
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (ee & 0x01) answer=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a" title="Get the modular product of two integers.">mulmod</a>(answer, p, m);
+<a name="l00122"></a>00122 p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(p, m);
+<a name="l00123"></a>00123 ee >>= 1;
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 answer._set_negative(neg);
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> answer;
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 } <span class="comment">// namespace core</span>
+<a name="l00133"></a>00133 } <span class="comment">// namespace xint</span>
+<a name="l00134"></a>00134 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/monty_8cpp.html
==============================================================================
--- sandbox/xint/doc/monty_8cpp.html (original)
+++ sandbox/xint/doc/monty_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,10 +29,6 @@
<h1>monty.cpp File Reference</h1>
<p>Internally used functions.
<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 <boost/scoped_array.hpp></code><br/>
-<code>#include <vector></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -40,12 +36,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
@@ -53,7 +49,7 @@
<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>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core::inverse0</a> (const integer &n)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core::montgomeryR</a> (const integer &n)</td></tr>
@@ -61,7 +57,7 @@
<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="mdescLeft"> </td><td class="mdescRight">Returns the integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
@@ -110,8 +106,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -69,7 +69,7 @@
<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="l00059"></a>00059 integer inv=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e" title="Returns the most efficient R value for a number and the library&#39;s internal representation...">montgomeryR</a>(m), m);
<a name="l00060"></a>00060 <span class="keywordflow">return</span> (n * inv % m);
<a name="l00061"></a>00061 }
<a name="l00062"></a>00062
@@ -80,7 +80,7 @@
<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="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>
@@ -137,7 +137,7 @@
<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="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 {
@@ -177,7 +177,7 @@
<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="l00170"></a>00170 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> k=cMaxK, kTarget=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(e)-1;
<a name="l00171"></a>00171 <span class="keywordflow">while</span> (k > 1 && ((k - 1) * (k << ((k - 1) << 1))
<a name="l00172"></a>00172 / (<a class="code" href="monty_8cpp.html#a5e044fcc16f6eb5e891ef312f47209ac">ddPowerOfTwo</a>(k) - k - 1)) >= kTarget)
<a name="l00173"></a>00173 --k;
@@ -204,7 +204,7 @@
<a name="l00194"></a>00194 }
<a name="l00195"></a>00195
<a name="l00196"></a>00196 vkbitdigit_t splitIntoKBitDigits(<span class="keyword">const</span> integer& e, <span class="keywordtype">size_t</span> k) {
-<a name="l00197"></a>00197 <span class="keywordtype">size_t</span> eBits=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</a>(e), eDigits=(eBits+k-1)/k, i=0, bitsInHopper=0;
+<a name="l00197"></a>00197 <span class="keywordtype">size_t</span> eBits=<a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(e), eDigits=(eBits+k-1)/k, i=0, bitsInHopper=0;
<a name="l00198"></a>00198
<a name="l00199"></a>00199 vkbitdigit_t rval;
<a name="l00200"></a>00200 rval.reserve(eDigits);
@@ -290,8 +290,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespaceboost.html
==============================================================================
--- sandbox/xint/doc/namespaceboost.html (original)
+++ sandbox/xint/doc/namespaceboost.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,13 +30,13 @@
<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>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespaceboost_1_1xint.html
==============================================================================
--- sandbox/xint/doc/namespaceboost_1_1xint.html (original)
+++ sandbox/xint/doc/namespaceboost_1_1xint.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,13 +29,18 @@
</div>
<div class="contents">
<h1>boost::xint Namespace Reference</h1>
-<p>All of the commonly-used functions are within this namespace.
+<p>The common functions are within this namespace.
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">blockable</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<br/></td></tr>
+</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">core</a></td></tr>
-<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>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td 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>
@@ -44,8 +49,6 @@
<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>
@@ -72,159 +75,31 @@
<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>
+</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">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">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 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>
+</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">set_random_generator</a> (T *gen)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">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>
+</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>
@@ -238,7 +113,7 @@
<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>
+<p>The common 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">
@@ -251,9 +126,9 @@
</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>
+<dl class="see"><dt><b>See also:</b></dt><dd>xint::is_prime </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>
+xint::random_prime </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>
@@ -277,69 +152,6 @@
</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">
@@ -363,120 +175,75 @@
</div>
</div>
-<a class="anchor" id="ab828c0be1559b60537b959ef75092fb2"></a><!-- doxytag: member="boost::xint::bitwise_and" ref="ab828c0be1559b60537b959ef75092fb2" args="(const integer &n1, const integer &n2)" -->
+<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="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_and </td>
+ <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="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 class="paramname"></td>
+ <td> ) </td>
<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>
+<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="ab38ce0764a4b6433e11e30efa2175fec"></a><!-- doxytag: member="boost::xint::bitwise_or" ref="ab38ce0764a4b6433e11e30efa2175fec" args="(const integer &n1, const integer &n2)" -->
+<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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_or </td>
+ <td class="memname">bool boost::xint::exceptions_allowed </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 class="paramname"></td>
+ <td> ) </td>
<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>
+<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="a6afd5af4550b698f6a7065f457fcb0a1"></a><!-- doxytag: member="boost::xint::bitwise_xor" ref="a6afd5af4550b698f6a7065f457fcb0a1" args="(const integer &n1, const integer &n2)" -->
+<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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::bitwise_xor </td>
+ <td class="memname">bool boost::xint::opt_secure_mode </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 class="paramname"></td>
+ <td> ) </td>
<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>
+<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="a23aac788de86c99b403a691954e016ad"></a><!-- doxytag: member="boost::xint::block_exceptions" ref="a23aac788de86c99b403a691954e016ad" args="()" -->
+<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"><a class="el" href="structboost_1_1xint_1_1detail_1_1token.html">token</a> boost::xint::block_exceptions </td>
+ <td class="memname">bool boost::xint::opt_thread_safe </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -486,187 +253,100 @@
</div>
<div class="memdoc">
-<p>Temporarily prevent the library from throwing blockable exceptions. </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128" title="Used for the exception-blocker.">xint::token</a>. Until this token is destroyed, blockable exceptions are blocked, unless explicitly re-enabled.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd>When the library is compiled for <a class="el" href="threadsafe.html">thread-safe operation</a>, exceptions are blocked or allowed on a per-thread basis. Otherwise they are blocked or allowed globally.</dd></dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="exceptions.html">Exceptions and Exception-Blocking</a> </dd></dl>
+<p>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="a96d452df71ac6799a7041647b4b106df"></a><!-- doxytag: member="boost::xint::clearbit" ref="a96d452df71ac6799a7041647b4b106df" args="(integer &n, size_t bit)" -->
+<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::clearbit </td>
+ <td class="memname">void boost::xint::set_random_generator </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>
+ <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>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>
+<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,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>
+ <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="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>The generator must be a heap-allocated pointer (one created with <code>new</code>), which the XInt library assumes ownership of. Don't pass in a stack-created item, don't try to delete the item that you passed in, and don't attempt to use it separately after passing it to this function, or the behavior is undefined.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>See the <a class="el" href="random.html">Random Number page</a> for an example of how to use it. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00779">779</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a23f712f01d6589687d2984b1c5efea8b"></a><!-- doxytag: member="boost::xint::compare" ref="a23f712f01d6589687d2984b1c5efea8b" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
+<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">int boost::xint::compare </td>
+ <td class="memname">bool boost::xint::testAddSubtract </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 class="paramname"></td>
+ <td> ) </td>
<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)" -->
+<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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::divide </td>
+ <td class="memname">bool boost::xint::testBitManipulations </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 class="paramname"></td>
+ <td> ) </td>
<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)" -->
+<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">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 class="memname">bool boost::xint::testConvert </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 class="paramname"></td>
+ <td> ) </td>
<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="()" -->
+<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::exceptions_allowed </td>
+ <td class="memname">bool boost::xint::testDivideMod </td>
<td>(</td>
<td class="paramname"></td>
<td> ) </td>
@@ -676,21 +356,16 @@
</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)" -->
+<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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::factorial </td>
+ <td class="memname">bool boost::xint::testMontyMultiply </td>
<td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>n</em></td>
+ <td class="paramname"></td>
<td> ) </td>
<td></td>
</tr>
@@ -698,27 +373,16 @@
</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)" -->
+<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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::from_binary </td>
+ <td class="memname">bool boost::xint::testMontyPowerMod </td>
<td>(</td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>str</em></td>
+ <td class="paramname"></td>
<td> ) </td>
<td></td>
</tr>
@@ -726,1851 +390,40 @@
</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)" -->
+<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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::from_string </td>
+ <td class="memname">bool boost::xint::testMultiply </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 class="paramname"></td>
+ <td> ) </td>
<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)" -->
+<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"><a class="el" href="classboost_1_1xint_1_1integer.html">integer</a> boost::xint::gcd </td>
+ <td class="memname">bool boost::xint::testStreams </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 class="paramname"></td>
+ <td> ) </td>
<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>
@@ -2585,9 +438,9 @@
</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>
+<dl class="see"><dt><b>See also:</b></dt><dd>xint::integer::integer(const std::string& str, size_t base) </dd>
<dd>
-<a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1" title="Converts a string into an integer.">xint::from_string</a> </dd></dl>
+xint::from_string </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>
@@ -2604,17 +457,17 @@
</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>
+<dl class="see"><dt><b>See also:</b></dt><dd>xint::is_prime </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>
+xint::random_prime </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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/namespaceboost_1_1xint_1_1blockable.html
==============================================================================
--- (empty file)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1blockable.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,2126 @@
+<!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::blockable Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li class="current">Namespaces</li>
+ <li>Classes</li>
+ <li>Files</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>Namespace List</li>
+ <li>Namespace Members</li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<a class="el" href="namespaceboost_1_1xint.html">xint</a>::<a class="el" href="namespaceboost_1_1xint_1_1blockable.html">blockable</a>
+ </div>
+</div>
+<div class="contents">
+<h1>boost::xint::blockable Namespace Reference</h1>
+<p>Contains the blockable integer type, and functions to operate on it.
+More...</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The blockable integer class. More...<br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a> (<a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a> (<a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t byBits)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">operator==</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">operator!=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">operator<</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">operator></a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">operator<=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">operator>=</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a43c166834c838c500713c571ff49ae7c">operator+</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">operator-</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">operator*</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">operator/</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">operator%</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">operator&</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">operator|</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">operator^</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">to</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">mulmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &by, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">sqrmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &e, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &m, bool noMontgomery)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">factorial</a> (size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a> (size_t size_in_bits, <a class="el" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &dividend, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a> (const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &d1, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &d2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
+</div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">operator<<</a> (std::basic_ostream< charT, traits > &out, const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">operator>></a> (std::basic_istream< charT, traits > &in, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> &n)</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains the blockable integer type, and functions to operate on it. </p>
+<p>The types and functions in the <code>blockable</code> namespace act just like the ones in the <code><a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the "pure" integer type, and functions to operate on it.">xint::core</a></code> namespace, except that they honor exception-blocking and support a Not-a-Number value.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd>exceptions </dd>
+<dd>
+nan </dd></dl>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a60245c96acca4efe2301939acb7ca798"></a><!-- doxytag: member="boost::xint::blockable::abs" ref="a60245c96acca4efe2301939acb7ca798" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::abs </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Returns the absolute value of an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>If <code>n</code> is zero or positive, returns <code>n</code>. Otherwise returns <code>-n</code>. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ada3b973466beb1c2b2e65718606c1cc8"></a><!-- doxytag: member="boost::xint::blockable::add" ref="ada3b973466beb1c2b2e65718606c1cc8" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::add </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the sum of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to add.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The sum of the parameters. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a42ded343a54837d6f0ac84399227ac8e"></a><!-- doxytag: member="boost::xint::blockable::bitwise_and" ref="a42ded343a54837d6f0ac84399227ac8e" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::bitwise_and </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Combine two integers using a bitwise <code>AND</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in both parameters turned on. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a30e1dfd31902219bf24cc843c543469f"></a><!-- doxytag: member="boost::xint::blockable::bitwise_or" ref="a30e1dfd31902219bf24cc843c543469f" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::bitwise_or </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Combine two integers using a bitwise <code>OR</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter turned on. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ad3c95f6466b3c77d940838331f9d0c3c"></a><!-- doxytag: member="boost::xint::blockable::bitwise_xor" ref="ad3c95f6466b3c77d940838331f9d0c3c" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::bitwise_xor </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Combine two integers using a bitwise <code>XOR</code> operation. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a1731eab251e1601451c3a7c6635c2194"></a><!-- doxytag: member="boost::xint::blockable::clearbit" ref="a1731eab251e1601451c3a7c6635c2194" args="(integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::blockable::clearbit </td>
+ <td>(</td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Sets a specific bit in an integer to zero. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ad4d320afe012be4d62cca1ee985daa95"></a><!-- doxytag: member="boost::xint::blockable::compare" ref="ad4d320afe012be4d62cca1ee985daa95" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::blockable::compare </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>b2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>ignoresign</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Compare two integer objects. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b1,b2</em> </td><td>The integers to compare. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>ignoresign</em> </td><td>If <code>true</code>, the absolute values of b1 and b2 are compared, instead of their signed values. Used internally.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A negative number if <code>b1</code> < <code>b2</code>; zero if <code>b1</code> == <code>b2</code>, or a positive number if <code>b1</code> > <code>b2</code>.</dd></dl>
+<p>This is the function behind all of the comparison operators. It might sometimes be useful directly as well. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns 0 instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a1a69ea437aacb48b0ce224a97eaf87f3"></a><!-- doxytag: member="boost::xint::blockable::divide" ref="a1a69ea437aacb48b0ce224a97eaf87f3" args="(const integer &dividend, const integer &divisor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::divide </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>dividend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>divisor</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>dividend,divisor</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer value of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>divisor</code> is zero. </td></tr>
+ </table>
+ </dd>
+</dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a022fd3c44ddeb39a78ad3202c51ade8a"></a><!-- doxytag: member="boost::xint::blockable::divide_r" ref="a022fd3c44ddeb39a78ad3202c51ade8a" args="(const integer &d1, const integer &d2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::pair< <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a>, <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> > boost::xint::blockable::divide_r </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>d2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d1</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>d2</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An <code>std::pair</code> containing the quotient and remainder of <code>d1</code> divided by <code>d2</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">xint::divide_by_zero</a></em> </td><td>if <code>d2</code> is zero. </td></tr>
+ </table>
+ </dd>
+</dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns an std::pair with two Not-a-Number values instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a48bbd62060daaf179abb8664de24c0c4"></a><!-- doxytag: member="boost::xint::blockable::factorial" ref="a48bbd62060daaf179abb8664de24c0c4" args="(size_t n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::factorial </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the value of <code>n!</code> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> factorial, defined as <code>1*2*3*...*n</code></dd></dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>Factorials get ridiculously huge, even with fairly small values of <code>n</code>. This function, when used with a large parameter, is the easiest way to exhaust the system's memory. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a2d59a617f6374118f622d37df7e8593b"></a><!-- doxytag: member="boost::xint::blockable::from_binary" ref="a2d59a617f6374118f622d37df7e8593b" args="(const std::string &str)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::from_binary </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Converts a binary representation of a number into an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>An <code>std::string</code> containing the bytes to convert, lowest byte first.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer representing the bytes.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd>xint::to_binary </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a90aa8c790fe7241999d14b4fc79e4a00"></a><!-- doxytag: member="boost::xint::blockable::from_string" ref="a90aa8c790fe7241999d14b4fc79e4a00" args="(const std::string &str, size_t base)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::from_string </td>
+ <td>(</td>
+ <td class="paramtype">const std::string & </td>
+ <td class="paramname"> <em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Converts a string into an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>The string to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>the base that the string representation of the number is in. This can be any number between 2 and 36 (inclusive). It can also be the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>, in which case the function will follow the standard C/C++ rules for interpreting a numeric constant: any number with a zero as the first digit is assumed to be base-8; any number with a leading zero-x or zero-X (such as 0x1f) is base-16, and anything else is base-10.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with the numeric value of the string in base <code>base</code>. If the string is <code>#NaN#</code>, then it will return <a class="el" href="nan.html">Not-a-Number</a>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a></em> </td><td>if there is not enough free memory to create the integer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when reading an integer from a stream, or when contructing one from a string.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f" title="Create an integer from a string representation.">integer::integer(const std::string& str, size_t base)</a> </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a86b6971f33fec78e0186a0e8ce337368"></a><!-- doxytag: member="boost::xint::blockable::gcd" ref="a86b6971f33fec78e0186a0e8ce337368" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::gcd </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the Greatest Common Denominator of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The greatest common denominator of the two integers, which will always be a positive number. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="afc792f94cf335a3e3dbdf09caae2937d"></a><!-- doxytag: member="boost::xint::blockable::getbit" ref="afc792f94cf335a3e3dbdf09caae2937d" args="(const integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::getbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Queries the value of a particular bit in an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit you're asking about.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the specified bit is set (has a value of one), <code>false</code> if it is clear. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns false instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3bf3a07f92c73e4fbd30452e057522f5"></a><!-- doxytag: member="boost::xint::blockable::highestbit" ref="a3bf3a07f92c73e4fbd30452e057522f5" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::blockable::highestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Obtains the index of the highest bit in an integer with a value of one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the highest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8f5f71a0e2e0c713295ede03d604d636"></a><!-- doxytag: member="boost::xint::blockable::invmod" ref="a8f5f71a0e2e0c713295ede03d604d636" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::invmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the modular inverse of a number in a modulus, if there is one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to retrieve the inverse of. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus to use.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The modular inverse of <code>n</code> in <code>m</code>. If <code>n</code> has no modular inverse in <code>m</code>, returns zero.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one. </td></tr>
+ </table>
+ </dd>
+</dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, it returns zero instead of throwing an exception. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0a6764881137a513c747b893aef16e9d"></a><!-- doxytag: member="boost::xint::blockable::is_prime" ref="a0a6764881137a513c747b893aef16e9d" args="(const integer &n, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int boost::xint::blockable::is_prime </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Tests an integer for primality. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to test. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>1 if <code>n</code> seems to be prime, 0 if it isn't, or -1 if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>n</code> is less than 2.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the Rabin-Miller probabilistic primality test. There is an infinitesimally small chance that it will think that a composite number is actually prime, but that is so small that it can be ignored for most practical purposes. If even that chance is too much, you can run this function over the number several times, it will use different random "witness" numbers each time.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns -1 instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a312ad948e2c326b228889bdb04131b49"></a><!-- doxytag: member="boost::xint::blockable::lcm" ref="a312ad948e2c326b228889bdb04131b49" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::lcm </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the Least Common Multiple of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The least common multiple of the two integers. If either integer is zero, then the return value will be zero, by convention; in all other cases, the return value will be a positive number. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ac761490fc23ecfb5017277529f2bf3a7"></a><!-- doxytag: member="boost::xint::blockable::log2" ref="ac761490fc23ecfb5017277529f2bf3a7" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::blockable::log2 </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the log<sub>2</sub> value of an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer log<sub>2</sub> value of the integer.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(log2(n)-1) will give you an integer with the highest set bit of <code>n</code>, assuming that <code>n</code> is non-zero.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>Similar to the <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a> function. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns 0 instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a9e7a17fbb2cd20db9d1a3431ea6ecdf5"></a><!-- doxytag: member="boost::xint::blockable::lowestbit" ref="a9e7a17fbb2cd20db9d1a3431ea6ecdf5" args="(const integer &n, size_t valueIfZero)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t boost::xint::blockable::lowestbit </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>valueIfZero</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Obtains the index of the lowest bit in an integer with a value of one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the lowest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns zero instead of throwing. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a2724cf5153be79d22b53230ae994f653"></a><!-- doxytag: member="boost::xint::blockable::mod" ref="a2724cf5153be79d22b53230ae994f653" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::mod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the remainder after dividing a number by another. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The dividend. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The divisor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> % <code>m</code>. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a455f9442a9d20ee8e5be198c8279d99c"></a><!-- doxytag: member="boost::xint::blockable::mulmod" ref="a455f9442a9d20ee8e5be198c8279d99c" args="(const integer &n, const integer &by, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::mulmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the modular product of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to multiply. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>n</code> * <code>by</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a9f79cef4aca96d97b00f7cde90d7eabd"></a><!-- doxytag: member="boost::xint::blockable::multiply" ref="a9f79cef4aca96d97b00f7cde90d7eabd" args="(const integer &n, const integer &by)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::multiply </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>by</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the product of two integers. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,by</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The product of the parameters.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Automatically uses the more-efficient squaring algorithm if it can trivially detect that the two parameters are copies of the same number. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a99e18d64a42f9a24069cbbe91e1dd035"></a><!-- doxytag: member="boost::xint::blockable::negate" ref="a99e18d64a42f9a24069cbbe91e1dd035" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::negate </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Return the additive inverse of an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>-n</code>. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ad590f6564f7b4ba124835dce5a49b6e8"></a><!-- doxytag: member="boost::xint::blockable::operator!" ref="ad590f6564f7b4ba124835dce5a49b6e8" args="(const integer &num1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::operator! </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a51e46fd4112a2fcff16e11d977f92e63"></a><!-- doxytag: member="boost::xint::blockable::operator!=" ref="a51e46fd4112a2fcff16e11d977f92e63" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::operator!= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a13908294b14450d3a12181f8f245baea"></a><!-- doxytag: member="boost::xint::blockable::operator%" ref="a13908294b14450d3a12181f8f245baea" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator% </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aab0835691ea26d99726423b8456c8dce"></a><!-- doxytag: member="boost::xint::blockable::operator&" ref="aab0835691ea26d99726423b8456c8dce" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator& </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa5b674570d38ee92b7ed20aec2eedbeb"></a><!-- doxytag: member="boost::xint::blockable::operator*" ref="aa5b674570d38ee92b7ed20aec2eedbeb" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator* </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a43c166834c838c500713c571ff49ae7c"></a><!-- doxytag: member="boost::xint::blockable::operator+" ref="a43c166834c838c500713c571ff49ae7c" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab13e7e95fd015038193d3babd65adb83"></a><!-- doxytag: member="boost::xint::blockable::operator+" ref="ab13e7e95fd015038193d3babd65adb83" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> & boost::xint::blockable::operator+ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="adde448bbc07e4a347dc78c74fcc8ddbf"></a><!-- doxytag: member="boost::xint::blockable::operator-" ref="adde448bbc07e4a347dc78c74fcc8ddbf" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aad0456bbbfcf1385355baef6ed7ee368"></a><!-- doxytag: member="boost::xint::blockable::operator-" ref="aad0456bbbfcf1385355baef6ed7ee368" args="(const integer &a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator- </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>a</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a45485a6d3b99c83332836a100e3159e0"></a><!-- doxytag: member="boost::xint::blockable::operator/" ref="a45485a6d3b99c83332836a100e3159e0" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator/ </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a03cbe2419b28b7d7bc86afe71158108e"></a><!-- doxytag: member="boost::xint::blockable::operator<" ref="a03cbe2419b28b7d7bc86afe71158108e" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::operator< </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af8e7b16a508aefda2738d854c3a4e55c"></a><!-- doxytag: member="boost::xint::blockable::operator<<" ref="af8e7b16a508aefda2738d854c3a4e55c" args="(std::basic_ostream< charT, traits > &out, const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_ostream<charT,traits>& boost::xint::blockable::operator<< </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_ostream< charT, traits > & </td>
+ <td class="paramname"> <em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l01022">1022</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2f826b80a2baf62af87d3335a260ee0d"></a><!-- doxytag: member="boost::xint::blockable::operator<=" ref="a2f826b80a2baf62af87d3335a260ee0d" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::operator<= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a30d62778d26a857f5b3ff6a56ebe6e6a"></a><!-- doxytag: member="boost::xint::blockable::operator==" ref="a30d62778d26a857f5b3ff6a56ebe6e6a" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::operator== </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab3826f291c742f4b980d34cec652173c"></a><!-- doxytag: member="boost::xint::blockable::operator>" ref="ab3826f291c742f4b980d34cec652173c" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::operator> </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afab66769cd37ad94e89559e55746a55b"></a><!-- doxytag: member="boost::xint::blockable::operator>=" ref="afab66769cd37ad94e89559e55746a55b" args="(const integer &num1, const integer &num2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool boost::xint::blockable::operator>= </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>num2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aced22cdcfc2eec503bf14d495c5642d8"></a><!-- doxytag: member="boost::xint::blockable::operator>>" ref="aced22cdcfc2eec503bf14d495c5642d8" args="(std::basic_istream< charT, traits > &in, integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename charT , typename traits > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">std::basic_istream<charT,traits>& boost::xint::blockable::operator>> </td>
+ <td>(</td>
+ <td class="paramtype">std::basic_istream< charT, traits > & </td>
+ <td class="paramname"> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l01034">1034</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aabec559201c8efd77965ee8b6f07a4ca"></a><!-- doxytag: member="boost::xint::blockable::operator^" ref="aabec559201c8efd77965ee8b6f07a4ca" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::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="ac5d01d4cfdb9adfc4d466811477b4927"></a><!-- doxytag: member="boost::xint::blockable::operator|" ref="ac5d01d4cfdb9adfc4d466811477b4927" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::operator| </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab554163bc27a115dbe5310dfc6f515e3"></a><!-- doxytag: member="boost::xint::blockable::pow" ref="ab554163bc27a115dbe5310dfc6f515e3" 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_1blockable_1_1integer.html">integer</a> boost::xint::blockable::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> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n,e</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> to the power of <code>e</code>. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a2f16c8a722f5a89748b154dc530ecff5"></a><!-- doxytag: member="boost::xint::blockable::pow2" ref="a2f16c8a722f5a89748b154dc530ecff5" args="(size_t e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::pow2 </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>e</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the value of 2<sup>e</sup> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>2 to the power of <code>e</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is a convenience function, to help with self-documenting code. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a924d7a2c8a1c8817d75d0985ff30ebf0"></a><!-- doxytag: member="boost::xint::blockable::powmod" ref="a924d7a2c8a1c8817d75d0985ff30ebf0" args="(const integer &n, const integer &e, const integer &m, bool noMontgomery)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::powmod </td>
+ <td>(</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. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to exponentiate. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>noMontgomery</em> </td><td>Used for testing, leave false for normal operation.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>pow</code>(n, <code>exponent</code>) % <code>modulus</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">xint::invalid_modulus</a></em> </td><td>if the modulus is less than one.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>Because this function keeps the intermediate results small, it is far faster and uses far less memory than writing out the equivalent calculations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>In addition, this function will use the Montgomery Reduction internally, if the modulus is an odd number (and if <code>noMontgomery</code> isn't set), which is almost always faster than the non-Montgomery method. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a8d6e418a9b7172091f434b7657a02908"></a><!-- doxytag: member="boost::xint::blockable::random_by_size" ref="a8d6e418a9b7172091f434b7657a02908" args="(size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::random_by_size </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>high_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>low_bit_on</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>can_be_negative</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Generates a random integer with specific attributes. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bits</em> </td><td>The maximum number of bits that you want the returned number to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>high_bit_on</em> </td><td>If <code>true</code>, the returned number will have exactly the requested size. If <code>false</code>, the upper bits may be zero, resulting in a number that is slightly smaller than requested. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>low_bit_on</em> </td><td>If <code>true</code>, the returned number will always be odd. If <code>false</code>, it has an equal chance of being odd or even. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>can_be_negative</em> </td><td>If <code>true</code>, the returned value has an equal chance of being positive or negative. If <code>false</code>, it will always be positive.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A random integer with the requested attributes.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the currently-defined random generator.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a3db40c31f1d6659d21986bfc96b7a13c"></a><!-- doxytag: member="boost::xint::blockable::random_prime" ref="a3db40c31f1d6659d21986bfc96b7a13c" args="(size_t size_in_bits, callback_t callback)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::random_prime </td>
+ <td>(</td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>size_in_bits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">callback_t </td>
+ <td class="paramname"> <em>callback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Generate a randomly-generated prime number of a particular bit-size. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>size_in_bits</em> </td><td>The number of bits that you want the returned value to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A randomly-generated prime integer with the specified number of bits, or zero if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function uses xint::is_prime. See the description of it for details of its limitations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>It also uses the library's currently-set random number generator. See the <a class="el" href="random.html">Random Number Functions page</a> for details on its limitations and requirements, and how to get cryptographically-secure random numbers.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ad121a71d8a161b9eaea24fcecf378393"></a><!-- doxytag: member="boost::xint::blockable::setbit" ref="ad121a71d8a161b9eaea24fcecf378393" args="(integer &n, size_t bit)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void boost::xint::blockable::setbit </td>
+ <td>(</td>
+ <td class="paramtype">integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>bit</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Sets a specific bit in an integer to one. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ac096f3f80627f005fd7b4bc69af9f7dd"></a><!-- doxytag: member="boost::xint::blockable::shift" ref="ac096f3f80627f005fd7b4bc69af9f7dd" 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_1blockable_1_1integer.html">integer</a> boost::xint::blockable::shift </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Bit-shift an integer, in either direction. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to shift it. If positive, it will shift left, negative will shift right.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a3a09db2ff23e3bf43bb01ffe1137cee8"></a><!-- doxytag: member="boost::xint::blockable::shift_left" ref="a3a09db2ff23e3bf43bb01ffe1137cee8" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::shift_left </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Left-shift an integer by a specified number of bits. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to left-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="ad1ac8c13f6b642be791f59a95f58639b"></a><!-- doxytag: member="boost::xint::blockable::shift_right" ref="ad1ac8c13f6b642be791f59a95f58639b" args="(const integer &n, size_t byBits)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::shift_right </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>byBits</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Right-shift an integer by a specified number of bits. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to right-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a30c49fd181989bba7260f99d695b66e5"></a><!-- doxytag: member="boost::xint::blockable::sqr" ref="a30c49fd181989bba7260f99d695b66e5" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::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> <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> times <code>n</code>.</dd></dl>
+<p>This function uses a faster algorithm than the standard multiplication one.<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Rewrite this to eliminate the inefficient addOverflow. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="aba0c3ada68c395cf941b4c0fbc574343"></a><!-- doxytag: member="boost::xint::blockable::sqrmod" ref="aba0c3ada68c395cf941b4c0fbc574343" args="(const integer &n, const integer &m)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::sqrmod </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>m</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Get the modular product of squaring an integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to square. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>sqr(n)</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="aa2bb7a673045f8a9b517e5903f9c10e5"></a><!-- doxytag: member="boost::xint::blockable::sqrt" ref="aa2bb7a673045f8a9b517e5903f9c10e5" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::sqrt </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Calculate the square root of <code>an</code> integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The largest integer that, when squared, is less than or equal to <code>n</code>. If <code>n</code> is not a perfect square, then this value will not be the exact square root.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">xint::cannot_represent</a></em> </td><td>if <code>n</code> is negative. </td></tr>
+ </table>
+ </dd>
+</dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a56cc023cafb9e92223c74dc780175bc2"></a><!-- doxytag: member="boost::xint::blockable::subtract" ref="a56cc023cafb9e92223c74dc780175bc2" args="(const integer &n1, const integer &n2)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">integer</a> boost::xint::blockable::subtract </td>
+ <td>(</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. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The difference between the parameters. </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a355624609c6e03048b8db0088fe0b436"></a><!-- doxytag: member="boost::xint::blockable::to" ref="a355624609c6e03048b8db0088fe0b436" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">T boost::xint::blockable::to </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td><code> [inline]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Efficiently converts from an xint::integer to a built-in integer type. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type to convert it to.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The numeric value of <code>n</code>, converted to the specified type.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">xint::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
+ </table>
+ </dd>
+</dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, returns T(0) instead of throwing. </dd></dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l01010">1010</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afef5469852d10aefa70e1c69b4433cc9"></a><!-- doxytag: member="boost::xint::blockable::to_binary" ref="afef5469852d10aefa70e1c69b4433cc9" args="(const integer &n)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::blockable::to_binary </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em></td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Creates a binary representation of an integer, lowest byte first. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string containing the binary representation.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function only stores the absolute value of <code>n</code>; if you need the sign, you must store it separately.</dd></dl>
+<dl class="user"><dt><b>If exceptions are blocked, returns an empty std::string instead of</b></dt><dd>throwing.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>A binary representation is sometimes used for persistent storage or transmission, as it is more space-efficient than a string representation.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd>xint::from_binary </dd></dl>
+ </p>
+
+</div>
+</div>
+<a class="anchor" id="a242028d310c35165b714a20e068a4e61"></a><!-- doxytag: member="boost::xint::blockable::to_string" ref="a242028d310c35165b714a20e068a4e61" args="(const integer &n, size_t base, bool uppercase)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string boost::xint::blockable::to_string </td>
+ <td>(</td>
+ <td class="paramtype">const integer & </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"> <em>base</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"> <em>uppercase</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Creates a string representation of the specified integer. <dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base, between 2 and 36 inclusive, to convert it to. Defaults to base 10. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>uppercase</em> </td><td>Whether to make alphabetic characters (for bases greater than ten) uppercase or not. Defaults to <code>false</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>. If <code>n</code> is Not-a-Number, returns the string <code>#NaN#</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when you ask the library to write an integer to a stream, but it's more flexible because you can specify any base between 2 and 36. (Streams only allow base-8, base-10, or base-16.) </dd></dl>
+</p>
+<dl class="note"><dt><b>Note:</b></dt><dd>If exceptions are blocked, it returns an empty string instead of throwing an exception. </dd></dl>
+
+</div>
+</div>
+</div>
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
+</body>
+</html>
Modified: sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html
==============================================================================
--- sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html (original)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1core.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,25 +29,54 @@
</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.
+<p>Contains the "pure" integer type, and functions to operate on it.
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">base_integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for the integer classes. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">integer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The <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="mdescLeft"> </td><td class="mdescRight">The core integer class. More...<br/></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>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">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="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">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="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">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="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">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="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">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="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="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_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="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_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="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_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="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">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="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="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_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="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">log2</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">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">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>
@@ -55,18 +84,6 @@
<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>
@@ -77,49 +94,103 @@
<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 colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">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="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">to_binary</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">Creates a binary representation of an integer, 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_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="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an xint::integer to a built-in integer type. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><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="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_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="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_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="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_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="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="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">Montgomery Reduction functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpef45384829a28a8031424a8c453ceaa0"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">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 integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="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_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="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_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="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_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="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_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="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_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="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1xint_1_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="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_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="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_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="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_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="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_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="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+</div></td></tr>
<tr><td class="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="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
+</div></td></tr>
<tr><td class="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>
+<p>Contains the "pure" integer type, and functions to operate on it. </p>
+<p>The types and functions in the <a class="el" href="namespaceboost_1_1xint_1_1core.html" title="Contains the "pure" integer type, and functions to operate on it.">xint::core</a> namespace ignore exception-blocking and do not support the Not-a-Number value. If you attempt to assign a Not-a-Number to a <a class="el" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>, it will throw an <a class="el" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">xint::not_a_number</a> exception. </p>
<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">
@@ -137,6 +208,15 @@
</div>
<div class="memdoc">
+<p>Returns the absolute value of an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>If <code>n</code> is zero or positive, returns <code>n</code>. Otherwise returns <code>-n</code>. </dd></dl>
+
</div>
</div>
<a class="anchor" id="aa8ac1151e65f51b3dca51e827c29af66"></a><!-- doxytag: member="boost::xint::core::add" ref="aa8ac1151e65f51b3dca51e827c29af66" args="(const integer &n1, const integer &n2)" -->
@@ -164,6 +244,15 @@
</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="aab6badbf5997e33714d0dbe54c16375f"></a><!-- doxytag: member="boost::xint::core::bitwise_and" ref="aab6badbf5997e33714d0dbe54c16375f" args="(const integer &n1, const integer &n2)" -->
@@ -191,6 +280,15 @@
</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 integer with all bits that are set in both parameters turned on. </dd></dl>
+
</div>
</div>
<a class="anchor" id="a04384ebf492038c4ba83af9736412c9b"></a><!-- doxytag: member="boost::xint::core::bitwise_or" ref="a04384ebf492038c4ba83af9736412c9b" args="(const integer &n1, const integer &n2)" -->
@@ -218,6 +316,15 @@
</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 integer with all bits that are set in either parameter turned on. </dd></dl>
+
</div>
</div>
<a class="anchor" id="a86446e5e38a977b68f041dfa4b82a385"></a><!-- doxytag: member="boost::xint::core::bitwise_xor" ref="a86446e5e38a977b68f041dfa4b82a385" args="(const integer &n1, const integer &n2)" -->
@@ -245,6 +352,15 @@
</div>
<div class="memdoc">
+<p>Combine two integers using a bitwise <code>XOR</code> operation. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n1,n2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with all bits that are set in either parameter, but not both, turned on. </dd></dl>
+
</div>
</div>
<a class="anchor" id="abd43d348da182e32e931743d1837f849"></a><!-- doxytag: member="boost::xint::core::clearbit" ref="abd43d348da182e32e931743d1837f849" args="(integer &n, size_t bit)" -->
@@ -272,6 +388,16 @@
</div>
<div class="memdoc">
+<p>Sets a specific bit in an integer to zero. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+
</div>
</div>
<a class="anchor" id="a37bbe9d9165afb0a3f20df233a9db07f"></a><!-- doxytag: member="boost::xint::core::compare" ref="a37bbe9d9165afb0a3f20df233a9db07f" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
@@ -305,6 +431,17 @@
</div>
<div class="memdoc">
+<p>Compare two integer objects. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b1,b2</em> </td><td>The integers to compare. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>ignoresign</em> </td><td>If <code>true</code>, the absolute values of b1 and b2 are compared, instead of their signed values. Used internally.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A negative number if <code>b1</code> < <code>b2</code>; zero if <code>b1</code> == <code>b2</code>, or a positive number if <code>b1</code> > <code>b2</code>.</dd></dl>
+<p>This is the function behind all of the comparison operators. It might sometimes be useful directly as well. </p>
+
</div>
</div>
<a class="anchor" id="ad09c66a61457feb23505d26adc116530"></a><!-- doxytag: member="boost::xint::core::divide" ref="ad09c66a61457feb23505d26adc116530" args="(const integer &dividend, const integer &divisor)" -->
@@ -332,6 +469,21 @@
</div>
<div class="memdoc">
+<p>Calculate how many <code>dividends</code> would fit into <code>divisor</code>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>dividend,divisor</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer value of <code>dividend</code> divided by <code>divisor</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_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="a731b3943a2e1bc95ec34a32291754ad4"></a><!-- doxytag: member="boost::xint::core::divide_r" ref="a731b3943a2e1bc95ec34a32291754ad4" args="(const integer &d1, const integer &d2)" -->
@@ -359,6 +511,22 @@
</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>
+
</div>
</div>
<a class="anchor" id="ab82432c3d99638bb2f56304cf44a405a"></a><!-- doxytag: member="boost::xint::core::factorial" ref="ab82432c3d99638bb2f56304cf44a405a" args="(size_t n)" -->
@@ -377,6 +545,16 @@
</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="a626c8b1f3bd3f6b03a18412c8419bad8"></a><!-- doxytag: member="boost::xint::core::from_binary" ref="a626c8b1f3bd3f6b03a18412c8419bad8" args="(const std::string &str)" -->
@@ -395,6 +573,16 @@
</div>
<div class="memdoc">
+<p>Converts a binary representation of a number into an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>An <code>std::string</code> containing the bytes to convert, lowest byte first.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer representing the bytes.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd>xint::to_binary </dd></dl>
+
</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)" -->
@@ -422,6 +610,26 @@
</div>
<div class="memdoc">
+<p>Converts a string into an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>str</em> </td><td>The string to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>the base that the string representation of the number is in. This can be any number between 2 and 36 (inclusive). It can also be the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>, in which case the function will follow the standard C/C++ rules for interpreting a numeric constant: any number with a zero as the first digit is assumed to be base-8; any number with a leading zero-x or zero-X (such as 0x1f) is base-16, and anything else is base-10.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>An integer with the numeric value of the string in base <code>base</code>. If the string is <code>#NaN#</code>, then it will return <a class="el" href="nan.html">Not-a-Number</a>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">xint::overflow_error</a></em> </td><td>if there is not enough free memory to create the integer. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if the base parameter is not between 2 and 36 (inclusive) or the constant <a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">xint::autobase</a>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">xint::invalid_digit</a></em> </td><td>if the string contains any digit that cannot be part of a number in the specified base, or if there are no valid digits.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when reading an integer from a stream, or when contructing one from a string.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html#aa5b9d9f104ce714700b4a3a40eefb80f" title="Create an integer from a string representation.">integer::integer(const std::string& str, size_t base)</a> </dd></dl>
+
</div>
</div>
<a class="anchor" id="a1d598caa371e7bffba98f78df726674e"></a><!-- doxytag: member="boost::xint::core::fromMontgomeryForm" ref="a1d598caa371e7bffba98f78df726674e" args="(const integer &n, const integer &m)" -->
@@ -449,7 +657,7 @@
</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>
+<p>Returns the integer from the Montgomery form of a number. Used for testing. </p>
</div>
</div>
@@ -478,6 +686,15 @@
</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="a06f4b3f75bb5e648e865f20990f8154c"></a><!-- doxytag: member="boost::xint::core::getbit" ref="a06f4b3f75bb5e648e865f20990f8154c" args="(const integer &n, size_t bit)" -->
@@ -505,6 +722,16 @@
</div>
<div class="memdoc">
+<p>Queries the value of a particular bit in an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit you're asking about.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the specified bit is set (has a value of one), <code>false</code> if it is clear. </dd></dl>
+
</div>
</div>
<a class="anchor" id="a2a32641fadc89dc7385b2f1a0af862dc"></a><!-- doxytag: member="boost::xint::core::highestbit" ref="a2a32641fadc89dc7385b2f1a0af862dc" args="(const integer &n, size_t valueIfZero)" -->
@@ -532,6 +759,16 @@
</div>
<div class="memdoc">
+<p>Obtains the index of the highest bit in an integer with a value of one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the highest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+
</div>
</div>
<a class="anchor" id="aa6942deffea28a32072479fe663acaa2"></a><!-- doxytag: member="boost::xint::core::inverse0" ref="aa6942deffea28a32072479fe663acaa2" args="(const integer &n)" -->
@@ -579,6 +816,22 @@
</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>
+
</div>
</div>
<a class="anchor" id="a79626b71d9ebb21c2c07e105c8b1ad89"></a><!-- doxytag: member="boost::xint::core::is_prime" ref="a79626b71d9ebb21c2c07e105c8b1ad89" args="(const integer &n, callback_t callback)" -->
@@ -606,6 +859,24 @@
</div>
<div class="memdoc">
+<p>Tests an integer for primality. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The number to test. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>1 if <code>n</code> seems to be prime, 0 if it isn't, or -1 if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>n</code> is less than 2.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the Rabin-Miller probabilistic primality test. There is an infinitesimally small chance that it will think that a composite number is actually prime, but that is so small that it can be ignored for most practical purposes. If even that chance is too much, you can run this function over the number several times, it will use different random "witness" numbers each time.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+
</div>
</div>
<a class="anchor" id="ad8783802f3252c9c3143eaca76acd9a6"></a><!-- doxytag: member="boost::xint::core::lcm" ref="ad8783802f3252c9c3143eaca76acd9a6" args="(const integer &num1, const integer &num2)" -->
@@ -633,6 +904,15 @@
</div>
<div class="memdoc">
+<p>Calculate the Least Common Multiple of two integers. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>num1,num2</em> </td><td>The integers to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The least common multiple of the two integers. If either integer is zero, then the return value will be zero, by convention; in all other cases, the return value will be a positive number. </dd></dl>
+
</div>
</div>
<a class="anchor" id="aa3924902931d74fe0a7d2c6daf9ab028"></a><!-- doxytag: member="boost::xint::core::log2" ref="aa3924902931d74fe0a7d2c6daf9ab028" args="(const integer &n)" -->
@@ -651,6 +931,17 @@
</div>
<div class="memdoc">
+<p>Get the log<sub>2</sub> value of an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The integer log<sub>2</sub> value of the integer.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(log2(n)-1) will give you an integer with the highest set bit of <code>n</code>, assuming that <code>n</code> is non-zero.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>Similar to the <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a> function. </dd></dl>
+
</div>
</div>
<a class="anchor" id="afbb649428a445bd8a6e7d9bcfab69707"></a><!-- doxytag: member="boost::xint::core::lowestbit" ref="afbb649428a445bd8a6e7d9bcfab69707" args="(const integer &n, size_t valueIfZero)" -->
@@ -678,6 +969,16 @@
</div>
<div class="memdoc">
+<p>Obtains the index of the lowest bit in an integer with a value of one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to query. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>valueIfZero</em> </td><td>The value to return if <code>n</code> is zero (as there is no correct answer in that case).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The zero-based index of the lowest one-bit in the integer, or <code>valueIfZero</code> if the integer contains no set bits. </dd></dl>
+
</div>
</div>
<a class="anchor" id="ae02fe53b2dc0340dcd66c44e689e7338"></a><!-- doxytag: member="boost::xint::core::mod" ref="ae02fe53b2dc0340dcd66c44e689e7338" args="(const integer &n, const integer &m)" -->
@@ -705,6 +1006,16 @@
</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="a902d87635063ba89629799b032e6a53d"></a><!-- doxytag: member="boost::xint::core::montgomeryMultiplyMod" ref="a902d87635063ba89629799b032e6a53d" args="(const integer &a, const integer &b, const integer &n, digit_t nPrime0)" -->
@@ -834,6 +1145,17 @@
</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="a1a4424b4d8b045a3484463e588368593"></a><!-- doxytag: member="boost::xint::core::multiply" ref="a1a4424b4d8b045a3484463e588368593" args="(const integer &n, const integer &by)" -->
@@ -861,6 +1183,16 @@
</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="a0103381c7bca2e5a904ad3b75904e982"></a><!-- doxytag: member="boost::xint::core::negate" ref="a0103381c7bca2e5a904ad3b75904e982" args="(const integer &n)" -->
@@ -879,6 +1211,15 @@
</div>
<div class="memdoc">
+<p>Return the additive inverse of an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>-n</code>. </dd></dl>
+
</div>
</div>
<a class="anchor" id="aa86f6238d476cfdb8f534a8cb289a7e5"></a><!-- doxytag: member="boost::xint::core::operator!" ref="aa86f6238d476cfdb8f534a8cb289a7e5" args="(const integer &num1)" -->
@@ -1178,7 +1519,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00867">867</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -1317,7 +1658,7 @@
</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>
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00893">893</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -1400,6 +1741,15 @@
</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="a72afdedb16eff4404641511681e08116"></a><!-- doxytag: member="boost::xint::core::pow2" ref="a72afdedb16eff4404641511681e08116" args="(size_t e)" -->
@@ -1418,6 +1768,16 @@
</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="a6d465ee56d6ba0263ac4648bd8b68bc4"></a><!-- doxytag: member="boost::xint::core::powmod" ref="a6d465ee56d6ba0263ac4648bd8b68bc4" args="(const integer &n, const integer &e, const integer &m, bool noMontgomery)" -->
@@ -1457,6 +1817,26 @@
</div>
<div class="memdoc">
+<p>Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to exponentiate. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>e</em> </td><td>The exponent. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>noMontgomery</em> </td><td>Used for testing, leave false for normal operation.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>pow</code>(n, <code>exponent</code>) % <code>modulus</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_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="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)" -->
@@ -1496,6 +1876,22 @@
</div>
<div class="memdoc">
+<p>Generates a random integer with specific attributes. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bits</em> </td><td>The maximum number of bits that you want the returned number to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>high_bit_on</em> </td><td>If <code>true</code>, the returned number will have exactly the requested size. If <code>false</code>, the upper bits may be zero, resulting in a number that is slightly smaller than requested. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>low_bit_on</em> </td><td>If <code>true</code>, the returned number will always be odd. If <code>false</code>, it has an equal chance of being odd or even. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>can_be_negative</em> </td><td>If <code>true</code>, the returned value has an equal chance of being positive or negative. If <code>false</code>, it will always be positive.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A random integer with the requested attributes.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function uses the currently-defined random generator.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="random.html">The XInt Random Number System</a> </dd>
+<dd>
+<a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
+
</div>
</div>
<a class="anchor" id="a5f117503768fded4de58ded6d0c5513e"></a><!-- doxytag: member="boost::xint::core::random_prime" ref="a5f117503768fded4de58ded6d0c5513e" args="(size_t size_in_bits, callback_t callback)" -->
@@ -1523,6 +1919,25 @@
</div>
<div class="memdoc">
+<p>Generate a randomly-generated prime number of a particular bit-size. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>size_in_bits</em> </td><td>The number of bits that you want the returned value to have. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>callback</em> </td><td>An optional function that will be called regularly during the operation. If it returns <code>false</code>, the function will immediately return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A randomly-generated prime integer with the specified number of bits, or zero if the provided callback function cancelled the operation.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em> </td><td>if <code>size_in_bits</code> is less than two.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function uses xint::is_prime. See the description of it for details of its limitations.</dd></dl>
+<dl class="user"><dt><b></b></dt><dd>It also uses the library's currently-set random number generator. See the <a class="el" href="random.html">Random Number Functions page</a> for details on its limitations and requirements, and how to get cryptographically-secure random numbers.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="primes.html">Generating Prime Numbers</a> </dd></dl>
+
</div>
</div>
<a class="anchor" id="aae966bbb23d33801b34108f4490b0778"></a><!-- doxytag: member="boost::xint::core::setbit" ref="aae966bbb23d33801b34108f4490b0778" args="(integer &n, size_t bit)" -->
@@ -1550,6 +1965,16 @@
</div>
<div class="memdoc">
+<p>Sets a specific bit in an integer to one. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>bit</em> </td><td>The zero-based index of the bit to change.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Nothing. </dd></dl>
+
</div>
</div>
<a class="anchor" id="ab5d1310559b3ac9857e3475889b06b1a"></a><!-- doxytag: member="boost::xint::core::shift" ref="ab5d1310559b3ac9857e3475889b06b1a" args="(const integer &n, int byBits)" -->
@@ -1577,6 +2002,16 @@
</div>
<div class="memdoc">
+<p>Bit-shift an integer, in either direction. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to shift it. If positive, it will shift left, negative will shift right.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+
</div>
</div>
<a class="anchor" id="a51a385d6a7e71b555b152de0f40cd9fc"></a><!-- doxytag: member="boost::xint::core::shift_left" ref="a51a385d6a7e71b555b152de0f40cd9fc" args="(const integer &n, size_t byBits)" -->
@@ -1604,6 +2039,16 @@
</div>
<div class="memdoc">
+<p>Left-shift an integer by a specified number of bits. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to left-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+
</div>
</div>
<a class="anchor" id="ac456d45328b682c029af422923298253"></a><!-- doxytag: member="boost::xint::core::shift_right" ref="ac456d45328b682c029af422923298253" args="(const integer &n, size_t byBits)" -->
@@ -1631,6 +2076,16 @@
</div>
<div class="memdoc">
+<p>Right-shift an integer by a specified number of bits. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>byBits</em> </td><td>The number of bits to right-shift it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit-shifted integer. </dd></dl>
+
</div>
</div>
<a class="anchor" id="a9bd005ab3992dc51d6c95fdee987f2fe"></a><!-- doxytag: member="boost::xint::core::sqr" ref="a9bd005ab3992dc51d6c95fdee987f2fe" args="(const integer &n)" -->
@@ -1649,6 +2104,17 @@
</div>
<div class="memdoc">
+<p>Calculate the value of n<sup>2</sup> </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>n</code> times <code>n</code>.</dd></dl>
+<p>This function uses a faster algorithm than the standard multiplication one.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Rewrite this to eliminate the inefficient addOverflow. </dd></dl>
+
</div>
</div>
<a class="anchor" id="abaf712bcc261145845c49e2e07a8c23c"></a><!-- doxytag: member="boost::xint::core::sqrmod" ref="abaf712bcc261145845c49e2e07a8c23c" args="(const integer &n, const integer &m)" -->
@@ -1676,6 +2142,17 @@
</div>
<div class="memdoc">
+<p>Get the modular product of squaring an integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to square. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>The modulus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The result of <code>sqr(n)</code> % <code>m</code>.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is purely a convenience function, to make it easier to write self-documenting code. It does not provide any additional efficiency over writing out the calculation. </dd></dl>
+
</div>
</div>
<a class="anchor" id="a9ebf35bf53baa1eddf9a84dc719a5d15"></a><!-- doxytag: member="boost::xint::core::sqrt" ref="a9ebf35bf53baa1eddf9a84dc719a5d15" args="(const integer &n)" -->
@@ -1694,6 +2171,21 @@
</div>
<div class="memdoc">
+<p>Calculate the square root of <code>an</code> integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The value to operate on.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The largest integer that, when squared, is less than or equal to <code>n</code>. If <code>n</code> is not a perfect square, then this value will not be the exact square root.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_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="aa1d93a8d3a437f7b9df70ea00d48f355"></a><!-- doxytag: member="boost::xint::core::subtract" ref="aa1d93a8d3a437f7b9df70ea00d48f355" args="(const integer &n1, const integer &n2)" -->
@@ -1721,6 +2213,15 @@
</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="a2cc4b19211f94878d3fe4fc50dbe24a3"></a><!-- doxytag: member="boost::xint::core::to" ref="a2cc4b19211f94878d3fe4fc50dbe24a3" args="(const integer &n)" -->
@@ -1741,7 +2242,28 @@
</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>
+<p>Efficiently converts from an xint::integer to a built-in integer type. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>The type to convert it to.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The numeric value of <code>n</code>, converted to the specified type.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">xint::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00850">850</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
</div>
</div>
@@ -1761,6 +2283,19 @@
</div>
<div class="memdoc">
+<p>Creates a binary representation of an integer, lowest byte first. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string containing the binary representation.</dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This function only stores the absolute value of <code>n</code>; if you need the sign, you must store it separately.</dd></dl>
+<dl class="user"><dt><b>If exceptions are blocked, returns an empty std::string instead of</b></dt><dd>throwing.</dd></dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>A binary representation is sometimes used for persistent storage or transmission, as it is more space-efficient than a string representation.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd>xint::from_binary </dd></dl>
+
</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)" -->
@@ -1794,6 +2329,24 @@
</div>
<div class="memdoc">
+<p>Creates a string representation of the specified integer. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>The integer to convert. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>The base, between 2 and 36 inclusive, to convert it to. Defaults to base 10. </td></tr>
+ <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>uppercase</em> </td><td>Whether to make alphabetic characters (for bases greater than ten) uppercase or not. Defaults to <code>false</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The string value of <code>n</code>. If <code>n</code> is Not-a-Number, returns the string <code>#NaN#</code>.</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">xint::invalid_base</a></em> </td><td>if base is less than two or greater than 36.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="remark"><dt><b>Remarks:</b></dt><dd>This is the function that's called when you ask the library to write an integer to a stream, but it's more flexible because you can specify any base between 2 and 36. (Streams only allow base-8, base-10, or base-16.) </dd></dl>
+
</div>
</div>
<a class="anchor" id="a4a33279cf67c53f80a4e5935f0515d4d"></a><!-- doxytag: member="boost::xint::core::toMontgomeryForm" ref="a4a33279cf67c53f80a4e5935f0515d4d" args="(const integer &n, const integer &m)" -->
@@ -1826,8 +2379,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html
==============================================================================
--- sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html (original)
+++ sandbox/xint/doc/namespaceboost_1_1xint_1_1detail.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -40,7 +40,7 @@
<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 class="mdescLeft"> </td><td class="mdescRight">Holds the internal details of an xint::integer. More...<br/></td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uintmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::uint_t<br class="typebreak"/>
@@ -56,7 +56,7 @@
<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>
+</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>
@@ -231,8 +231,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespacemembers.html
==============================================================================
--- sandbox/xint/doc/namespacemembers.html (original)
+++ sandbox/xint/doc/namespacemembers.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -59,12 +59,12 @@
<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
<li>abs()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable</a>
</li>
<li>allow_exceptions()
: <a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint</a>
@@ -81,15 +81,15 @@
</li>
<li>bitwise_and()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable</a>
</li>
<li>bitwise_or()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable</a>
</li>
<li>bitwise_xor()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable</a>
</li>
<li>block_exceptions()
: <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint</a>
@@ -103,11 +103,11 @@
</li>
<li>clearbit()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable</a>
</li>
<li>compare()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core</a>
</li>
</ul>
@@ -126,12 +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_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core</a>
</li>
<li>divide_r()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core</a>
</li>
<li>doubledigit_hibit
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">boost::xint::detail</a>
@@ -151,16 +151,16 @@
<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
<li>factorial()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable</a>
</li>
<li>fromMontgomeryForm()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core</a>
@@ -170,15 +170,15 @@
<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
<li>gcd()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core</a>
</li>
<li>get_random()
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail</a>
</li>
<li>getbit()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable</a>
</li>
</ul>
@@ -186,7 +186,7 @@
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>highestbit()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable</a>
</li>
</ul>
@@ -196,27 +196,27 @@
: <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_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
</li>
<li>is_prime()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
<li>lcm()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable</a>
</li>
<li>lowestbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable</a>
, <a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core</a>
</li>
</ul>
@@ -224,8 +224,8 @@
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
<li>mod()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core</a>
</li>
<li>montgomeryMultiplyMod()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core</a>
@@ -237,12 +237,12 @@
: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable</a>
</li>
</ul>
@@ -252,8 +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_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core</a>
</li>
<li>no_callback
: <a class="el" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">boost::xint</a>
@@ -263,73 +263,73 @@
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>operator!()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core</a>
</li>
<li>operator!=()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable</a>
</li>
<li>operator%()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable</a>
</li>
<li>operator*()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core</a>
</li>
<li>operator+()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core</a>
</li>
<li>operator-()
-: <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_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable</a>
, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable</a>
</li>
<li>operator/()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core</a>
</li>
<li>operator<()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core</a>
</li>
<li>operator<<()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">boost::xint::blockable</a>
</li>
<li>operator<=()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core</a>
</li>
<li>operator==()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core</a>
</li>
<li>operator>()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable</a>
</li>
<li>operator>=()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable</a>
</li>
<li>operator>>()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">boost::xint::blockable</a>
</li>
<li>operator^()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core</a>
</li>
<li>operator|()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core</a>
</li>
<li>opt_secure_mode()
: <a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint</a>
@@ -342,28 +342,28 @@
<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
<li>pow()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable</a>
</li>
</ul>
<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
<li>random_by_size()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
</li>
<li>random_prime()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core</a>
</li>
</ul>
@@ -374,36 +374,36 @@
, <a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint</a>
</li>
<li>setbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable</a>
, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core</a>
</li>
<li>shift()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable</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_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable</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_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable</a>
</li>
<li>sqr()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core</a>
</li>
<li>sqrmod()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable</a>
</li>
</ul>
@@ -434,16 +434,16 @@
: <a class="el" href="namespaceboost_1_1xint.html#ace6d9f008e78329286fc9003896667cd">boost::xint</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">boost::xint::blockable</a>
</li>
<li>to_binary()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core</a>
</li>
<li>to_string()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core</a>
</li>
<li>token
: <a class="el" href="namespaceboost_1_1xint.html#a8554e5ef0fa7ba2da83c8f01a9bb1128">boost::xint</a>
@@ -453,8 +453,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespacemembers_func.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_func.html (original)
+++ sandbox/xint/doc/namespacemembers_func.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -59,12 +59,12 @@
<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
<li>abs()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable</a>
</li>
<li>allow_exceptions()
: <a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint</a>
@@ -75,14 +75,14 @@
<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
<li>bitwise_and()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable</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_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable</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_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable</a>
, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core</a>
</li>
<li>block_exceptions()
@@ -94,23 +94,23 @@
<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
<li>clearbit()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a96d452df71ac6799a7041647b4b106df">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable</a>
</li>
<li>compare()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
<li>divide()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core</a>
</li>
<li>divide_r()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core</a>
</li>
</ul>
@@ -124,16 +124,16 @@
<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
<li>factorial()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable</a>
</li>
<li>fromMontgomeryForm()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1d598caa371e7bffba98f78df726674e">boost::xint::core</a>
@@ -143,15 +143,15 @@
<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
<li>gcd()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core</a>
</li>
<li>get_random()
: <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail</a>
</li>
<li>getbit()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ac00836bdc530b3eaf0a9b9f2e208273b">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable</a>
</li>
</ul>
@@ -159,7 +159,7 @@
<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
<li>highestbit()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#aec002c076eff13d0382c5d2cd6de1d60">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable</a>
</li>
</ul>
@@ -169,27 +169,27 @@
: <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_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core</a>
</li>
<li>is_prime()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
<li>lcm()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable</a>
</li>
<li>lowestbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a783e728f8221cd424d6f7f5d5f67ec40">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable</a>
, <a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core</a>
</li>
</ul>
@@ -197,8 +197,8 @@
<h3><a class="anchor" id="index_m">- m -</a></h3><ul>
<li>mod()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core</a>
</li>
<li>montgomeryMultiplyMod()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core</a>
@@ -210,93 +210,93 @@
: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable</a>
</li>
</ul>
<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
<li>negate()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core</a>
</li>
</ul>
<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
<li>operator!()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core</a>
</li>
<li>operator!=()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable</a>
</li>
<li>operator%()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable</a>
</li>
<li>operator*()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">boost::xint::core</a>
</li>
<li>operator+()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core</a>
</li>
<li>operator-()
-: <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_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable</a>
, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable</a>
</li>
<li>operator/()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">boost::xint::core</a>
</li>
<li>operator<()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core</a>
</li>
<li>operator<<()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">boost::xint::blockable</a>
</li>
<li>operator<=()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">boost::xint::core</a>
</li>
<li>operator==()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">boost::xint::core</a>
</li>
<li>operator>()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable</a>
</li>
<li>operator>=()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable</a>
</li>
<li>operator>>()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">boost::xint::blockable</a>
</li>
<li>operator^()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core</a>
</li>
<li>operator|()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core</a>
</li>
<li>opt_secure_mode()
: <a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint</a>
@@ -309,28 +309,28 @@
<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
<li>pow()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable</a>
</li>
</ul>
<h3><a class="anchor" id="index_r">- r -</a></h3><ul>
<li>random_by_size()
-: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core</a>
</li>
<li>random_prime()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core</a>
</li>
</ul>
@@ -341,36 +341,36 @@
, <a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint</a>
</li>
<li>setbit()
-: <a class="el" href="namespaceboost_1_1xint.html#a6278915cf51b0d448a9db40031226182">boost::xint</a>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable</a>
, <a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core</a>
</li>
<li>shift()
: <a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable</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_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable</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_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core</a>
-, <a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable</a>
</li>
<li>sqr()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core</a>
</li>
<li>sqrmod()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable</a>
</li>
</ul>
@@ -401,24 +401,24 @@
: <a class="el" href="namespaceboost_1_1xint.html#ace6d9f008e78329286fc9003896667cd">boost::xint</a>
</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>
+: <a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">boost::xint::blockable</a>
</li>
<li>to_binary()
-: <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>
+: <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core</a>
</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_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core</a>
+, <a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable</a>
</li>
<li>toMontgomeryForm()
: <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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespacemembers_type.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_type.html (original)
+++ sandbox/xint/doc/namespacemembers_type.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -49,8 +49,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespacemembers_vars.html
==============================================================================
--- sandbox/xint/doc/namespacemembers_vars.html (original)
+++ sandbox/xint/doc/namespacemembers_vars.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -61,8 +61,8 @@
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/namespaces.html
==============================================================================
--- sandbox/xint/doc/namespaces.html (original)
+++ sandbox/xint/doc/namespaces.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -28,13 +28,14 @@
<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 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.html">boost::xint</a></td><td class="indexvalue">The common functions are within this namespace </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td><td class="indexvalue">Contains the blockable integer type, and functions to operate on it </td></tr>
+ <tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td><td class="indexvalue">Contains the "pure" integer type, and functions to operate on it </td></tr>
<tr><td class="indexkey"><a class="el" href="namespaceboost_1_1xint_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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/namespacexint.html
==============================================================================
--- sandbox/xint/doc/namespacexint.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,2795 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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>
-<div class="contents">
-<h1>xint Namespace Reference</h1>
-<p>All of the functions in the XInt library 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="namespacexint_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="classxint_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="classxint_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="classxint_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="classxint_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="classxint_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="classxint_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="classxint_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="classxint_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="classxint_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="classxint_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="classxint_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="structxint_1_1detail_1_1token.html">detail::token</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ad63045584f06221eb6a7581ad3091582">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="namespacexint.html#ac8a660c33746c536469d347307b8da7a">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="namespacexint.html#a07bc7378c8a55e5f92aaef6d8b8ce952">getbit</a> (const <a class="el" href="classxint_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="classxint_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="namespacexint.html#adf2652627e78682c17e120816987984a">setbit</a> (<a class="el" href="classxint_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="classxint_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="namespacexint.html#a8982e3e3ab7c1c763416eadc479d9724">clearbit</a> (<a class="el" href="classxint_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="classxint_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="namespacexint.html#ae04d70f50c4ce73d27ab32b1bf3520f2">lowestbit</a> (const <a class="el" href="classxint_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="classxint_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="namespacexint.html#ae08828243165ef3f397461507368a6e5">highestbit</a> (const <a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a06138585f07fe098e24718c46e3078e1">bitwise_and</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a8cd0a0dbc779e5a75c9e2f8027474e9a">bitwise_or</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a9ffe18a09f5dd354af7b967b032d3cbe">bitwise_xor</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a4f4dacd6f9398aaa500112731ab713ce">shift</a> (const <a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a6799cc3c4d8c963279be64b209bfd3b6">shift_left</a> (const <a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a49a5a4220cb88b7446545e4b65950473">shift_right</a> (const <a class="el" href="classxint_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="classxint_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="namespacexint.html#aff82dd47fae4297b96282371abf4db06">compare</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &b1, const <a class="el" href="classxint_1_1integer.html">integer</a> &b2, bool ignoresign)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ac9e11516ac502e97be1902cde50f97e7">gcd</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &num1, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a17c5e4e807cfa425f48d9f5b464bc8dc">lcm</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &num1, const <a class="el" href="classxint_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="namespacexint.html#a820d89c1d761a0a2c06479b1c1f9cecd">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="namespacexint.html#ad55aa4d44083238d9ec313511f5b1dfa">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="namespacexint.html#aa074495871d366c760c5b0713f5ef048">log2</a> (const <a class="el" href="classxint_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="classxint_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="namespacexint.html#a675c4fe6ddda6db915450d054ed640ba">operator!</a> (const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ad32051708c2a2baafa0340e19e90217b">operator==</a> (const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#aefda934d0ffacd0f44fcbbdfee19a139">operator!=</a> (const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a4f4a4771bf443e6724abbd18173ecc86">operator<</a> (const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a1229d1f1efbdf3ffeac8b2964ca66093">operator></a> (const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ab9d5f34c4d4bed1c86380d4f72edcd9b">operator<=</a> (const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a766324a6f216f3b49a3e9aa885e9531c">operator>=</a> (const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">xint::integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classxint_1_1integer.html">integer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a586fb0eb69100ec74be94008ac26670d">operator+</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a8a510361ed458133ebfa5fd95f8d9c27">operator-</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a211ff80bb081c08674272cfcae736a93">operator+</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a1e09422b575c6d29ea5c0d627b79c28e">operator-</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#aea36ad9037f109576d4f95ec72b5c825">operator*</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a701217f7824c3e935fca25147da23807">operator/</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ae0505757986a9c7133552552471aae24">operator%</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &num1, const <a class="el" href="classxint_1_1integer.html">integer</a> &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a742550f1c62ac8c2bde8e1ceab2a466c">operator&</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#afa8f2a0ac996ad45efc73b2aa056cae2">operator|</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_1_1integer.html">integer</a> &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a81722cd257bc950ba7c56a202492544f">operator^</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_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="namespacexint.html#a016c9573ff48411847edf86c406946a0">to_string</a> (const <a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ad9dcb2b835be5f8ee918979945911ac0">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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ac2ac2f74b45e4179560d845e6310be9a">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="classxint_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="namespacexint.html#ab8f33201a251e3e118dc82f214e22aeb">to_binary</a> (const <a class="el" href="classxint_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="classxint_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="namespacexint.html#a21bd738b96eec205eedc7a9960e9a6e5">to</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an <a class="el" href="classxint_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="namespacexint.html#ac8be41374700d89400f5ecddf0f789e3">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="structxint_1_1detail_1_1token.html">token</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ae7e3f6afc701f6e8873a407bb418d04c">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="structxint_1_1detail_1_1token.html">token</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a4b5a1a791ba11bb8f158a3b56bd9723e">allow_exceptions</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Temprarily counteract an <a class="el" href="namespacexint.html#ae7e3f6afc701f6e8873a407bb418d04c" 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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a4a79f60ebe198eadf10b63924018ce66">invmod</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ad5a8cc6e57ee8abdc21be98275657cc8">mod</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#adbbde6cc4b65e9a3df8c52adad9c540f">mulmod</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_1_1integer.html">integer</a> &by, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#aa5564979e78556afdc68dbbd744a0bcb">sqrmod</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ac54e9be3a8b131f882f88e57b0ef1c9c">powmod</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_1_1integer.html">integer</a> &e, const <a class="el" href="classxint_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">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="namespacexint.html#afd561fd7c7631267fbc7e5c75c2bde71">inverse0</a> (const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#aaf3b26669d4e61f6af5dcae42b20e08b">montgomeryR</a> (const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ab8e85cd5425fcec419c07155e2a91e13">toMontgomeryForm</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a93ed16c5350b34ca22108e48b51918a5">fromMontgomeryForm</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_1_1integer.html">integer</a> &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the <a class="el" href="classxint_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"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a722769c7d01e06d9f82eae07a280160c">montgomeryMultiplyMod</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &a, const <a class="el" href="classxint_1_1integer.html">integer</a> &b, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a7d7e8604c467bc007820c60e1bc21626">montgomeryPowerMod</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &a, const <a class="el" href="classxint_1_1integer.html">integer</a> &e, const <a class="el" href="classxint_1_1integer.html">integer</a> &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. <br/></td></tr>
-<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
-<br/><br/></div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a6b723c30c28eb57f611442e0b512f551">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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a0aec423511839fd784b1654389dfcf5b">sqr</a> (const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a186b14f991b32a818abd553b56a13a62">pow</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#aba188df925c87a0f33a79328e31e1a50">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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a74891726f8af86736169dd43b929ad0a">sqrt</a> (const <a class="el" href="classxint_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="classxint_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="namespacexint.html#ab205c4e52dbc6825cefe3a251f6ca99f">is_prime</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, <a class="el" href="namespacexint.html#ac8a660c33746c536469d347307b8da7a">callback_t</a> callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#afc8ba5f62561b4d2b42e32dde1a10ef3">random_prime</a> (size_t size_in_bits, <a class="el" href="namespacexint.html#ac8a660c33746c536469d347307b8da7a">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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ac9e4ed282bafa93dbf608350df0127ba">abs</a> (const <a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ab393826381b1abd9f1aca1cdb45f41f6">negate</a> (const <a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a7cc636a05af16eba73014bf88273d163">add</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#af196cd74cb23970032fddcce71957a80">subtract</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n1, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#af3d7059ec08bf075cec5685deca55c5d">multiply</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &n, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#abf3d47f1ef1fdf334097fab055886a44">divide</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &dividend, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a>, <a class="el" href="classxint_1_1integer.html">integer</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a23d0a0bb05cec1917d96d6aaceeb875d">divide_r</a> (const <a class="el" href="classxint_1_1integer.html">integer</a> &d1, const <a class="el" href="classxint_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="classxint_1_1integer.html">integer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a5da6e81cb78913cc61c9f14857700b5e">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="classxint_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="namespacexint.html#a9c50302b216b64d17d9c1d6350e88036">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="namespacexint.html#aa5b0dc228caee6523766326cf40297cd">operator<<</a> (std::basic_ostream< charT, traits > &out, const <a class="el" href="classxint_1_1integer.html">xint::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="namespacexint.html#a27a0715c66d7350b0f3800f6e161816f">operator>></a> (std::basic_istream< charT, traits > &in, <a class="el" href="classxint_1_1integer.html">xint::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="namespacexint.html#a509778d505a3c8a0b335817150eaead2">testBitManipulations</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a6b7f5122683b6d924bf86c7d1507206b">testAddSubtract</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#affe2e221777d4263a420d014fa9640d0">testMultiply</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a4ed78ff75865ae44a00d3709dd88c3a1">testDivideMod</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ae4ef5f20964fa995df7828f27bd7adbe">testConvert</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ae3305f62ca9be58fbc11dbd4c703f38b">testStreams</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#ac40068d64f8c4d9002a0687935888c42">testMontyMultiply</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a9cce0401174b9ae173671b0800c5f457">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="namespacexint.html#ac8a660c33746c536469d347307b8da7a">callback_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint.html#a44496f258b36237d4cea35558a71017a">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="namespacexint.html#a7a5434a5f5fb1db19f0de18014c4fc41">autobase</a> = (std::numeric_limits<size_t>::max)()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>All of the functions in the XInt library are within this namespace. </p>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="ac8a660c33746c536469d347307b8da7a"></a><!-- doxytag: member="xint::callback_t" ref="ac8a660c33746c536469d347307b8da7a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef boost::function<bool ()> <a class="el" href="namespacexint.html#ac8a660c33746c536469d347307b8da7a">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="namespacexint.html#ab205c4e52dbc6825cefe3a251f6ca99f" title="Tests an integer for primality.">xint::is_prime</a> </dd>
-<dd>
-<a class="el" href="namespacexint.html#afc8ba5f62561b4d2b42e32dde1a10ef3" 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#l00113">113</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad63045584f06221eb6a7581ad3091582"></a><!-- doxytag: member="xint::token" ref="ad63045584f06221eb6a7581ad3091582" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef std::auto_ptr<<a class="el" href="structxint_1_1detail_1_1token.html">detail::token</a>> <a class="el" href="structxint_1_1detail_1_1token.html">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#l00108">108</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="ac9e4ed282bafa93dbf608350df0127ba"></a><!-- doxytag: member="xint::abs" ref="ac9e4ed282bafa93dbf608350df0127ba" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="a7cc636a05af16eba73014bf88273d163"></a><!-- doxytag: member="xint::add" ref="a7cc636a05af16eba73014bf88273d163" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a4b5a1a791ba11bb8f158a3b56bd9723e"></a><!-- doxytag: member="xint::allow_exceptions" ref="a4b5a1a791ba11bb8f158a3b56bd9723e" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structxint_1_1detail_1_1token.html">token</a> 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="namespacexint.html#ae7e3f6afc701f6e8873a407bb418d04c" 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="namespacexint.html#ad63045584f06221eb6a7581ad3091582" 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="a06138585f07fe098e24718c46e3078e1"></a><!-- doxytag: member="xint::bitwise_and" ref="a06138585f07fe098e24718c46e3078e1" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="a8cd0a0dbc779e5a75c9e2f8027474e9a"></a><!-- doxytag: member="xint::bitwise_or" ref="a8cd0a0dbc779e5a75c9e2f8027474e9a" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="a9ffe18a09f5dd354af7b967b032d3cbe"></a><!-- doxytag: member="xint::bitwise_xor" ref="a9ffe18a09f5dd354af7b967b032d3cbe" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="ae7e3f6afc701f6e8873a407bb418d04c"></a><!-- doxytag: member="xint::block_exceptions" ref="ae7e3f6afc701f6e8873a407bb418d04c" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structxint_1_1detail_1_1token.html">token</a> 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="namespacexint.html#ad63045584f06221eb6a7581ad3091582" 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="a8982e3e3ab7c1c763416eadc479d9724"></a><!-- doxytag: member="xint::clearbit" ref="a8982e3e3ab7c1c763416eadc479d9724" args="(integer &n, size_t bit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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="classxint_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="classxint_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="aff82dd47fae4297b96282371abf4db06"></a><!-- doxytag: member="xint::compare" ref="aff82dd47fae4297b96282371abf4db06" args="(const integer &b1, const integer &b2, bool ignoresign)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int 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="classxint_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>
-
-</div>
-</div>
-<a class="anchor" id="abf3d47f1ef1fdf334097fab055886a44"></a><!-- doxytag: member="xint::divide" ref="abf3d47f1ef1fdf334097fab055886a44" args="(const integer &dividend, const integer &divisor)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="a23d0a0bb05cec1917d96d6aaceeb875d"></a><!-- doxytag: member="xint::divide_r" ref="a23d0a0bb05cec1917d96d6aaceeb875d" 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="classxint_1_1integer.html">integer</a>, <a class="el" href="classxint_1_1integer.html">integer</a> > 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="classxint_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, it will return an std::pair with two Not-a-Number values instead of throwing. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ac8be41374700d89400f5ecddf0f789e3"></a><!-- doxytag: member="xint::exceptions_allowed" ref="ac8be41374700d89400f5ecddf0f789e3" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="aba188df925c87a0f33a79328e31e1a50"></a><!-- doxytag: member="xint::factorial" ref="aba188df925c87a0f33a79328e31e1a50" args="(size_t n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="ac2ac2f74b45e4179560d845e6310be9a"></a><!-- doxytag: member="xint::from_binary" ref="ac2ac2f74b45e4179560d845e6310be9a" args="(const std::string &str)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="namespacexint.html#ab8f33201a251e3e118dc82f214e22aeb" title="Creates a binary representation of an integer, lowest byte first.">xint::to_binary</a> </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ad9dcb2b835be5f8ee918979945911ac0"></a><!-- doxytag: member="xint::from_string" ref="ad9dcb2b835be5f8ee918979945911ac0" 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="classxint_1_1integer.html">integer</a> 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="classxint_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="namespacexint.html#a7a5434a5f5fb1db19f0de18014c4fc41">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="classxint_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="classxint_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="classxint_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="classxint_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="namespacexint.html#a7a5434a5f5fb1db19f0de18014c4fc41">xint::autobase</a>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classxint_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="classxint_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="classxint_1_1integer.html#a6dfc86dfc539cfda1062ef1bc24aa526" 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="a93ed16c5350b34ca22108e48b51918a5"></a><!-- doxytag: member="xint::fromMontgomeryForm" ref="a93ed16c5350b34ca22108e48b51918a5" args="(const integer &n, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> xint::fromMontgomeryForm </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>m</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> from the Montgomery form of a number. Used for testing. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac9e11516ac502e97be1902cde50f97e7"></a><!-- doxytag: member="xint::gcd" ref="ac9e11516ac502e97be1902cde50f97e7" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a07bc7378c8a55e5f92aaef6d8b8ce952"></a><!-- doxytag: member="xint::getbit" ref="a07bc7378c8a55e5f92aaef6d8b8ce952" args="(const integer &n, size_t bit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="classxint_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="classxint_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>
-
-</div>
-</div>
-<a class="anchor" id="ae08828243165ef3f397461507368a6e5"></a><!-- doxytag: member="xint::highestbit" ref="ae08828243165ef3f397461507368a6e5" args="(const integer &n, size_t valueIfZero)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t 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="classxint_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="classxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>, or <code>valueIfZero</code> if the <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> contains no set bits. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="afd561fd7c7631267fbc7e5c75c2bde71"></a><!-- doxytag: member="xint::inverse0" ref="afd561fd7c7631267fbc7e5c75c2bde71" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">detail::digit_t</a> xint::inverse0 </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the low digit of the inverse of a number. Used internally. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4a79f60ebe198eadf10b63924018ce66"></a><!-- doxytag: member="xint::invmod" ref="a4a79f60ebe198eadf10b63924018ce66" args="(const integer &n, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="ab205c4e52dbc6825cefe3a251f6ca99f"></a><!-- doxytag: member="xint::is_prime" ref="ab205c4e52dbc6825cefe3a251f6ca99f" args="(const integer &n, callback_t callback)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int 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="classxint_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, it will return -1 instead of throwing an exception.</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="a17c5e4e807cfa425f48d9f5b464bc8dc"></a><!-- doxytag: member="xint::lcm" ref="a17c5e4e807cfa425f48d9f5b464bc8dc" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="aa074495871d366c760c5b0713f5ef048"></a><!-- doxytag: member="xint::log2" ref="aa074495871d366c760c5b0713f5ef048" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t 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="classxint_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="classxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>.</dd></dl>
-<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="namespacexint.html#a6b723c30c28eb57f611442e0b512f551" title="Calculate the value of 2e.">xint::pow2</a>(xint::log2(n)-1) will give you an <a class="el" href="classxint_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="namespacexint.html#ae08828243165ef3f397461507368a6e5" 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="ae04d70f50c4ce73d27ab32b1bf3520f2"></a><!-- doxytag: member="xint::lowestbit" ref="ae04d70f50c4ce73d27ab32b1bf3520f2" args="(const integer &n, size_t valueIfZero)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t 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="classxint_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="classxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>, or <code>valueIfZero</code> if the <a class="el" href="classxint_1_1integer.html" title="The extended integer class.">integer</a> contains no set bits. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ad5a8cc6e57ee8abdc21be98275657cc8"></a><!-- doxytag: member="xint::mod" ref="ad5a8cc6e57ee8abdc21be98275657cc8" args="(const integer &n, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a722769c7d01e06d9f82eae07a280160c"></a><!-- doxytag: member="xint::montgomeryMultiplyMod" ref="a722769c7d01e06d9f82eae07a280160c" 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="classxint_1_1integer.html">integer</a> xint::montgomeryMultiplyMod </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>b</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">digit_t </td>
- <td class="paramname"> <em>nPrime0</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7d7e8604c467bc007820c60e1bc21626"></a><!-- doxytag: member="xint::montgomeryPowerMod" ref="a7d7e8604c467bc007820c60e1bc21626" 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="classxint_1_1integer.html">integer</a> xint::montgomeryPowerMod </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>e</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the Montgomery equivalent of <code>powmod(a, b, n)</code>. Used internally. </p>
-
-</div>
-</div>
-<a class="anchor" id="aaf3b26669d4e61f6af5dcae42b20e08b"></a><!-- doxytag: member="xint::montgomeryR" ref="aaf3b26669d4e61f6af5dcae42b20e08b" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> xint::montgomeryR </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the most efficient R value for a number and the library's internal representation. Used internally. </p>
-
-</div>
-</div>
-<a class="anchor" id="adbbde6cc4b65e9a3df8c52adad9c540f"></a><!-- doxytag: member="xint::mulmod" ref="adbbde6cc4b65e9a3df8c52adad9c540f" 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="classxint_1_1integer.html">integer</a> 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="af3d7059ec08bf075cec5685deca55c5d"></a><!-- doxytag: member="xint::multiply" ref="af3d7059ec08bf075cec5685deca55c5d" args="(const integer &n, const integer &by)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="ab393826381b1abd9f1aca1cdb45f41f6"></a><!-- doxytag: member="xint::negate" ref="ab393826381b1abd9f1aca1cdb45f41f6" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="a675c4fe6ddda6db915450d054ed640ba"></a><!-- doxytag: member="xint::operator!" ref="a675c4fe6ddda6db915450d054ed640ba" args="(const xint::integer &num1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool xint::operator! </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </td>
- <td class="paramname"> <em>num1</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aefda934d0ffacd0f44fcbbdfee19a139"></a><!-- doxytag: member="xint::operator!=" ref="aefda934d0ffacd0f44fcbbdfee19a139" args="(const xint::integer &num1, const xint::integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool xint::operator!= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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="ae0505757986a9c7133552552471aae24"></a><!-- doxytag: member="xint::operator%" ref="ae0505757986a9c7133552552471aae24" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a742550f1c62ac8c2bde8e1ceab2a466c"></a><!-- doxytag: member="xint::operator&" ref="a742550f1c62ac8c2bde8e1ceab2a466c" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="aea36ad9037f109576d4f95ec72b5c825"></a><!-- doxytag: member="xint::operator*" ref="aea36ad9037f109576d4f95ec72b5c825" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a211ff80bb081c08674272cfcae736a93"></a><!-- doxytag: member="xint::operator+" ref="a211ff80bb081c08674272cfcae736a93" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a586fb0eb69100ec74be94008ac26670d"></a><!-- doxytag: member="xint::operator+" ref="a586fb0eb69100ec74be94008ac26670d" args="(const integer &a)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classxint_1_1integer.html">integer</a> & 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="a1e09422b575c6d29ea5c0d627b79c28e"></a><!-- doxytag: member="xint::operator-" ref="a1e09422b575c6d29ea5c0d627b79c28e" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a8a510361ed458133ebfa5fd95f8d9c27"></a><!-- doxytag: member="xint::operator-" ref="a8a510361ed458133ebfa5fd95f8d9c27" args="(const integer &a)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a701217f7824c3e935fca25147da23807"></a><!-- doxytag: member="xint::operator/" ref="a701217f7824c3e935fca25147da23807" args="(const integer &num1, const integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a4f4a4771bf443e6724abbd18173ecc86"></a><!-- doxytag: member="xint::operator<" ref="a4f4a4771bf443e6724abbd18173ecc86" args="(const xint::integer &num1, const xint::integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool xint::operator< </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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="aa5b0dc228caee6523766326cf40297cd"></a><!-- doxytag: member="xint::operator<<" ref="aa5b0dc228caee6523766326cf40297cd" args="(std::basic_ostream< charT, traits > &out, const xint::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>& 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 <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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#l00630">630</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab9d5f34c4d4bed1c86380d4f72edcd9b"></a><!-- doxytag: member="xint::operator<=" ref="ab9d5f34c4d4bed1c86380d4f72edcd9b" args="(const xint::integer &num1, const xint::integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool xint::operator<= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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="ad32051708c2a2baafa0340e19e90217b"></a><!-- doxytag: member="xint::operator==" ref="ad32051708c2a2baafa0340e19e90217b" args="(const xint::integer &num1, const xint::integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool xint::operator== </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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="a1229d1f1efbdf3ffeac8b2964ca66093"></a><!-- doxytag: member="xint::operator>" ref="a1229d1f1efbdf3ffeac8b2964ca66093" args="(const xint::integer &num1, const xint::integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool xint::operator> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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="a766324a6f216f3b49a3e9aa885e9531c"></a><!-- doxytag: member="xint::operator>=" ref="a766324a6f216f3b49a3e9aa885e9531c" args="(const xint::integer &num1, const xint::integer &num2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool xint::operator>= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </td>
- <td class="paramname"> <em>num1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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="a27a0715c66d7350b0f3800f6e161816f"></a><!-- doxytag: member="xint::operator>>" ref="a27a0715c66d7350b0f3800f6e161816f" args="(std::basic_istream< charT, traits > &in, xint::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>& 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"><a class="el" href="classxint_1_1integer.html">xint::integer</a> & </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#l00657">657</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a81722cd257bc950ba7c56a202492544f"></a><!-- doxytag: member="xint::operator^" ref="a81722cd257bc950ba7c56a202492544f" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="afa8f2a0ac996ad45efc73b2aa056cae2"></a><!-- doxytag: member="xint::operator|" ref="afa8f2a0ac996ad45efc73b2aa056cae2" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a820d89c1d761a0a2c06479b1c1f9cecd"></a><!-- doxytag: member="xint::opt_secure_mode" ref="a820d89c1d761a0a2c06479b1c1f9cecd" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="ad55aa4d44083238d9ec313511f5b1dfa"></a><!-- doxytag: member="xint::opt_thread_safe" ref="ad55aa4d44083238d9ec313511f5b1dfa" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="a186b14f991b32a818abd553b56a13a62"></a><!-- doxytag: member="xint::pow" ref="a186b14f991b32a818abd553b56a13a62" args="(const integer &n, const integer &e)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a6b723c30c28eb57f611442e0b512f551"></a><!-- doxytag: member="xint::pow2" ref="a6b723c30c28eb57f611442e0b512f551" args="(size_t e)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="ac54e9be3a8b131f882f88e57b0ef1c9c"></a><!-- doxytag: member="xint::powmod" ref="ac54e9be3a8b131f882f88e57b0ef1c9c" 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="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="a5da6e81cb78913cc61c9f14857700b5e"></a><!-- doxytag: member="xint::random_by_size" ref="a5da6e81cb78913cc61c9f14857700b5e" 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="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="namespacexint.html#a9c50302b216b64d17d9c1d6350e88036" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="afc8ba5f62561b4d2b42e32dde1a10ef3"></a><!-- doxytag: member="xint::random_prime" ref="afc8ba5f62561b4d2b42e32dde1a10ef3" 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="classxint_1_1integer.html">integer</a> 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="classxint_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="namespacexint.html#ab205c4e52dbc6825cefe3a251f6ca99f" 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="a9c50302b216b64d17d9c1d6350e88036"></a><!-- doxytag: member="xint::set_random_generator" ref="a9c50302b216b64d17d9c1d6350e88036" args="(T *gen)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T > </div>
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00622">622</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adf2652627e78682c17e120816987984a"></a><!-- doxytag: member="xint::setbit" ref="adf2652627e78682c17e120816987984a" args="(integer &n, size_t bit)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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="classxint_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="classxint_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="a4f4dacd6f9398aaa500112731ab713ce"></a><!-- doxytag: member="xint::shift" ref="a4f4dacd6f9398aaa500112731ab713ce" args="(const integer &n, int byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a6799cc3c4d8c963279be64b209bfd3b6"></a><!-- doxytag: member="xint::shift_left" ref="a6799cc3c4d8c963279be64b209bfd3b6" args="(const integer &n, size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a49a5a4220cb88b7446545e4b65950473"></a><!-- doxytag: member="xint::shift_right" ref="a49a5a4220cb88b7446545e4b65950473" args="(const integer &n, size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a0aec423511839fd784b1654389dfcf5b"></a><!-- doxytag: member="xint::sqr" ref="a0aec423511839fd784b1654389dfcf5b" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="aa5564979e78556afdc68dbbd744a0bcb"></a><!-- doxytag: member="xint::sqrmod" ref="aa5564979e78556afdc68dbbd744a0bcb" args="(const integer &n, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="a74891726f8af86736169dd43b929ad0a"></a><!-- doxytag: member="xint::sqrt" ref="a74891726f8af86736169dd43b929ad0a" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="classxint_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="classxint_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="classxint_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="af196cd74cb23970032fddcce71957a80"></a><!-- doxytag: member="xint::subtract" ref="af196cd74cb23970032fddcce71957a80" args="(const integer &n1, const integer &n2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> 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="a6b7f5122683b6d924bf86c7d1507206b"></a><!-- doxytag: member="xint::testAddSubtract" ref="a6b7f5122683b6d924bf86c7d1507206b" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="a509778d505a3c8a0b335817150eaead2"></a><!-- doxytag: member="xint::testBitManipulations" ref="a509778d505a3c8a0b335817150eaead2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="ae4ef5f20964fa995df7828f27bd7adbe"></a><!-- doxytag: member="xint::testConvert" ref="ae4ef5f20964fa995df7828f27bd7adbe" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="a4ed78ff75865ae44a00d3709dd88c3a1"></a><!-- doxytag: member="xint::testDivideMod" ref="a4ed78ff75865ae44a00d3709dd88c3a1" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="ac40068d64f8c4d9002a0687935888c42"></a><!-- doxytag: member="xint::testMontyMultiply" ref="ac40068d64f8c4d9002a0687935888c42" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="a9cce0401174b9ae173671b0800c5f457"></a><!-- doxytag: member="xint::testMontyPowerMod" ref="a9cce0401174b9ae173671b0800c5f457" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="affe2e221777d4263a420d014fa9640d0"></a><!-- doxytag: member="xint::testMultiply" ref="affe2e221777d4263a420d014fa9640d0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="ae3305f62ca9be58fbc11dbd4c703f38b"></a><!-- doxytag: member="xint::testStreams" ref="ae3305f62ca9be58fbc11dbd4c703f38b" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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="a21bd738b96eec205eedc7a9960e9a6e5"></a><!-- doxytag: member="xint::to" ref="a21bd738b96eec205eedc7a9960e9a6e5" 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 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="classxint_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="classxint_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="classxint_1_1too__big.html" title="Exception class.">xint::too_big</a></em> </td><td>if <code>n</code> would not fit into the specified type. </td></tr>
- </table>
- </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00593">593</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab8f33201a251e3e118dc82f214e22aeb"></a><!-- doxytag: member="xint::to_binary" ref="ab8f33201a251e3e118dc82f214e22aeb" args="(const integer &n)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string 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="classxint_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="classxint_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="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="namespacexint.html#ac2ac2f74b45e4179560d845e6310be9a" title="Converts a binary representation of a number into an integer.">xint::from_binary</a> </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a016c9573ff48411847edf86c406946a0"></a><!-- doxytag: member="xint::to_string" ref="a016c9573ff48411847edf86c406946a0" args="(const integer &n, size_t base, bool uppercase)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string 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="classxint_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="classxint_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="classxint_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="classxint_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>
-<a class="anchor" id="ab8e85cd5425fcec419c07155e2a91e13"></a><!-- doxytag: member="xint::toMontgomeryForm" ref="ab8e85cd5425fcec419c07155e2a91e13" args="(const integer &n, const integer &m)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxint_1_1integer.html">integer</a> xint::toMontgomeryForm </td>
- <td>(</td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const integer & </td>
- <td class="paramname"> <em>m</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the Montgomery form of a number. Used for testing. </p>
-
-</div>
-</div>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="a7a5434a5f5fb1db19f0de18014c4fc41"></a><!-- doxytag: member="xint::autobase" ref="a7a5434a5f5fb1db19f0de18014c4fc41" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const size_t <a class="el" href="namespacexint.html#a7a5434a5f5fb1db19f0de18014c4fc41">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="classxint_1_1integer.html#a6dfc86dfc539cfda1062ef1bc24aa526" 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="namespacexint.html#ad9dcb2b835be5f8ee918979945911ac0" 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#l00123">123</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a44496f258b36237d4cea35558a71017a"></a><!-- doxytag: member="xint::no_callback" ref="a44496f258b36237d4cea35558a71017a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="namespacexint.html#ac8a660c33746c536469d347307b8da7a">callback_t</a> <a class="el" href="namespacexint.html#a44496f258b36237d4cea35558a71017a">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="namespacexint.html#ab205c4e52dbc6825cefe3a251f6ca99f" title="Tests an integer for primality.">xint::is_prime</a> </dd>
-<dd>
-<a class="el" href="namespacexint.html#afc8ba5f62561b4d2b42e32dde1a10ef3" 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#l00118">118</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/namespacexint_1_1detail.html
==============================================================================
--- sandbox/xint/doc/namespacexint_1_1detail.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,238 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="namespacexint_1_1detail.html">detail</a>
- </div>
-</div>
-<div class="contents">
-<h1>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="structxint_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="namespacexint.html#ad63045584f06221eb6a7581ad3091582" 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="structxint_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="structxint_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="structxint_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="structxint_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="classxint_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="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">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="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a> >::digits/2 ><br class="typebreak"/>
-::fast </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="namespacexint_1_1detail.html#a5f8bba03a6f615a82ebcf94ad7cd4353">set_random_generator</a> (<a class="el" href="structxint_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="namespacexint_1_1detail.html#a1dfc1e90886c4897a4b112f491b89b62">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="namespacexint_1_1detail.html#aede27c67f3308e0805fc3093ffe6f4ce">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="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a> = std::numeric_limits<<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>>::digits</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint_1_1detail.html#a116bb5ce94c55f0eae3338d69fd5e8eb">digit_hibit</a> = (<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>(1) << (<a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a>-1))</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint_1_1detail.html#a2af0686427ee285bd715330f12fcbc1c">doubledigit_hibit</a> = (<a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a>(1) << (<a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a>*2-1))</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint_1_1detail.html#a6746855fd8cde164294a46108d502e6a">digit_overflowbit</a> = (<a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a>(1) << <a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexint_1_1detail.html#a051753e1bf43dcc77eaa93b8d4e49197">digit_mask</a> = <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>(<a class="el" href="namespacexint_1_1detail.html#a6746855fd8cde164294a46108d502e6a">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="a8843fb7e364832d8d5983de28bdbcf34"></a><!-- doxytag: member="xint::detail::digit_t" ref="a8843fb7e364832d8d5983de28bdbcf34" 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="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a>>::digits / 2>::fast <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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#l00059">59</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aceb9b654c1c2daaf377b31bd4a089750"></a><!-- doxytag: member="xint::detail::doubledigit_t" ref="aceb9b654c1c2daaf377b31bd4a089750" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef boost::uintmax_t <a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">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#l00051">51</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="a1dfc1e90886c4897a4b112f491b89b62"></a><!-- doxytag: member="xint::detail::get_random" ref="a1dfc1e90886c4897a4b112f491b89b62" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int 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="namespacexint.html#a9c50302b216b64d17d9c1d6350e88036" title="Change the random generator that the library uses.">xint::set_random_generator</a> </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a5f8bba03a6f615a82ebcf94ad7cd4353"></a><!-- doxytag: member="xint::detail::set_random_generator" ref="a5f8bba03a6f615a82ebcf94ad7cd4353" args="(base_random_generator *obj)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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="namespacexint.html#a9c50302b216b64d17d9c1d6350e88036" 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="a9bd9e8d55061238d63913020d2721518"></a><!-- doxytag: member="xint::detail::bits_per_digit" ref="a9bd9e8d55061238d63913020d2721518" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const size_t <a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">xint::detail::bits_per_digit</a> = std::numeric_limits<<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>>::digits</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00063">63</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a116bb5ce94c55f0eae3338d69fd5e8eb"></a><!-- doxytag: member="xint::detail::digit_hibit" ref="a116bb5ce94c55f0eae3338d69fd5e8eb" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> <a class="el" href="namespacexint_1_1detail.html#a116bb5ce94c55f0eae3338d69fd5e8eb">xint::detail::digit_hibit</a> = (<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>(1) << (<a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a>-1))</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="a051753e1bf43dcc77eaa93b8d4e49197"></a><!-- doxytag: member="xint::detail::digit_mask" ref="a051753e1bf43dcc77eaa93b8d4e49197" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> <a class="el" href="namespacexint_1_1detail.html#a051753e1bf43dcc77eaa93b8d4e49197">xint::detail::digit_mask</a> = <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>(<a class="el" href="namespacexint_1_1detail.html#a6746855fd8cde164294a46108d502e6a">digit_overflowbit</a>-1)</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="a6746855fd8cde164294a46108d502e6a"></a><!-- doxytag: member="xint::detail::digit_overflowbit" ref="a6746855fd8cde164294a46108d502e6a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a> <a class="el" href="namespacexint_1_1detail.html#a6746855fd8cde164294a46108d502e6a">xint::detail::digit_overflowbit</a> = (<a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a>(1) << <a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a>)</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="a2af0686427ee285bd715330f12fcbc1c"></a><!-- doxytag: member="xint::detail::doubledigit_hibit" ref="a2af0686427ee285bd715330f12fcbc1c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a> <a class="el" href="namespacexint_1_1detail.html#a2af0686427ee285bd715330f12fcbc1c">xint::detail::doubledigit_hibit</a> = (<a class="el" href="namespacexint_1_1detail.html#aceb9b654c1c2daaf377b31bd4a089750">doubledigit_t</a>(1) << (<a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">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#l00065">65</a> of file <a class="el" href="xint_8hpp_source.html">xint.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aede27c67f3308e0805fc3093ffe6f4ce"></a><!-- doxytag: member="xint::detail::nan_text" ref="aede27c67f3308e0805fc3093ffe6f4ce" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const std::string <a class="el" href="namespacexint_1_1detail.html#aede27c67f3308e0805fc3093ffe6f4ce">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 Tue Apr 6 01:22:08 2010 for The 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/nan.html
==============================================================================
--- sandbox/xint/doc/nan.html (original)
+++ sandbox/xint/doc/nan.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -24,22 +24,22 @@
<div class="contents">
-<h1><a class="anchor" id="nan">The Not-a-Number Value </a></h1><p>Sometimes it's useful for a variable to have a value that doesn't represent any proper value, to indicate that it hasn't been specified or that there was an error in a calculation. For that purpose, the <code>xint::integer</code> class provides Not-a-Number.</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>
+<h1><a class="anchor" id="nan">The Not-a-Number Value </a></h1><p>Sometimes it's useful for a variable to have a value that doesn't represent any proper value, to indicate that it hasn't been specified or that there was an error in a calculation. For that purpose, the XInt library provides Not-a-Number (which can only be represented by the blockable::integer type).</p>
+<p>To create a Not-a-Number, use the blockable::integer::nan function. No other library function will return a Not-a-Number except under the following circumstances:</p>
<ul>
-<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>
+<li>If a function that returns a <code>blockable::integer</code> tries to throw an exception, but exceptions are blocked.</li>
+<li>If the string-to-integer functions in the <code>blockable</code> namespace are asked to convert the string <code>"#NaN#"</code>.</li>
</ul>
<p>The only things you can do with a Not-a-Number are:</p>
<ul>
-<li>Test for it, using the member function integer::is_nan.</li>
+<li>Test for it, using the member function blockable::integer::is_nan.</li>
<li>Convert it to a string, or write it to a stream. The result will be the string <code>"#NaN#"</code>.</li>
<li>Make a copy of it.</li>
</ul>
-<p>If you attempt to do anything else with it, you will either get an <code>xint::not_a_number</code> exception, or if exceptions are blocked, a special value indicating failure (which will be another Not-a-Number, if the function you're calling returns an xint::integer). </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 a <code>blockable::integer</code>). </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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/nan_8dox.html
==============================================================================
--- sandbox/xint/doc/nan_8dox.html (original)
+++ sandbox/xint/doc/nan_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/operators_8cpp.html
==============================================================================
--- sandbox/xint/doc/operators_8cpp.html (original)
+++ sandbox/xint/doc/operators_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,7 +29,6 @@
<h1>operators.cpp File Reference</h1>
<p>Contains the definitions for the basic math operators.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -37,15 +36,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">boost::xint::core::operator+</a> (const integer &a)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">boost::xint::core::operator-</a> (const integer &a)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a017539f78cba665d5cbb6b6ba00e1d42">boost::xint::core::operator+</a> (const integer &num1, const integer &num2)</td></tr>
@@ -56,27 +58,14 @@
<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>
-<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint::operator+</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint::operator-</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f6171689ef68ff6672e43a1e24ea494">boost::xint::operator+</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac16aa971521ae015a62ec015f1fe56d0">boost::xint::operator-</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint::operator*</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint::operator/</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint::operator%</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint::operator&</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint::operator|</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint::operator^</a> (const integer &n1, const integer &n2)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for the basic math operators. </p>
<p>Definition in file <a class="el" href="operators_8cpp_source.html">operators.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -43,33 +43,21 @@
<a name="l00021"></a>00021 <span class="keyword">namespace </span>xint {
<a name="l00022"></a>00022 <span class="keyword">namespace </span>core {
<a name="l00023"></a>00023 <span class="keyword">const</span> integer& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> a; }
-<a name="l00024"></a>00024 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">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="l00024"></a>00024 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& a) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>(a); }
+<a name="l00025"></a>00025 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(num1, num2); }
+<a name="l00026"></a>00026 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(num1, num2); }
+<a name="l00027"></a>00027 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">operator*</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(num1, num2); }
+<a name="l00028"></a>00028 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">operator/</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(num1, num2); }
+<a name="l00029"></a>00029 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">operator%</a>(<span class="keyword">const</span> integer& num1, <span class="keyword">const</span> integer& num2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(num1, num2); }
+<a name="l00030"></a>00030 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">operator&</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(n1, n2); }
+<a name="l00031"></a>00031 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">operator|</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a>(n1, n2); }
+<a name="l00032"></a>00032 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">operator^</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) { <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(n1, n2); }
<a name="l00033"></a>00033 } <span class="comment">// namespace core</span>
-<a name="l00034"></a>00034
-<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>
+<a name="l00034"></a>00034 } <span class="comment">// namespace xint</span>
+<a name="l00035"></a>00035 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/pages.html
==============================================================================
--- sandbox/xint/doc/pages.html (original)
+++ sandbox/xint/doc/pages.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -25,8 +25,8 @@
</li>
</ul>
</div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/powers_8cpp.html
==============================================================================
--- sandbox/xint/doc/powers_8cpp.html (original)
+++ sandbox/xint/doc/powers_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,9 +29,6 @@
<h1>powers.cpp File Reference</h1>
<p>Contains the definitions for functions related to powers of a number.
<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 <vector></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -39,38 +36,34 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core::pow2</a> (size_t e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core::factorial</a> (size_t n)</td></tr>
-<tr><td 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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint::pow2</a> (size_t e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint::sqr</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint::pow</a> (const integer &n, const integer &e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint::factorial</a> (size_t n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for functions related to powers of a number. </p>
<p>Definition in file <a class="el" href="powers_8cpp_source.html">powers.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -60,123 +60,89 @@
<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="l00050"></a>00050 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> e) {
+<a name="l00051"></a>00051 integer r;
+<a name="l00052"></a>00052 <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(r, e);
+<a name="l00053"></a>00053 <span class="keywordflow">return</span> r;
+<a name="l00054"></a>00054 }
+<a name="l00055"></a>00055
+<a name="l00066"></a>00066 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00067"></a>00067 <span class="keyword">const</span> data_t *ndata=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>();
+<a name="l00068"></a>00068 std::vector<doubledigit_t> a(ndata->mLength*2+1, 0);
+<a name="l00069"></a>00069 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> *adigit=&a[0];
<a name="l00070"></a>00070
-<a name="l00071"></a>00071 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="l00071"></a>00071 <span class="keywordtype">size_t</span> i, j;
+<a name="l00072"></a>00072 integer addend;
+<a name="l00073"></a>00073 data_t *addenddata=addend._get_data();
+<a name="l00074"></a>00074 addenddata->alloc(ndata->mLength*2+1);
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *ndigitip=ndata->digits;
+<a name="l00077"></a>00077 <span class="keywordflow">for</span> (i=0; i<ndata->mLength; ++i, ++ndigitip) {
+<a name="l00078"></a>00078 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ndigiti=*ndigitip;
+<a name="l00079"></a>00079 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndigiti) * ndigiti);
+<a name="l00080"></a>00080 <span class="keywordflow">if</span> (addOverflow(adigit[2*i], t)) ++addenddata->digits[2*i+2];
<a name="l00081"></a>00081
-<a name="l00082"></a>00082 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="l00082"></a>00082 for (j=i+1; j<ndata->mLength; ++j) {
+<a name="l00083"></a>00083 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(ndata->digits[j]) * ndigiti);
+<a name="l00084"></a>00084 <span class="keywordflow">if</span> (t & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">doubledigit_hibit</a>) ++addenddata->digits[i+j+2];
+<a name="l00085"></a>00085 t<<=1;
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (addOverflow(adigit[i+j], t)) ++addenddata->digits[i+j+2];
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 integer answer;
+<a name="l00091"></a>00091 data_t *answerdata=answer._get_data();
+<a name="l00092"></a>00092 answerdata->alloc(ndata->mLength*2+1);
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> carry=0;
+<a name="l00095"></a>00095 <span class="keywordflow">for</span> (i=0, j=ndata->mLength*2+1; i<j; ++i) {
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (addOverflow(carry, adigit[i])) ++addenddata->digits[i+2];
+<a name="l00097"></a>00097 answerdata->digits[i]=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(carry);
+<a name="l00098"></a>00098 carry>>=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 answerdata->skipLeadingZeros();
+<a name="l00102"></a>00102 addenddata->skipLeadingZeros();
+<a name="l00103"></a>00103 answer+=addend;
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> answer;
+<a name="l00106"></a>00106 }
<a name="l00107"></a>00107
-<a name="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="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="l00114"></a>00114 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30" title="Calculate the value of ne">pow</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& e) {
+<a name="l00115"></a>00115 <span class="keywordtype">bool</span> neg=(n.sign() < 0 && e.odd());
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordtype">size_t</span> length=e.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>(), lastBitCount=0;
+<a name="l00118"></a>00118 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> ee(e._get_digit(length-1));
+<a name="l00119"></a>00119 <span class="keywordflow">while</span> (ee != 0) { ee >>= 1; ++lastBitCount; }
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n)), answer=<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>();
+<a name="l00122"></a>00122 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> eIndex=0; eIndex < length; ++eIndex) {
+<a name="l00123"></a>00123 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> eee(e._get_digit(eIndex));
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="keywordtype">int</span> bitCount(<span class="keywordtype">int</span>(eIndex == length-1 ? lastBitCount : <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>));
+<a name="l00126"></a>00126 <span class="keywordflow">while</span> (bitCount-- > 0) {
+<a name="l00127"></a>00127 <span class="keywordflow">if</span> (eee & 0x01) answer*=p;
+<a name="l00128"></a>00128 p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(p);
+<a name="l00129"></a>00129 eee >>= 1;
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 answer._set_negative(neg);
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> answer;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136
+<a name="l00148"></a>00148 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n) {
+<a name="l00149"></a>00149 integer r(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>());
+<a name="l00150"></a>00150 <span class="keywordflow">while</span> (n > 1) { r *= n--; }
+<a name="l00151"></a>00151 <span class="keywordflow">return</span> r;
<a name="l00152"></a>00152 }
<a name="l00153"></a>00153
-<a name="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>
+<a name="l00154"></a>00154 } <span class="comment">// namespace core</span>
+<a name="l00155"></a>00155 } <span class="comment">// namespace xint</span>
+<a name="l00156"></a>00156 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/primes.html
==============================================================================
--- sandbox/xint/doc/primes.html (original)
+++ sandbox/xint/doc/primes.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -25,36 +25,37 @@
<h1><a class="anchor" id="primes">Generating Prime Numbers </a></h1><p>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often require large prime numbers.</p>
-<p>With larger bit-sizes, the xint::is_prime and xint::random_prime functions can take a very long time to run, so you can pass an optional callback function to them as well. The provided callback function (which takes no parameters and returns a <code>bool</code>) will be called regularly during this time, and if it returns <code>false</code>, the function will abort and return zero (for random_prime) or -1 (for is_prime) instead of a value.</p>
+<p>With larger bit-sizes, the <code>is_prime</code> and <code>random_prime</code> functions can take a very long time to run, so you can pass an optional callback function to them as well. The provided callback function (which takes no parameters and returns a <code>bool</code>) will be called regularly during this time, and if it returns <code>false</code>, the function will abort and return zero (for random_prime) or -1 (for is_prime) instead of a value.</p>
<p>Here is an example of how to use the library functions to create a prime number of a specific length, using the system's strong random number generator:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include <iostream></span>
<span class="preprocessor">#include <<a class="code" href="xint_8hpp.html" title="The main header file for the XInt library.">boost/xint/xint.hpp</a>></span>
<span class="keywordtype">bool</span> callback() {
- std::cout << <span class="charliteral">'.'</span> << std::flush;
+ std::cout << <span class="charliteral">'.'</span> << std::flush;
<span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Return false to abort a long operation</span>
}
<span class="keywordtype">int</span> main() {
<span class="keyword">using namespace </span>std;
<span class="keyword">using namespace </span>boost;
+ <span class="keyword">using namespace </span>xint::core;
<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bits=512;
<span class="keywordflow">try</span> {
- <span class="comment">// Use the system's strong random number generator, via the XInt-</span>
+ <span class="comment">// Use the system's strong random number generator, via the XInt-</span>
<span class="comment">// provided convenience class.</span>
<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">xint::set_random_generator</a>(<span class="keyword">new</span> xint::strong_random_generator);
<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_1_1core.html#a5f117503768fded4de58ded6d0c5513e">xint::random_prime</a>(bits, callback);
+ integer p=<a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a>(bits, callback);
<span class="comment">// Success!</span>
cout << <span class="stringliteral">"\nA random "</span> << bits << <span class="stringliteral">"-bit prime is: "</span> << p << endl;
} <span class="keywordflow">catch</span> (xint::no_strong_random& e) {
- <span class="comment">// xint::strong_random_generator will throw this if the system doesn't</span>
+ <span class="comment">// xint::strong_random_generator will throw this if the system doesn't</span>
<span class="comment">// have a strong random number generator.</span>
cout << e.what() << endl;
<span class="keywordflow">return</span> EXIT_FAILURE;
@@ -64,8 +65,8 @@
}
</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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/primes_8cpp.html
==============================================================================
--- sandbox/xint/doc/primes_8cpp.html (original)
+++ sandbox/xint/doc/primes_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,6 @@
<h1>primes.cpp File Reference</h1>
<p>Contains the definitions for functions related to prime numbers.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
-<code>#include <vector></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -38,32 +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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">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>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa3df545d1da848922c13de2a87fc9">boost::xint::is_prime</a> (const integer &n, callback_t callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for functions related to prime numbers. </p>
<p>Definition in file <a class="el" href="primes_8cpp_source.html">primes.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -51,7 +51,7 @@
<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="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 sieve.push_back(0);
<a name="l00035"></a>00035
@@ -87,11 +87,11 @@
<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="l00068"></a>00068 integer test=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(b, r, n);
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (test==<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() || test==nMinus1) <span class="keywordflow">return</span> 1; <span class="comment">// Better than 3/4 chance it's prime</span>
<a name="l00070"></a>00070
<a name="l00071"></a>00071 <span class="keywordflow">while</span> (a-->0) {
-<a name="l00072"></a>00072 test=<a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">sqrmod</a>(test, n);
+<a name="l00072"></a>00072 test=<a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(test, n);
<a name="l00073"></a>00073 <span class="keywordflow">if</span> (test==nMinus1) <span class="keywordflow">return</span> 1;
<a name="l00074"></a>00074 }
<a name="l00075"></a>00075
@@ -101,70 +101,50 @@
<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="l00102"></a>00102 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> integer& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (n < 2) <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"xint::is_prime cannot test numbers "</span>
+<a name="l00104"></a>00104 <span class="stringliteral">"below 2"</span>);
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="comment">// First we trial-divide it by the primes below 2000</span>
+<a name="l00107"></a>00107 <span class="keyword">static</span> <span class="keyword">const</span> std::vector<int> cLowPrimes(sieveOfEratosthenes(2000));
+<a name="l00108"></a>00108 std::vector<int>::const_iterator i=cLowPrimes.begin(), ie=cLowPrimes.end();
+<a name="l00109"></a>00109 <span class="keywordflow">for</span> (; i!=ie; ++i) <span class="keywordflow">if</span> ((n % *i)==0) <span class="keywordflow">return</span> (n==*i);
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="comment">// Run the number through the Miller-Rabin Probabilistic Test of Primality</span>
+<a name="l00112"></a>00112 <span class="comment">// a few times to see if it's actually (probably) prime.</span>
+<a name="l00113"></a>00113 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> count=0; count<5; ++count) {
+<a name="l00114"></a>00114 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">detail::get_random</a>();
+<a name="l00115"></a>00115 <span class="keywordtype">int</span> isP=isProbablePrimeBaseB(n, <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(k), callback);
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (isP <= 0) <span class="keywordflow">return</span> isP;
<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 }
-<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>
+<a name="l00118"></a>00118 <span class="keywordflow">return</span> 1; <span class="comment">// Appears to be prime!</span>
+<a name="l00119"></a>00119 }
+<a name="l00120"></a>00120
+<a name="l00143"></a>00143 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> size_in_bits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback) {
+<a name="l00144"></a>00144 <span class="keywordflow">if</span> (size_in_bits < 2) <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"cannot create prime "</span>
+<a name="l00145"></a>00145 <span class="stringliteral">"numbers smaller than two bits"</span>);
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="comment">// Call the callback for the first time</span>
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (callback && !callback()) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 integer pe=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(size_in_bits+1);
+<a name="l00151"></a>00151 <span class="keywordflow">while</span> (1) {
+<a name="l00152"></a>00152 integer p(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">random_by_size</a>(size_in_bits, <span class="keyword">true</span>, <span class="keyword">true</span>));
+<a name="l00153"></a>00153 <span class="keywordflow">while</span> (p < pe) {
+<a name="l00154"></a>00154 <span class="keywordtype">int</span> r=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89" title="Tests an integer for primality.">is_prime</a>(p, callback);
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (r < 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (r == 1) <span class="keywordflow">return</span> p;
+<a name="l00157"></a>00157 p+=2;
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 } <span class="comment">// namespace core</span>
+<a name="l00163"></a>00163 } <span class="comment">// namespace xint</span>
+<a name="l00164"></a>00164 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/primes_8dox.html
==============================================================================
--- sandbox/xint/doc/primes_8dox.html (original)
+++ sandbox/xint/doc/primes_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/primitives_8cpp.html
==============================================================================
--- sandbox/xint/doc/primitives_8cpp.html (original)
+++ sandbox/xint/doc/primitives_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,9 +29,6 @@
<h1>primitives.cpp File Reference</h1>
<p>Contains the definitions for math primitives.
<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 <cassert></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -39,47 +36,40 @@
<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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core::abs</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core::negate</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
-<tr><td 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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint::abs</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint::negate</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint::add</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint::subtract</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint::multiply</a> (const integer &n, const integer &by)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for math primitives. </p>
<p>Definition in file <a class="el" href="primitives_8cpp_source.html">primitives.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -48,297 +48,238 @@
<a name="l00026"></a>00026
<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="l00035"></a>00035 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00036"></a>00036 <span class="keywordflow">return</span> (n.sign() < 0 ? -n : n);
+<a name="l00037"></a>00037 }
+<a name="l00038"></a>00038
+<a name="l00045"></a>00045 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00046"></a>00046 integer nn(n);
+<a name="l00047"></a>00047 nn._make_unique();
+<a name="l00048"></a>00048 nn._get_data()->negate();
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> nn;
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00058"></a>00058 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00059"></a>00059 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), sign2=n2.sign();
<a name="l00060"></a>00060 <span class="keywordflow">if</span> (sign1 != sign2) {
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (sign1 == 0) <span class="keywordflow">return</span> -n2;
-<a name="l00062"></a>00062 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">return</span> n1;
-<a name="l00063"></a>00063 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">add</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#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(n1, -n2);
<a name="l00064"></a>00064 } <span class="keywordflow">else</span> {
-<a name="l00065"></a>00065 <span class="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="l00065"></a>00065 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
+<a name="l00066"></a>00066 <span class="keywordflow">if</span> (n1data->mLength < n2data->mLength) std::swap(n1data, n2data);
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 integer r;
+<a name="l00069"></a>00069 data_t *rdata=r._get_data();
+<a name="l00070"></a>00070 rdata->copy(n1data, 1);
+<a name="l00071"></a>00071 rdata->add(*n2data);
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> r;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075
+<a name="l00082"></a>00082 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> integer& n1, <span class="keyword">const</span> integer& n2) {
+<a name="l00083"></a>00083 <span class="keywordtype">int</span> sign1=n1.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), sign2=n2.sign();
+<a name="l00084"></a>00084 <span class="keywordflow">if</span> (sign1 != sign2) {
+<a name="l00085"></a>00085 <span class="keywordflow">if</span> (sign1 == 0) <span class="keywordflow">return</span> -n2;
+<a name="l00086"></a>00086 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 == 0) <span class="keywordflow">return</span> n1;
+<a name="l00087"></a>00087 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(n1, -n2);
+<a name="l00088"></a>00088 } <span class="keywordflow">else</span> {
+<a name="l00089"></a>00089 <span class="keywordtype">bool</span> invert=(sign1 == (n1 < n2 ? 1 : -1));
+<a name="l00090"></a>00090 <span class="keyword">const</span> data_t *n1data=n1._get_data(), *n2data=n2._get_data();
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (invert) std::swap(n1data, n2data);
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 integer r;
+<a name="l00094"></a>00094 data_t *rdata=r._get_data();
+<a name="l00095"></a>00095 rdata->copy(n1data);
+<a name="l00096"></a>00096 rdata->subtract(*n2data);
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> (invert ? -r : r);
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00111"></a>00111 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> integer& n, <span class="keyword">const</span> integer& by) {
+<a name="l00112"></a>00112 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>(), bysign=by.sign();
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (nsign==0 || bysign==0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 <span class="keyword">const</span> data_t *ndata=n._get_data(), *bydata=by._get_data();
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (ndata == bydata) <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(n);
<a name="l00117"></a>00117
-<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="l00118"></a>00118 <span class="comment">// In multiplication, we know that the answer will be less than or equal to</span>
+<a name="l00119"></a>00119 <span class="comment">// the sum of the lengths of the operands.</span>
+<a name="l00120"></a>00120 integer answer;
+<a name="l00121"></a>00121 data_t *answerdata=answer._get_data();
+<a name="l00122"></a>00122 answerdata->alloc(ndata->mLength + bydata->mLength);
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// Now multiply the digits, starting at the least-significant digit.</span>
+<a name="l00125"></a>00125 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1 = ndata->digits, *d1e = d1 + ndata->mLength;
+<a name="l00126"></a>00126 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2e = bydata->digits + bydata->mLength;
+<a name="l00127"></a>00127 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit1=0; d1<d1e; ++digit1, ++d1) {
+<a name="l00128"></a>00128 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d2=bydata->digits;
+<a name="l00129"></a>00129 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> digit2=0; d2<d2e; ++digit2, ++d2) {
+<a name="l00130"></a>00130 <span class="comment">// First multiply the two digits</span>
+<a name="l00131"></a>00131 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a> t=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(*d1) * *d2;
<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <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="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="l00170"></a>00170
-<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="l00171"></a>00171 <span class="keywordtype">int</span> m = int(d1data->mLength) - 1;
+<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *d1p=d1data->digits+m;
+<a name="l00173"></a>00173 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *qp=qdata->digits+m;
+<a name="l00174"></a>00174 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = m; i >= 0; --i, --d1p, --qp) {
+<a name="l00175"></a>00175 a = (a & ~lomask) | *d1p;
+<a name="l00176"></a>00176 *qp = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(a / d2);
+<a name="l00177"></a>00177 a = (a & ~himask) | ((a % d2) << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179 rdata->digits[0] = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>((a & himask) >>
+<a name="l00180"></a>00180 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 qdata->skipLeadingZeros();
+<a name="l00183"></a>00183 rdata->skipLeadingZeros();
+<a name="l00184"></a>00184 <span class="keywordflow">return</span> std::make_pair(quotient, remainder);
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 std::pair<integer, integer> subDivide(integer d1, integer d2) {
+<a name="l00188"></a>00188 <span class="keyword">const</span> <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *byDigits = d2._get_data()->digits;
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="comment">// The normalization step</span>
+<a name="l00191"></a>00191 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d = <span class="keyword">static_cast<</span><a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a><span class="keyword">></span>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">digit_overflowbit</a> /
+<a name="l00192"></a>00192 (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a4a5cc16afeb1b8f5c3f0e9585f8e7d23">doubledigit_t</a>(byDigits[d2._get_length()-1])+1));
+<a name="l00193"></a>00193 <span class="keywordflow">if</span> (d > 1) {
+<a name="l00194"></a>00194 d1 *= d;
+<a name="l00195"></a>00195 d2 *= d;
<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="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="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="l00214"></a>00214
-<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="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_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> integer& dividend, <span class="keyword">const</span> integer& divisor) {
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(dividend, divisor).first;
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262
+<a name="l00274"></a>00274 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> integer& d1, <span class="keyword">const</span> integer& d2) {
+<a name="l00275"></a>00275 <span class="keywordtype">int</span> sign1=d1.sign(), sign2=d2.sign();
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (sign2==0) <span class="keywordflow">throw</span> divide_by_zero();
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <span class="keywordtype">int</span> comp=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(d1, d2, <span class="keyword">true</span>);
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (comp<0) {
+<a name="l00280"></a>00280 <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>(), d1);
+<a name="l00281"></a>00281 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp==0) {
+<a name="l00282"></a>00282 <span class="keywordflow">return</span> std::make_pair(sign1 != sign2 ? <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">integer::one</a>() : integer(-1),
+<a name="l00283"></a>00283 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>());
<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285 }
-<a name="l00286"></a>00286
-<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>
+<a name="l00285"></a>00285
+<a name="l00286"></a>00286 <span class="keywordflow">if</span> (sign1 < 0 && sign2 < 0) {
+<a name="l00287"></a>00287 std::pair<integer, integer> a=subDivide(-d1, -d2);
+<a name="l00288"></a>00288 a.second._set_negative(<span class="keyword">true</span>);
+<a name="l00289"></a>00289 <span class="keywordflow">return</span> a;
+<a name="l00290"></a>00290 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign1 < 0) {
+<a name="l00291"></a>00291 std::pair<integer, integer> a=subDivide(-d1, d2);
+<a name="l00292"></a>00292 a.first._set_negative(<span class="keyword">true</span>);
+<a name="l00293"></a>00293 a.second._set_negative(<span class="keyword">true</span>);
+<a name="l00294"></a>00294 <span class="keywordflow">return</span> a;
+<a name="l00295"></a>00295 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sign2 < 0) {
+<a name="l00296"></a>00296 std::pair<integer, integer> a=subDivide(d1, -d2);
+<a name="l00297"></a>00297 a.first._set_negative(<span class="keyword">true</span>);
+<a name="l00298"></a>00298 <span class="keywordflow">return</span> a;
+<a name="l00299"></a>00299 };
+<a name="l00300"></a>00300
+<a name="l00301"></a>00301 <span class="keywordflow">if</span> (d2._get_data()->mLength == 1) {
+<a name="l00302"></a>00302 <span class="keywordflow">return</span> divideBySingleDigit(d1, d2._get_data()->digits[0]);
+<a name="l00303"></a>00303 } <span class="keywordflow">else</span> {
+<a name="l00304"></a>00304 <span class="keywordflow">return</span> subDivide(d1, d2);
+<a name="l00305"></a>00305 }
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307
+<a name="l00308"></a>00308 } <span class="comment">// namespace core</span>
+<a name="l00309"></a>00309 } <span class="comment">// namespace xint</span>
+<a name="l00310"></a>00310 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__core.html (from r61199, /sandbox/xint/doc/r_core.html)
==============================================================================
--- /sandbox/xint/doc/r_core.html (original)
+++ sandbox/xint/doc/r__core.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: What's with the \c core namespace?</title>
+<title>The Extended Integer (XInt) Library: What's with the \c core and \c blockable namespaces?</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 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,23 +18,23 @@
<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 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>
+<h1><a class="anchor" id="r_core">What's with the <code>core</code> and <code>blockable</code> namespaces? </a></h1><p>Several people on the Boost developers' mailing list expressed reservations about the exception-blocking mechanism and the Not-a-Number value. After a spirited debate, two indisputable points emerged:</p>
<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>
+<p>I believe that the exception-blocking feature is useful, so I proposed a compromise: two <code>integer</code> classes, one that would always contain a valid integer value and would be immune to exception-blocking, and one that would honor exception-blocking and could hold the Not-a-Number value. These now reside in the <code>xint::core</code> and <code>xint::blockable</code> namespaces.</p>
+<p>Functions in the <code>core</code> namespace will always throw an exception on any error, and will only call other functions within the <code>core</code> namespace. That ensures that the Not-a-Number value only needs to be checked for in a single <code>xint::core::integer</code> constructor, and all but eliminates any speed penalty from it. It also gives a base of functions that are immune to the exception-blocking mechanism, which provides firm ground to build other libraries on.</p>
+<p>Every function in the <code>blockable</code> namespace calls its <code>core</code> counterpart in a try/catch construct, allowing it to intercept any exceptions and either pass them through (if exceptions are allowed) or take some alternate action, such as returning a Not-a-Number value. That preserves the exception-blocking feature as well. </p>
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/r__core_8dox.html
==============================================================================
--- sandbox/xint/doc/r__core_8dox.html (original)
+++ sandbox/xint/doc/r__core_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__cow.html (from r61199, /sandbox/xint/doc/r_cow.html)
==============================================================================
--- /sandbox/xint/doc/r_cow.html (original)
+++ sandbox/xint/doc/r__cow.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -27,8 +27,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__default__necessary.html (from r61199, /sandbox/xint/doc/r_default_necessary.html)
==============================================================================
--- /sandbox/xint/doc/r_default_necessary.html (original)
+++ sandbox/xint/doc/r__default__necessary.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -26,8 +26,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__exception__blocking.html (from r61199, /sandbox/xint/doc/r_exception_blocking.html)
==============================================================================
--- /sandbox/xint/doc/r_exception_blocking.html (original)
+++ sandbox/xint/doc/r__exception__blocking.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -28,8 +28,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/r__exception__blocking_8dox.html
==============================================================================
--- sandbox/xint/doc/r__exception__blocking_8dox.html (original)
+++ sandbox/xint/doc/r__exception__blocking_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__insecure__default.html (from r61199, /sandbox/xint/doc/r_insecure_default.html)
==============================================================================
--- /sandbox/xint/doc/r_insecure_default.html (original)
+++ sandbox/xint/doc/r__insecure__default.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,16 +18,16 @@
<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 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_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>
+<h1><a class="anchor" id="r_insecure_default">But why default to an insecure random number generator? Why not default to the secure one? </a></h1><p>Because the secure one isn't available on all systems. If the library relied on <code>random_device</code> as a default, it wouldn't compile under those systems. If it used <code>xint::strong_random_generator</code>, it would compile, but would always fail on them. </p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__interface.html (from r61199, /sandbox/xint/doc/r_interface.html)
==============================================================================
--- /sandbox/xint/doc/r_interface.html (original)
+++ sandbox/xint/doc/r__interface.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__interface__design__only.html (from r61199, /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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -31,8 +31,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__nan.html (from r61199, /sandbox/xint/doc/r_nan.html)
==============================================================================
--- /sandbox/xint/doc/r_nan.html (original)
+++ sandbox/xint/doc/r__nan.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -26,8 +26,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__negzero.html (from r61199, /sandbox/xint/doc/r_negzero.html)
==============================================================================
--- /sandbox/xint/doc/r_negzero.html (original)
+++ sandbox/xint/doc/r__negzero.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -26,10 +26,10 @@
<h1><a class="anchor" id="r_negzero">Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers? </a></h1><p>Because they're irrelevant to an arbitrary-sized integer library.</p>
<p>The mathematical concept of zero has no sign. It's neither positive nor negative (or if you prefer, it's both). The concept of a signed zero is used in floating-point numbers to represent a value that's so small that it can't be distinguished from zero, but which may not be an actual zero. Such a non-zero number does have a sign. But mathematically, a negative zero is simply zero.</p>
-<p>The concept of infinity (in either direction) comes up very rarely in an integer library. Since infinity is a concept, not a countable value, it's simply represented by the Not-a-Number value in the few places that it might be needed. </p>
+<p>The concept of infinity (in either direction) comes up very rarely in an integer library. Since infinity is a concept, not a countable value, it is not included in the library at present. </p>
</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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__random.html (from r61199, /sandbox/xint/doc/r_random.html)
==============================================================================
--- /sandbox/xint/doc/r_random.html (original)
+++ sandbox/xint/doc/r__random.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -26,8 +26,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Copied: sandbox/xint/doc/r__shared__ptr.html (from r61199, /sandbox/xint/doc/r_shared_ptr.html)
==============================================================================
--- /sandbox/xint/doc/r_shared_ptr.html (original)
+++ sandbox/xint/doc/r__shared__ptr.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -18,7 +18,7 @@
<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 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">
@@ -26,8 +26,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/r_core.html
==============================================================================
--- sandbox/xint/doc/r_core.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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>
Deleted: sandbox/xint/doc/r_cow.html
==============================================================================
--- sandbox/xint/doc/r_cow.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Why use copy-on-write? I've heard that causes problems with multi-threaded code.</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_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 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>
Deleted: sandbox/xint/doc/r_default_necessary.html
==============================================================================
--- sandbox/xint/doc/r_default_necessary.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Okay, then why not make the developer provide one?</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_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 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>
Deleted: sandbox/xint/doc/r_exception_blocking.html
==============================================================================
--- sandbox/xint/doc/r_exception_blocking.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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>
-<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_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 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>
Deleted: sandbox/xint/doc/r_insecure_default.html
==============================================================================
--- sandbox/xint/doc/r_insecure_default.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: But why default to an insecure random number generator? Why not default to the secure one?</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_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 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>
Deleted: sandbox/xint/doc/r_interface.html
==============================================================================
--- sandbox/xint/doc/r_interface.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Why did you do \e X in the interface?</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_interface">Why did you do <em>X</em> in the interface? </a></h1><p>The interface is based on a paper by M.J. Kronenburg presented to the C++ Standards Committee in early 2004, n1692, and the "standardese" for it in n1744 by Michiel Salters / Nederlands Normalisatie Instituut.</p>
-<dl class="see"><dt><b>See also:</b></dt><dd>n1692: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1692.pdf </dd>
-<dd>
-n1744: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1744.pdf </dd></dl>
-</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>
Deleted: sandbox/xint/doc/r_interface_design_only.html
==============================================================================
--- sandbox/xint/doc/r_interface_design_only.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Then why didn't you follow those exactly?</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_interface_design_only">Then why didn't you follow those exactly? </a></h1><p>The XInt library was designed before I knew about them. I adapted it to them later.</p>
-<p>There are only a few notable places where XInt differs from them:</p>
-<ul>
-<li>It does not provide separate mathematical primitive functions for <code>long long</code>, as suggested in n1744. This is partly because <code>long long</code> is not yet in the C++ standard, but mostly because I don't see a need for it. The conversion constructors are efficient enough for smaller values that there wouldn't be any noticeable benefit from it.</li>
-<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 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>
Deleted: sandbox/xint/doc/r_nan.html
==============================================================================
--- sandbox/xint/doc/r_nan.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Why have a Not-a-Number value?</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_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 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>
Deleted: sandbox/xint/doc/r_negzero.html
==============================================================================
--- sandbox/xint/doc/r_negzero.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers?</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_negzero">Since you've got Not-a-Number, what about negative zero, and positive and negative infinity, like IEEE floating-point numbers? </a></h1><p>Because they're irrelevant to an arbitrary-sized integer library.</p>
-<p>The mathematical concept of zero has no sign. It's neither positive nor negative (or if you prefer, it's both). The concept of a signed zero is used in floating-point numbers to represent a value that's so small that it can't be distinguished from zero, but which may not be an actual zero. Such a non-zero number does have a sign. But mathematically, a negative zero is simply zero.</p>
-<p>The concept of infinity (in either direction) comes up very rarely in an integer library. Since infinity is a concept, not a countable value, it'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 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>
Deleted: sandbox/xint/doc/r_random.html
==============================================================================
--- sandbox/xint/doc/r_random.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Why did you implement your own random number generator? You should use Boost.Random instead.</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_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 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>
Deleted: sandbox/xint/doc/r_shared_ptr.html
==============================================================================
--- sandbox/xint/doc/r_shared_ptr.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Why are you using a roll-your-own system instead of \c boost::shared_ptr for the copy-on-write stuff?</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_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 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/random.html
==============================================================================
--- sandbox/xint/doc/random.html (original)
+++ sandbox/xint/doc/random.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -24,12 +24,12 @@
<div class="contents">
-<h1><a class="anchor" id="random">The XInt Random Number System </a></h1><p>The library includes a random number system to support the xint::random_prime function. The default random number generator is <em>not</em> cryptographically secure (see <a class="el" href="rationale.html">the rationale page</a> for details). However, the system can easily be configured to use a cryptographically-secure generator.</p>
-<p>The XInt library provides a convenience class, 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>
+<h1><a class="anchor" id="random">The XInt Random Number System </a></h1><p>The library includes a random number system to support the <code>xint::random_prime</code> function. The default random number generator is <em>not</em> cryptographically secure (see <a class="el" href="rationale.html">the rationale page</a> for details). However, the system can easily be configured to use a cryptographically-secure generator.</p>
+<p>The XInt library provides a convenience class, <code>xint::strong_random_generator</code>, for both Windows and UNIX-derived systems. It will throw an exception of type <code>xint::no_strong_random</code> if you try to instantiate it on a system that does not have a strong random number generator.</p>
<p>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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/random_8cpp.html
==============================================================================
--- sandbox/xint/doc/random_8cpp.html (original)
+++ sandbox/xint/doc/random_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,13 +29,6 @@
<h1>random.cpp File Reference</h1>
<p>Contains the definitions for the random number functions.
<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 <vector></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <ctime></code><br/>
-<code>#include <boost/random/mersenne_twister.hpp></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -43,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -53,27 +46,26 @@
</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>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">boost::xint::detail::set_random_generator</a> (base_random_generator *obj)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail::get_random</a> ()</td></tr>
-<tr><td 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>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with specific attributes. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for the random number functions. </p>
<p>Definition in file <a class="el" href="random_8cpp_source.html">random.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -119,134 +119,123 @@
<a name="l00097"></a>00097
<a name="l00099"></a>00099 <span class="comment">// The secure random generator</span>
<a name="l00100"></a>00100
-<a name="l00102"></a>00102 <span class="preprocessor">#ifdef _WIN32</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
-<a name="l00104"></a>00104 <span class="keyword">typedef</span> BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
-<a name="l00105"></a>00105 <span class="keyword">typedef</span> DWORD <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 impl_t(): dll(0), fn(0) {
-<a name="l00108"></a>00108 <span class="comment">// This should work under WinXP, Vista, and Win7. No guarantees about</span>
-<a name="l00109"></a>00109 <span class="comment">// future compatibility, but I doubt that Microsoft will get rid of it</span>
-<a name="l00110"></a>00110 <span class="comment">// (it's too useful), and I doubt that they'll change it now that it's</span>
-<a name="l00111"></a>00111 <span class="comment">// well-known (it would break too many programs). We could also use the</span>
-<a name="l00112"></a>00112 <span class="comment">// rand_s function in more recent versions of Visual C++, but that</span>
-<a name="l00113"></a>00113 <span class="comment">// causes compatibility problems with older versions of Windows.</span>
-<a name="l00114"></a>00114 dll=LoadLibraryA(<span class="stringliteral">"Advapi32.dll"</span>);
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll, <span class="stringliteral">"SystemFunction036"</span>));
-<a name="l00116"></a>00116 <span class="keywordflow">if</span> (fn == 0) {
-<a name="l00117"></a>00117 destroy();
-<a name="l00118"></a>00118 <span class="keywordflow">throw</span> no_strong_random();
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 ~impl_t() { destroy(); }
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <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="l00125"></a>00125 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> r=0;
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (!fn(&r, <span class="keyword">sizeof</span>(<a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>)))
-<a name="l00127"></a>00127 <span class="keywordflow">throw</span> no_strong_random(<span class="stringliteral">"RtlGenRandom failed"</span>);
-<a name="l00128"></a>00128 <span class="keywordflow">return</span> r;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="keywordtype">void</span> destroy() { <span class="keywordflow">if</span> (dll) FreeLibrary(dll); }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 HMODULE dll;
-<a name="l00134"></a>00134 RtlGenRandomFn fn;
-<a name="l00135"></a>00135 };
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 32; }
-<a name="l00138"></a>00138 <span class="preprocessor">#else</span>
-<a name="l00139"></a>00139 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
-<a name="l00140"></a>00140 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 impl_t(): rng(<span class="stringliteral">"/dev/urandom"</span>, std::ios::binary) {
-<a name="l00143"></a>00143 <span class="comment">// This should be supported under most non-Windows systems. Note</span>
-<a name="l00144"></a>00144 <span class="comment">// that we're using /dev/urandom, not /dev/random -- /dev/random is</span>
-<a name="l00145"></a>00145 <span class="comment">// more secure, but it can be VERY slow.</span>
-<a name="l00146"></a>00146 <span class="keywordflow">if</span> (!rng) <span class="keywordflow">throw</span> no_strong_random();
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <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="l00150"></a>00150 <span class="keywordtype">int</span> r=rng.get();
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (r==EOF) <span class="keywordflow">throw</span> no_strong_random(<span class="stringliteral">"/dev/urandom returned EOF"</span>);
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a><span class="keyword">></span>(r);
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 std::ifstream rng;
-<a name="l00156"></a>00156 };
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 8; }
-<a name="l00159"></a>00159 <span class="preprocessor">#endif</span>
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="preprocessor">#ifdef _WIN32</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
+<a name="l00105"></a>00105 <span class="keyword">typedef</span> BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
+<a name="l00106"></a>00106 <span class="keyword">typedef</span> DWORD <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 impl_t(): dll(0), fn(0) {
+<a name="l00109"></a>00109 <span class="comment">// This should work under WinXP, Vista, and Win7. No guarantees about</span>
+<a name="l00110"></a>00110 <span class="comment">// future compatibility, but I doubt that Microsoft will get rid of it</span>
+<a name="l00111"></a>00111 <span class="comment">// (it's too useful), and I doubt that they'll change it now that it's</span>
+<a name="l00112"></a>00112 <span class="comment">// well-known (it would break too many programs). We could also use the</span>
+<a name="l00113"></a>00113 <span class="comment">// rand_s function in more recent versions of Visual C++, but that</span>
+<a name="l00114"></a>00114 <span class="comment">// causes compatibility problems with older versions of Windows.</span>
+<a name="l00115"></a>00115 dll=LoadLibraryA(<span class="stringliteral">"Advapi32.dll"</span>);
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (dll != 0) fn=RtlGenRandomFn(GetProcAddress(dll, <span class="stringliteral">"SystemFunction036"</span>));
+<a name="l00117"></a>00117 <span class="keywordflow">if</span> (fn == 0) {
+<a name="l00118"></a>00118 destroy();
+<a name="l00119"></a>00119 <span class="keywordflow">throw</span> no_strong_random();
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 ~impl_t() { destroy(); }
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>() {
+<a name="l00126"></a>00126 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> r=0;
+<a name="l00127"></a>00127 <span class="keywordflow">if</span> (!fn(&r, <span class="keyword">sizeof</span>(<a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>)))
+<a name="l00128"></a>00128 <span class="keywordflow">throw</span> no_strong_random(<span class="stringliteral">"RtlGenRandom failed"</span>);
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> r;
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="keywordtype">void</span> destroy() { <span class="keywordflow">if</span> (dll) FreeLibrary(dll); }
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 HMODULE dll;
+<a name="l00135"></a>00135 RtlGenRandomFn fn;
+<a name="l00136"></a>00136 };
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 32; }
+<a name="l00139"></a>00139 <span class="preprocessor">#else</span>
+<a name="l00140"></a>00140 <span class="preprocessor"></span> <span class="keyword">struct </span>strong_random_generator::impl_t {
+<a name="l00141"></a>00141 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 impl_t(): rng(<span class="stringliteral">"/dev/urandom"</span>, std::ios::binary) {
+<a name="l00144"></a>00144 <span class="comment">// This should be supported under most non-Windows systems. Note</span>
+<a name="l00145"></a>00145 <span class="comment">// that we're using /dev/urandom, not /dev/random -- /dev/random is</span>
+<a name="l00146"></a>00146 <span class="comment">// more secure, but it can be VERY slow.</span>
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (!rng) <span class="keywordflow">throw</span> no_strong_random();
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>() {
+<a name="l00151"></a>00151 <span class="keywordtype">int</span> r=rng.get();
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> (r==EOF) <span class="keywordflow">throw</span> no_strong_random(<span class="stringliteral">"/dev/urandom returned EOF"</span>);
+<a name="l00153"></a>00153 <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a><span class="keyword">></span>(r);
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 std::ifstream rng;
+<a name="l00157"></a>00157 };
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">strong_random_generator::entropy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 8; }
+<a name="l00160"></a>00160 <span class="preprocessor">#endif</span>
<a name="l00161"></a>00161 <span class="preprocessor"></span>
-<a name="l00162"></a>00162 <span class="preprocessor"></span><span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">strong_random_generator::has_fixed_range</a> = <span class="keyword">true</span>;
-<a name="l00163"></a>00163 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">strong_random_generator::min_value</a> =
-<a name="l00164"></a>00164 (std::numeric_limits<impl_t::result_type>::min)();
-<a name="l00165"></a>00165 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">strong_random_generator::max_value</a> =
-<a name="l00166"></a>00166 (std::numeric_limits<impl_t::result_type>::max)();
-<a name="l00167"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">00167</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator::strong_random_generator</a>(): impl(new impl_t) { }
-<a name="l00168"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">00168</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">strong_random_generator::~strong_random_generator</a>() { <span class="keyword">delete</span> impl; }
-<a name="l00169"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">00169</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">strong_random_generator::operator()</a>() {
-<a name="l00170"></a>00170 <span class="keywordflow">return</span> (*impl)(); }
-<a name="l00171"></a>00171
-<a name="l00173"></a>00173 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">strong_random_generator::min</a>
-<a name="l00174"></a>00174 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> min_value; }
-<a name="l00175"></a>00175 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">strong_random_generator::max</a>
-<a name="l00176"></a>00176 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> max_value; }
-<a name="l00178"></a>00178
-<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="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>
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">strong_random_generator::has_fixed_range</a> = <span class="keyword">true</span>;
+<a name="l00165"></a>00165 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">strong_random_generator::min_value</a> =
+<a name="l00166"></a>00166 (std::numeric_limits<impl_t::result_type>::min)();
+<a name="l00167"></a>00167 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">strong_random_generator::max_value</a> =
+<a name="l00168"></a>00168 (std::numeric_limits<impl_t::result_type>::max)();
+<a name="l00169"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">00169</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator::strong_random_generator</a>(): impl(new impl_t) { }
+<a name="l00170"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">00170</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">strong_random_generator::~strong_random_generator</a>() { <span class="keyword">delete</span> impl; }
+<a name="l00171"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">00171</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">strong_random_generator::operator()</a>() {
+<a name="l00172"></a>00172 <span class="keywordflow">return</span> (*impl)(); }
+<a name="l00173"></a>00173
+<a name="l00175"></a>00175 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">strong_random_generator::min</a>
+<a name="l00176"></a>00176 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> min_value; }
+<a name="l00177"></a>00177 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">strong_random_generator::result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">strong_random_generator::max</a>
+<a name="l00178"></a>00178 BOOST_PREVENT_MACRO_SUBSTITUTION ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> max_value; }
+<a name="l00180"></a>00180
+<a name="l00182"></a>00182 <span class="comment">// Returns a positive (unless told otherwise) integer between zero and</span>
+<a name="l00183"></a>00183 <span class="comment">// (1<<bits)-1, inclusive</span>
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <span class="keyword">namespace </span>core {
+<a name="l00206"></a>00206 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> bits, <span class="keywordtype">bool</span> high_bit_on, <span class="keywordtype">bool</span> low_bit_on, <span class="keywordtype">bool</span>
+<a name="l00207"></a>00207 can_be_negative)
+<a name="l00208"></a>00208 {
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (bits<=0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 generator_t randomGenerator;
+<a name="l00212"></a>00212 <span class="keyword">const</span> <span class="keywordtype">size_t</span> cBitsPerIteration=std::numeric_limits<generator_t::result_type>::digits;
+<a name="l00213"></a>00213
+<a name="l00214"></a>00214 <span class="comment">// Grab a set of random bits, of at least the specified size</span>
+<a name="l00215"></a>00215 <span class="keywordtype">size_t</span> iterations = (bits+cBitsPerIteration-1) / cBitsPerIteration;
+<a name="l00216"></a>00216 std::vector<generator_t::result_type> v;
+<a name="l00217"></a>00217 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<iterations; ++i) v.push_back(randomGenerator());
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="keyword">const</span> <span class="keywordtype">char</span> *vptr=(<span class="keyword">const</span> <span class="keywordtype">char</span> *)&v[0], *vptr_end=vptr+(v.size() * <span class="keyword">sizeof</span>(generator_t::result_type));
+<a name="l00220"></a>00220 integer p=<a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">from_binary</a>(std::string(vptr, vptr_end));
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <span class="comment">// Trim it to the proper length</span>
+<a name="l00223"></a>00223 <span class="keywordtype">size_t</span> index=(bits/<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>);
+<a name="l00224"></a>00224 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> mask=(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a>(1) << (bits % <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">bits_per_digit</a>))-1;
+<a name="l00225"></a>00225 <span class="keywordflow">if</span> (mask==0) { mask=<a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">digit_mask</a>; --index; }
+<a name="l00226"></a>00226 p._get_data()->digits[index] &= mask;
+<a name="l00227"></a>00227 <span class="keywordflow">for</span> (<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *i=p._get_data()->digits+index+1,
+<a name="l00228"></a>00228 *ie=p._get_data()->digits+p._get_data()->mLength; i<ie; ++i) *i=0;
+<a name="l00229"></a>00229 p._get_data()->skipLeadingZeros();
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 <span class="keywordflow">if</span> (high_bit_on) <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(p, bits-1);
+<a name="l00232"></a>00232 <span class="keywordflow">if</span> (low_bit_on) <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(p, 0);
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (can_be_negative) p._set_negative(randomGenerator() & 0x01);
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235 <span class="keywordflow">return</span> p;
+<a name="l00236"></a>00236 }
+<a name="l00237"></a>00237 } <span class="comment">// namespace core</span>
+<a name="l00238"></a>00238 } <span class="comment">// namespace xint</span>
+<a name="l00239"></a>00239 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/random_8dox.html
==============================================================================
--- sandbox/xint/doc/random_8dox.html (original)
+++ sandbox/xint/doc/random_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/rationale.html
==============================================================================
--- sandbox/xint/doc/rationale.html (original)
+++ sandbox/xint/doc/rationale.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -27,33 +27,33 @@
<h1><a class="anchor" id="rationale">Rationales </a></h1><h2><a class="anchor" id="sinterface">
Interface</a></h2>
<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>
+<li><a class="el" href="r__interface.html">Why did you do <em>X</em> in the interface?</a></li>
+<li><a class="el" href="r__interface__design__only.html">Then why didn't you follow those exactly?</a></li>
+<li><a class="el" href="r__core.html">What's with the <code>core</code> and <code>blockable</code> namespaces?</a></li>
</ul>
<h2><a class="anchor" id="scow">
Copy-on-Write</a></h2>
<ul>
-<li><a class="el" href="r_cow.html">Why use copy-on-write? I've heard that causes problems with multi-threaded code.</a></li>
-<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>
+<li><a class="el" href="r__cow.html">Why use copy-on-write? I've heard that causes problems with multi-threaded code.</a></li>
+<li><a class="el" href="r__shared__ptr.html">Why are you using a roll-your-own system instead of <code>boost::shared_ptr</code> for the copy-on-write stuff?</a></li>
</ul>
<h2><a class="anchor" id="snan">
Not-a-Number and Exception Blocking</a></h2>
<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>
+<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">
Random generator</a></h2>
<ul>
-<li><a class="el" href="r_random.html">Why did you implement your own random number generator? You should use Boost.Random instead.</a></li>
-<li><a class="el" href="r_insecure_default.html">But why default to an insecure random number generator? Why not default to the secure one?</a></li>
-<li><a class="el" href="r_default_necessary.html">Okay, then why not make the developer provide one?</a> </li>
+<li><a class="el" href="r__random.html">Why did you implement your own random number generator? You should use Boost.Random instead.</a></li>
+<li><a class="el" href="r__insecure__default.html">But why default to an insecure random number generator? Why not default to the secure one?</a></li>
+<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/rationale_8dox.html
==============================================================================
--- sandbox/xint/doc/rationale_8dox.html (original)
+++ sandbox/xint/doc/rationale_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/roots_8cpp.html
==============================================================================
--- sandbox/xint/doc/roots_8cpp.html (original)
+++ sandbox/xint/doc/roots_8cpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,7 +29,6 @@
<h1>roots.cpp File Reference</h1>
<p>Contains the definitions for functions related to roots of a number.
<a href="#_details">More...</a></p>
-<code>#include "../boost/xint/xint.hpp"</code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -37,29 +36,28 @@
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">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>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core::sqrt</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Contains the definitions for functions related to roots of a number. </p>
<p>Definition in file <a class="el" href="roots_8cpp_source.html">roots.cpp</a>.</p>
</div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -41,42 +41,33 @@
<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">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>
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>core {
+<a name="l00023"></a>00023
+<a name="l00034"></a>00034 integer <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> integer& n) {
+<a name="l00035"></a>00035 <span class="keywordflow">if</span> (n.sign() < 0) <span class="keywordflow">throw</span> cannot_represent(<span class="stringliteral">"library cannot represent "</span>
+<a name="l00036"></a>00036 <span class="stringliteral">"imaginary values (tried to take sqrt of negative number)"</span>);
+<a name="l00037"></a>00037 <span class="keywordflow">if</span> (n.sign() == 0) <span class="keywordflow">return</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">integer::zero</a>();
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="comment">// Initial guess is half the length of n, in bits</span>
+<a name="l00040"></a>00040 integer guess;
+<a name="l00041"></a>00041 <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(guess, <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(n)/2);
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="comment">// Now refine it until we're as close as integers can get</span>
+<a name="l00044"></a>00044 <span class="keywordflow">while</span> (1) {
+<a name="l00045"></a>00045 integer guess2=(guess + (n/guess)) >> 1;
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (guess == guess2) <span class="keywordflow">break</span>;
+<a name="l00047"></a>00047 guess=guess2;
+<a name="l00048"></a>00048 }
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keywordflow">return</span> guess;
+<a name="l00051"></a>00051 }
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 } <span class="comment">// namespace core</span>
+<a name="l00054"></a>00054 } <span class="comment">// namespace xint</span>
+<a name="l00055"></a>00055 } <span class="comment">// namespace boost</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/securemode.html
==============================================================================
--- sandbox/xint/doc/securemode.html (original)
+++ sandbox/xint/doc/securemode.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -28,8 +28,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/securemode_8dox.html
==============================================================================
--- sandbox/xint/doc/securemode_8dox.html (original)
+++ sandbox/xint/doc/securemode_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -31,8 +31,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.gif
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -32,13 +32,11 @@
<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>.
<a href="#_details">More...</a></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=""/>
+ <img src="structboost_1_1xint_1_1detail_1_1base__random__generator.png" 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>
@@ -96,8 +94,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1base__random__generator.png
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -34,6 +34,7 @@
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a>(const data_t *c, size_t extraDigits=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a91d6951498c6df25133e987c7d347c17">data_t</a>(data_t *c)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a84c1163a2b0a698a74125b4d21f99d12">data_t</a>(boost::uintmax_t n, bool)</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a></td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a>()</td><td><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</a></td><td></td></tr>
@@ -52,8 +53,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -30,11 +30,9 @@
</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>.
+<p>Holds the internal details of an xint::integer.
<a href="#_details">More...</a></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>
@@ -43,6 +41,7 @@
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a> (<a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial1=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial2=0, <a class="el" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial3=0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a91d6951498c6df25133e987c7d347c17">data_t</a> (<a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">data_t</a> *c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a84c1163a2b0a698a74125b4d21f99d12">data_t</a> (boost::uintmax_t n, bool)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a> (size_t <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, bool copydigits=false)</td></tr>
@@ -67,8 +66,8 @@
<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>Holds the internal details of an xint::integer. </p>
+<p>The data for an integer is stored in a separate struct so it can be shared between different copies of an identical number. </p>
<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>
@@ -128,6 +127,36 @@
</div>
</div>
+<a class="anchor" id="a84c1163a2b0a698a74125b4d21f99d12"></a><!-- doxytag: member="boost::xint::detail::data_t::data_t" ref="a84c1163a2b0a698a74125b4d21f99d12" args="(boost::uintmax_t n, bool)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">boost::xint::detail::data_t::data_t </td>
+ <td>(</td>
+ <td class="paramtype">boost::uintmax_t </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00064">64</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+
+</div>
+</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ac723d73bc8845e6df77f3c439128b939"></a><!-- doxytag: member="boost::xint::detail::data_t::add" ref="ac723d73bc8845e6df77f3c439128b939" args="(const data_t &addend)" -->
<div class="memitem">
@@ -145,7 +174,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00229">229</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -174,7 +203,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00116">116</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -193,7 +222,7 @@
</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>
+<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>
@@ -222,7 +251,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00184">184</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -241,7 +270,7 @@
</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>
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00073">73</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
</div>
</div>
@@ -260,7 +289,7 @@
</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>
+<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>
@@ -279,7 +308,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00222">222</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -314,7 +343,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00105">105</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -334,7 +363,7 @@
</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>
+<p>Definition at line <a class="el" href="xint__data__t_8hpp_source.html#l00075">75</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
</div>
</div>
@@ -354,7 +383,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00283">283</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -374,7 +403,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00311">311</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -392,9 +421,9 @@
</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>Call this after every manipulation of a <a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> object that could possibly leave leading zeros in the integer. </p>
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00077">77</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00098">98</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -414,7 +443,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00256">256</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -443,7 +472,7 @@
</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>
+<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00196">196</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
</div>
</div>
@@ -559,8 +588,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -33,8 +33,6 @@
<p>Holds information determining how many quick-digits to use.
<a href="#_details">More...</a></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>
@@ -119,8 +117,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -36,8 +36,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.gif
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -32,13 +32,11 @@
<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.
<a href="#_details">More...</a></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=""/>
+ <img src="structboost_1_1xint_1_1detail_1_1random__generator.png" 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>
@@ -188,8 +186,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Added: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1random__generator.png
==============================================================================
Binary file. No diff available.
Modified: sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html
==============================================================================
--- sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html (original)
+++ sandbox/xint/doc/structboost_1_1xint_1_1detail_1_1token.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -32,8 +32,6 @@
<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>.
<a href="#_details">More...</a></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>
@@ -44,8 +42,8 @@
<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:01 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator-members.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::detail::base_random_generator Member List</h1>This is the complete list of members for <a class="el" href="structxint_1_1detail_1_1base__random__generator.html">xint::detail::base_random_generator</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1base__random__generator.html#aa7f3b20e2fcccbf9d3a5c76e6c89b4b5">operator()</a>()=0</td><td><a class="el" href="structxint_1_1detail_1_1base__random__generator.html">xint::detail::base_random_generator</a></td><td><code> [pure virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a> typedef</td><td><a class="el" href="structxint_1_1detail_1_1base__random__generator.html">xint::detail::base_random_generator</a></td><td></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator.gif
==============================================================================
Binary file. No diff available.
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1base__random__generator.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="namespacexint_1_1detail.html">detail</a>::<a class="el" href="structxint_1_1detail_1_1base__random__generator.html">base_random_generator</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::detail::base_random_generator Struct Reference</h1><!-- doxytag: class="xint::detail::base_random_generator" -->
-<p>The base class for <a class="el" href="structxint_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 xint::detail::base_random_generator:</div>
-<div class="dynsection">
- <div class="center">
- <img src="structxint_1_1detail_1_1base__random__generator.gif" usemap="#xint::detail::base_random_generator_map" alt=""/>
- <map id="xint::detail::base_random_generator_map" name="xint::detail::base_random_generator_map">
-<area href="structxint_1_1detail_1_1random__generator.html" alt="xint::detail::random_generator< T >" shape="rect" coords="0,56,211,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="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">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="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1base__random__generator.html#aa7f3b20e2fcccbf9d3a5c76e6c89b4b5">operator()</a> ()=0</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The base class for <a class="el" href="structxint_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#l00079">79</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="a0556d7f290cd236303b3f1031611cb3e"></a><!-- doxytag: member="xint::detail::base_random_generator::result_type" ref="a0556d7f290cd236303b3f1031611cb3e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef unsigned int <a class="el" href="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">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#l00080">80</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="aa7f3b20e2fcccbf9d3a5c76e6c89b4b5"></a><!-- doxytag: member="xint::detail::base_random_generator::operator()" ref="aa7f3b20e2fcccbf9d3a5c76e6c89b4b5" args="()=0" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">virtual <a class="el" href="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a> 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="structxint_1_1detail_1_1random__generator.html#ade9cefb3f061112ba1d3144aefd24f28">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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1data__t-members.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1data__t-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::detail::data_t Member List</h1>This is the complete list of members for <a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a143e6814a7aa20a0d61ed616b9940b2e">add</a>(const data_t &addend)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a4fe3935e29883193166966c49cd73139">alloc</a>(size_t digits, bool copydigits=false)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a7230e725461510f321bb1c45251b62f3">attach</a>()</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a66862f94545c953f6604b4347205277b">copy</a>(const data_t *c, size_t extraDigits=0)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a9309667d3ac573346294e7b6e18c67ff">data_t</a>(digit_t initial1=0, digit_t initial2=0, digit_t initial3=0)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#ae5afaa677468a9624ed3fb04318fd2a3">data_t</a>(data_t *c)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#afd5505e388c5bf8c9cf069df81a91818">detach</a>()</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a5c9382aec147090d7e7e2b5e972402a9">digits</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#aaf6f202db416ad8fe18ec8a6c8c48904">invert</a>()</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a3390530db8333b535f65d3cc01ff5236">mAllocated</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a73bc854b5f9ced6576b97d2cff8f3a5d">mCopies</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#afb2d8673fc5d99d2ea006cd0aa32b744">mIsNegative</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a599933d272e3592b2d0985ca7f7c72e2">mLength</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a022f882ed0818612861b1a67881ae131">mQuickDigits</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a96c33fdc37dd3c774256f7ed20ce735c">mStorage</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#aa0dd7ef67ccdef3c3139f4afc84219bd">negate</a>()</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a57fc3966c44d09daeede53899673cde3">quickset</a>(digit_t d1, digit_t d2=0, digit_t d3=0)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a2bb2c79d47f2fda3605f34b80cb58b8b">realloc</a>(size_t newdigits)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a72785130c7c6490af874f450cf6e0086">shift_left</a>(size_t byBits)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a432ace7094bca306dcba254f862e2428">shift_right</a>(size_t byBits)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a6d45feedd311e26f7de06597fb0c6b81">skipLeadingZeros</a>()</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a650d374b8d38b369273830bb9d939da4">subtract</a>(const data_t &subtrahend)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t.html#a288850fd62ef26302ce4767a45acd968">zero</a>(digit_t *p, size_t count)</td><td><a class="el" href="structxint_1_1detail_1_1data__t.html">xint::detail::data_t</a></td><td></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1data__t.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1data__t.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,566 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="namespacexint_1_1detail.html">detail</a>::<a class="el" href="structxint_1_1detail_1_1data__t.html">data_t</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::detail::data_t Struct Reference</h1><!-- doxytag: class="xint::detail::data_t" -->
-<p>Holds the internal details of an <a class="el" href="classxint_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="structxint_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="structxint_1_1detail_1_1data__t.html#a9309667d3ac573346294e7b6e18c67ff">data_t</a> (<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> initial1=0, <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> initial2=0, <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="structxint_1_1detail_1_1data__t.html#ae5afaa677468a9624ed3fb04318fd2a3">data_t</a> (<a class="el" href="structxint_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="structxint_1_1detail_1_1data__t.html#a7230e725461510f321bb1c45251b62f3">attach</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#afd5505e388c5bf8c9cf069df81a91818">detach</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a4fe3935e29883193166966c49cd73139">alloc</a> (size_t <a class="el" href="structxint_1_1detail_1_1data__t.html#a5c9382aec147090d7e7e2b5e972402a9">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="structxint_1_1detail_1_1data__t.html#a2bb2c79d47f2fda3605f34b80cb58b8b">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="structxint_1_1detail_1_1data__t.html#a6d45feedd311e26f7de06597fb0c6b81">skipLeadingZeros</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a66862f94545c953f6604b4347205277b">copy</a> (const <a class="el" href="structxint_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="structxint_1_1detail_1_1data__t.html#a288850fd62ef26302ce4767a45acd968">zero</a> (<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="structxint_1_1detail_1_1data__t.html#a57fc3966c44d09daeede53899673cde3">quickset</a> (<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> d1, <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> d2=0, <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="structxint_1_1detail_1_1data__t.html#aaf6f202db416ad8fe18ec8a6c8c48904">invert</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#aa0dd7ef67ccdef3c3139f4afc84219bd">negate</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a143e6814a7aa20a0d61ed616b9940b2e">add</a> (const <a class="el" href="structxint_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="structxint_1_1detail_1_1data__t.html#a650d374b8d38b369273830bb9d939da4">subtract</a> (const <a class="el" href="structxint_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="structxint_1_1detail_1_1data__t.html#a72785130c7c6490af874f450cf6e0086">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="structxint_1_1detail_1_1data__t.html#a432ace7094bca306dcba254f862e2428">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="structxint_1_1detail_1_1data__t.html#a599933d272e3592b2d0985ca7f7c72e2">mLength</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a3390530db8333b535f65d3cc01ff5236">mAllocated</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a5c9382aec147090d7e7e2b5e972402a9">digits</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a022f882ed0818612861b1a67881ae131">mQuickDigits</a> [<a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#ac691b42c4404e59ae07f89146e722736">QuickDigits::count</a>]</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a96c33fdc37dd3c774256f7ed20ce735c">mStorage</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#a73bc854b5f9ced6576b97d2cff8f3a5d">mCopies</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1data__t.html#afb2d8673fc5d99d2ea006cd0aa32b744">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="classxint_1_1integer.html" title="The extended integer class.">xint::integer</a>. </p>
-<p>The data for an <a class="el" href="classxint_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#l00036">36</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="a9309667d3ac573346294e7b6e18c67ff"></a><!-- doxytag: member="xint::detail::data_t::data_t" ref="a9309667d3ac573346294e7b6e18c67ff" 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">xint::detail::data_t::data_t </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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#l00026">26</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae5afaa677468a9624ed3fb04318fd2a3"></a><!-- doxytag: member="xint::detail::data_t::data_t" ref="ae5afaa677468a9624ed3fb04318fd2a3" args="(data_t *c)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">xint::detail::data_t::data_t </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structxint_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#l00038">38</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="a143e6814a7aa20a0d61ed616b9940b2e"></a><!-- doxytag: member="xint::detail::data_t::add" ref="a143e6814a7aa20a0d61ed616b9940b2e" args="(const data_t &addend)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void xint::detail::data_t::add </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structxint_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#l00207">207</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4fe3935e29883193166966c49cd73139"></a><!-- doxytag: member="xint::detail::data_t::alloc" ref="a4fe3935e29883193166966c49cd73139" args="(size_t digits, bool copydigits=false)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00094">94</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7230e725461510f321bb1c45251b62f3"></a><!-- doxytag: member="xint::detail::data_t::attach" ref="a7230e725461510f321bb1c45251b62f3" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00070">70</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="a66862f94545c953f6604b4347205277b"></a><!-- doxytag: member="xint::detail::data_t::copy" ref="a66862f94545c953f6604b4347205277b" args="(const data_t *c, size_t extraDigits=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void xint::detail::data_t::copy </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structxint_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#l00162">162</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="afd5505e388c5bf8c9cf069df81a91818"></a><!-- doxytag: member="xint::detail::data_t::detach" ref="afd5505e388c5bf8c9cf069df81a91818" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool 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#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="aaf6f202db416ad8fe18ec8a6c8c48904"></a><!-- doxytag: member="xint::detail::data_t::invert" ref="aaf6f202db416ad8fe18ec8a6c8c48904" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00179">179</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa0dd7ef67ccdef3c3139f4afc84219bd"></a><!-- doxytag: member="xint::detail::data_t::negate" ref="aa0dd7ef67ccdef3c3139f4afc84219bd" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00200">200</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a57fc3966c44d09daeede53899673cde3"></a><!-- doxytag: member="xint::detail::data_t::quickset" ref="a57fc3966c44d09daeede53899673cde3" 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 xint::detail::data_t::quickset </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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#l00083">83</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2bb2c79d47f2fda3605f34b80cb58b8b"></a><!-- doxytag: member="xint::detail::data_t::realloc" ref="a2bb2c79d47f2fda3605f34b80cb58b8b" args="(size_t newdigits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00073">73</a> of file <a class="el" href="xint__data__t_8hpp_source.html">xint_data_t.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a72785130c7c6490af874f450cf6e0086"></a><!-- doxytag: member="xint::detail::data_t::shift_left" ref="a72785130c7c6490af874f450cf6e0086" args="(size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00261">261</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a432ace7094bca306dcba254f862e2428"></a><!-- doxytag: member="xint::detail::data_t::shift_right" ref="a432ace7094bca306dcba254f862e2428" args="(size_t byBits)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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#l00289">289</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6d45feedd311e26f7de06597fb0c6b81"></a><!-- doxytag: member="xint::detail::data_t::skipLeadingZeros" ref="a6d45feedd311e26f7de06597fb0c6b81" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void 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="structxint_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="classxint_1_1integer.html" title="The extended integer class.">integer</a>. </p>
-
-<p>Definition at line <a class="el" href="data__t_8cpp_source.html#l00076">76</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a650d374b8d38b369273830bb9d939da4"></a><!-- doxytag: member="xint::detail::data_t::subtract" ref="a650d374b8d38b369273830bb9d939da4" args="(const data_t &subtrahend)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void xint::detail::data_t::subtract </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structxint_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#l00234">234</a> of file <a class="el" href="data__t_8cpp_source.html">data_t.cpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a288850fd62ef26302ce4767a45acd968"></a><!-- doxytag: member="xint::detail::data_t::zero" ref="a288850fd62ef26302ce4767a45acd968" args="(digit_t *p, size_t count)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void xint::detail::data_t::zero </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">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#l00174">174</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="a5c9382aec147090d7e7e2b5e972402a9"></a><!-- doxytag: member="xint::detail::data_t::digits" ref="a5c9382aec147090d7e7e2b5e972402a9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>* <a class="el" href="structxint_1_1detail_1_1data__t.html#a5c9382aec147090d7e7e2b5e972402a9">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#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="a3390530db8333b535f65d3cc01ff5236"></a><!-- doxytag: member="xint::detail::data_t::mAllocated" ref="a3390530db8333b535f65d3cc01ff5236" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t <a class="el" href="structxint_1_1detail_1_1data__t.html#a3390530db8333b535f65d3cc01ff5236">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#l00051">51</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="a73bc854b5f9ced6576b97d2cff8f3a5d"></a><!-- doxytag: member="xint::detail::data_t::mCopies" ref="a73bc854b5f9ced6576b97d2cff8f3a5d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int <a class="el" href="structxint_1_1detail_1_1data__t.html#a73bc854b5f9ced6576b97d2cff8f3a5d">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#l00059">59</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="afb2d8673fc5d99d2ea006cd0aa32b744"></a><!-- doxytag: member="xint::detail::data_t::mIsNegative" ref="afb2d8673fc5d99d2ea006cd0aa32b744" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="structxint_1_1detail_1_1data__t.html#afb2d8673fc5d99d2ea006cd0aa32b744">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#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="a599933d272e3592b2d0985ca7f7c72e2"></a><!-- doxytag: member="xint::detail::data_t::mLength" ref="a599933d272e3592b2d0985ca7f7c72e2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t <a class="el" href="structxint_1_1detail_1_1data__t.html#a599933d272e3592b2d0985ca7f7c72e2">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#l00051">51</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="a022f882ed0818612861b1a67881ae131"></a><!-- doxytag: member="xint::detail::data_t::mQuickDigits" ref="a022f882ed0818612861b1a67881ae131" args="[QuickDigits::count]" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a> <a class="el" href="structxint_1_1detail_1_1data__t.html#a022f882ed0818612861b1a67881ae131">xint::detail::data_t::mQuickDigits</a>[<a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#ac691b42c4404e59ae07f89146e722736">QuickDigits::count</a>]</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<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="a96c33fdc37dd3c774256f7ed20ce735c"></a><!-- doxytag: member="xint::detail::data_t::mStorage" ref="a96c33fdc37dd3c774256f7ed20ce735c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::vector<<a class="el" href="namespacexint_1_1detail.html#a8843fb7e364832d8d5983de28bdbcf34">digit_t</a>> <a class="el" href="structxint_1_1detail_1_1data__t.html#a96c33fdc37dd3c774256f7ed20ce735c">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#l00056">56</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1data__t_1_1_quick_digits-members.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1data__t_1_1_quick_digits-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::detail::data_t::QuickDigits Member List</h1>This is the complete list of members for <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html">xint::detail::data_t::QuickDigits</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#ac691b42c4404e59ae07f89146e722736">count</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html">xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#af5323a8fbfdfaa3cae371872ec865fc5">intbits</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html">xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#aeb7c43d282f871305e76936664cee25f">minimum</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html">xint::detail::data_t::QuickDigits</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#a789eadb40cb8c034823ecb5fb6094092">suggested</a></td><td><a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html">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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1data__t_1_1_quick_digits.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1data__t_1_1_quick_digits.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="namespacexint_1_1detail.html">detail</a>::<a class="el" href="structxint_1_1detail_1_1data__t.html">data_t</a>::<a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html">QuickDigits</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::detail::data_t::QuickDigits Struct Reference</h1><!-- doxytag: class="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="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#af5323a8fbfdfaa3cae371872ec865fc5">intbits</a> = std::numeric_limits<unsigned int>::<a class="el" href="structxint_1_1detail_1_1data__t.html#a5c9382aec147090d7e7e2b5e972402a9">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="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#a789eadb40cb8c034823ecb5fb6094092">suggested</a> = (2*<a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#af5323a8fbfdfaa3cae371872ec865fc5">intbits</a>/<a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">We want at least enough <a class="el" href="structxint_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="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#aeb7c43d282f871305e76936664cee25f">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="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#ac691b42c4404e59ae07f89146e722736">count</a> = (<a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#a789eadb40cb8c034823ecb5fb6094092">suggested</a> < <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#aeb7c43d282f871305e76936664cee25f">minimum</a> ? <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#aeb7c43d282f871305e76936664cee25f">minimum</a> : <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#a789eadb40cb8c034823ecb5fb6094092">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="structxint_1_1detail_1_1data__t.html#a9309667d3ac573346294e7b6e18c67ff">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#l00044">44</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="ac691b42c4404e59ae07f89146e722736"></a><!-- doxytag: member="xint::detail::data_t::QuickDigits::count" ref="ac691b42c4404e59ae07f89146e722736" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const size_t <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#ac691b42c4404e59ae07f89146e722736">xint::detail::data_t::QuickDigits::count</a> = (<a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#a789eadb40cb8c034823ecb5fb6094092">suggested</a> < <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#aeb7c43d282f871305e76936664cee25f">minimum</a> ? <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#aeb7c43d282f871305e76936664cee25f">minimum</a> : <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#a789eadb40cb8c034823ecb5fb6094092">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#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="af5323a8fbfdfaa3cae371872ec865fc5"></a><!-- doxytag: member="xint::detail::data_t::QuickDigits::intbits" ref="af5323a8fbfdfaa3cae371872ec865fc5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const size_t <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#af5323a8fbfdfaa3cae371872ec865fc5">xint::detail::data_t::QuickDigits::intbits</a> = std::numeric_limits<unsigned int>::<a class="el" href="structxint_1_1detail_1_1data__t.html#a5c9382aec147090d7e7e2b5e972402a9">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#l00045">45</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="aeb7c43d282f871305e76936664cee25f"></a><!-- doxytag: member="xint::detail::data_t::QuickDigits::minimum" ref="aeb7c43d282f871305e76936664cee25f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const size_t <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#aeb7c43d282f871305e76936664cee25f">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#l00047">47</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="a789eadb40cb8c034823ecb5fb6094092"></a><!-- doxytag: member="xint::detail::data_t::QuickDigits::suggested" ref="a789eadb40cb8c034823ecb5fb6094092" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const size_t <a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#a789eadb40cb8c034823ecb5fb6094092">xint::detail::data_t::QuickDigits::suggested</a> = (2*<a class="el" href="structxint_1_1detail_1_1data__t_1_1_quick_digits.html#af5323a8fbfdfaa3cae371872ec865fc5">intbits</a>/<a class="el" href="namespacexint_1_1detail.html#a9bd9e8d55061238d63913020d2721518">bits_per_digit</a>)<code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>We want at least enough <a class="el" href="structxint_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#l00046">46</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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1random__generator-members.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1random__generator-members.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.6.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>xint::detail::random_generator< T > Member List</h1>This is the complete list of members for <a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator< T ></a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1random__generator.html#aab9830c38c791b5c3ac0ef8328573bfd">dist_t</a> typedef</td><td><a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator< T ></a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1random__generator.html#a9a90a3050b2ff83d78ef8633deb5d42d">gen</a></td><td><a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator< T ></a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1random__generator.html#adbc88a70815fa4f72deb9bddaec86675">gen_t</a> typedef</td><td><a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator< T ></a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1random__generator.html#a68bbea81955a1424f474b49040bcb007">genobj</a></td><td><a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator< T ></a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1random__generator.html#ade9cefb3f061112ba1d3144aefd24f28">operator()</a>()</td><td><a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator< T ></a></td><td><code> [inline, virtual]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1random__generator.html#a76ce5051cedd7e6e25dc46ac1fb90098">random_generator</a>(T *g)</td><td><a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a> typedef</td><td><a class="el" href="structxint_1_1detail_1_1base__random__generator.html">xint::detail::base_random_generator</a></td><td></td></tr>
-</table></div>
-<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1random__generator.gif
==============================================================================
Binary file. No diff available.
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1random__generator.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1random__generator.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,195 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="namespacexint_1_1detail.html">detail</a>::<a class="el" href="structxint_1_1detail_1_1random__generator.html">random_generator</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::detail::random_generator< T > Struct Template Reference</h1><!-- doxytag: class="xint::detail::random_generator" --><!-- doxytag: inherits="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 xint::detail::random_generator< T >:</div>
-<div class="dynsection">
- <div class="center">
- <img src="structxint_1_1detail_1_1random__generator.gif" usemap="#xint::detail::random_generator< T >_map" alt=""/>
- <map id="xint::detail::random_generator< T >_map" name="xint::detail::random_generator< T >_map">
-<area href="structxint_1_1detail_1_1base__random__generator.html" alt="xint::detail::base_random_generator" shape="rect" coords="0,0,211,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="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1random__generator.html#aab9830c38c791b5c3ac0ef8328573bfd">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="structxint_1_1detail_1_1random__generator.html#aab9830c38c791b5c3ac0ef8328573bfd">dist_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1random__generator.html#adbc88a70815fa4f72deb9bddaec86675">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="structxint_1_1detail_1_1random__generator.html#a76ce5051cedd7e6e25dc46ac1fb90098">random_generator</a> (T *g)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1random__generator.html#ade9cefb3f061112ba1d3144aefd24f28">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="structxint_1_1detail_1_1random__generator.html#a68bbea81955a1424f474b49040bcb007">genobj</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structxint_1_1detail_1_1random__generator.html#adbc88a70815fa4f72deb9bddaec86675">gen_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structxint_1_1detail_1_1random__generator.html#a9a90a3050b2ff83d78ef8633deb5d42d">gen</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class T><br/>
- struct 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#l00086">86</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="aab9830c38c791b5c3ac0ef8328573bfd"></a><!-- doxytag: member="xint::detail::random_generator::dist_t" ref="aab9830c38c791b5c3ac0ef8328573bfd" 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="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a>> <a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator</a>< T >::<a class="el" href="structxint_1_1detail_1_1random__generator.html#aab9830c38c791b5c3ac0ef8328573bfd">dist_t</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<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>
-
-</div>
-</div>
-<a class="anchor" id="adbc88a70815fa4f72deb9bddaec86675"></a><!-- doxytag: member="xint::detail::random_generator::gen_t" ref="adbc88a70815fa4f72deb9bddaec86675" 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="structxint_1_1detail_1_1random__generator.html#aab9830c38c791b5c3ac0ef8328573bfd">dist_t</a>> <a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator</a>< T >::<a class="el" href="structxint_1_1detail_1_1random__generator.html#adbc88a70815fa4f72deb9bddaec86675">gen_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>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a76ce5051cedd7e6e25dc46ac1fb90098"></a><!-- doxytag: member="xint::detail::random_generator::random_generator" ref="a76ce5051cedd7e6e25dc46ac1fb90098" 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="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator</a>< T >::<a class="el" href="structxint_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#l00089">89</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="ade9cefb3f061112ba1d3144aefd24f28"></a><!-- doxytag: member="xint::detail::random_generator::operator()" ref="ade9cefb3f061112ba1d3144aefd24f28" 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="structxint_1_1detail_1_1base__random__generator.html#a0556d7f290cd236303b3f1031611cb3e">result_type</a> <a class="el" href="structxint_1_1detail_1_1random__generator.html">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="structxint_1_1detail_1_1base__random__generator.html#aa7f3b20e2fcccbf9d3a5c76e6c89b4b5">xint::detail::base_random_generator</a>.</p>
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00092">92</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="a9a90a3050b2ff83d78ef8633deb5d42d"></a><!-- doxytag: member="xint::detail::random_generator::gen" ref="a9a90a3050b2ff83d78ef8633deb5d42d" 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="structxint_1_1detail_1_1random__generator.html#adbc88a70815fa4f72deb9bddaec86675">gen_t</a> <a class="el" href="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator</a>< T >::<a class="el" href="structxint_1_1detail_1_1random__generator.html#a9a90a3050b2ff83d78ef8633deb5d42d">gen</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>
-<a class="anchor" id="a68bbea81955a1424f474b49040bcb007"></a><!-- doxytag: member="xint::detail::random_generator::genobj" ref="a68bbea81955a1424f474b49040bcb007" 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="structxint_1_1detail_1_1random__generator.html">xint::detail::random_generator</a>< T >::<a class="el" href="structxint_1_1detail_1_1random__generator.html#a68bbea81955a1424f474b49040bcb007">genobj</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<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/>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 Tue Apr 6 01:22:08 2010 for The 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>
Deleted: sandbox/xint/doc/structxint_1_1detail_1_1token.html
==============================================================================
--- sandbox/xint/doc/structxint_1_1detail_1_1token.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
+++ (empty file)
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>The Extended Integer (XInt) Library: 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="namespacexint.html">xint</a>::<a class="el" href="namespacexint_1_1detail.html">detail</a>::<a class="el" href="structxint_1_1detail_1_1token.html">token</a>
- </div>
-</div>
-<div class="contents">
-<h1>xint::detail::token Struct Reference</h1><!-- doxytag: class="xint::detail::token" -->
-<p>An empty struct, used in <a class="el" href="namespacexint.html#ad63045584f06221eb6a7581ad3091582" 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="namespacexint.html#ad63045584f06221eb6a7581ad3091582" title="Used for the exception-blocker.">xint::token</a>. </p>
-
-<p>Definition at line <a class="el" href="xint_8hpp_source.html#l00076">76</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 Tue Apr 6 01:22:08 2010 for The 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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -27,8 +27,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/testing_8dox.html
==============================================================================
--- sandbox/xint/doc/testing_8dox.html (original)
+++ sandbox/xint/doc/testing_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/threadsafe.html
==============================================================================
--- sandbox/xint/doc/threadsafe.html (original)
+++ sandbox/xint/doc/threadsafe.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -28,8 +28,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/threadsafe_8dox.html
==============================================================================
--- sandbox/xint/doc/threadsafe_8dox.html (original)
+++ sandbox/xint/doc/threadsafe_8dox.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,8 +29,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/todo.html
==============================================================================
--- sandbox/xint/doc/todo.html (original)
+++ sandbox/xint/doc/todo.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -24,7 +24,7 @@
<h1><a class="anchor" id="todo">Todo List </a></h1><p><a class="anchor" id="_todo000002"></a> </p>
<dl>
-<dt>Member <a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint::sqr</a> (const integer &n) </dt>
+<dt>Member <a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n) </dt>
<dd>Rewrite this to eliminate the inefficient addOverflow. </dd>
</dl>
<p><a class="anchor" id="_todo000001"></a> </p>
@@ -33,8 +33,8 @@
<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 Wed Apr 7 03:40:44 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/doc/xint_8hpp.html
==============================================================================
--- sandbox/xint/doc/xint_8hpp.html (original)
+++ sandbox/xint/doc/xint_8hpp.html 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,19 +29,6 @@
<h1>xint.hpp File Reference</h1>
<p>The main header file for the XInt library.
<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <limits></code><br/>
-<code>#include <memory></code><br/>
-<code>#include <cstddef></code><br/>
-<code>#include <iostream></code><br/>
-<code>#include <stdexcept></code><br/>
-<code>#include <boost/integer.hpp></code><br/>
-<code>#include <boost/cstdint.hpp></code><br/>
-<code>#include <boost/function.hpp></code><br/>
-<code>#include <boost/type_traits.hpp></code><br/>
-<code>#include <boost/static_assert.hpp></code><br/>
-<code>#include <boost/random/uniform_int.hpp></code><br/>
-<code>#include <boost/random/variate_generator.hpp></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
@@ -52,10 +39,12 @@
<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for <a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">random_generator</a>. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1random__generator.html">boost::xint::detail::random_generator< T ></a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support class for the random generator code. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1base__integer.html">boost::xint::core::base_integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The base class for the integer classes. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1core_1_1integer.html">boost::xint::core::integer</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The <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="mdescLeft"> </td><td class="mdescRight">The core integer class. More...<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1blockable_1_1integer.html">boost::xint::blockable::integer</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The blockable integer class. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1strong__random__generator.html">boost::xint::strong_random_generator</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">A convenience class for cryptographically-secure random numbers. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1xint_1_1invalid__base.html">boost::xint::invalid_base</a></td></tr>
@@ -80,7 +69,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -88,9 +77,14 @@
<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The items within this namespace are meant for internal use only. </p>
<br/></td></tr>
</p>
+<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html">boost::xint::blockable</a></td></tr>
+
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the blockable integer type, and functions to operate on it. </p>
+<br/></td></tr>
+</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
@@ -107,43 +101,103 @@
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8">boost::xint::detail::set_random_generator</a> (base_random_generator *obj)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Support function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a6486d7febde540f90921e9925d077534">boost::xint::detail::get_random</a> ()</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792">boost::xint::core::abs</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982">boost::xint::core::negate</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66">boost::xint::core::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355">boost::xint::core::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593">boost::xint::core::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530">boost::xint::core::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4">boost::xint::core::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe">boost::xint::core::sqr</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30">boost::xint::core::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116">boost::xint::core::pow2</a> (size_t e)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a">boost::xint::core::factorial</a> (size_t n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15">boost::xint::core::sqrt</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> integer. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
+</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">boost::xint::core::to</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an xint::integer to a built-in integer type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027">boost::xint::core::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca">boost::xint::core::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c">boost::xint::core::to_binary</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a binary representation of an integer, lowest byte first. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8">boost::xint::core::from_binary</a> (const std::string &str)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an integer. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c">boost::xint::core::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778">boost::xint::core::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849">boost::xint::core::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an integer to zero. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707">boost::xint::core::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an integer with a value of one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc">boost::xint::core::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an integer with a value of one. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f">boost::xint::core::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b">boost::xint::core::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385">boost::xint::core::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a">boost::xint::core::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an integer, in either direction. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc">boost::xint::core::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an integer by a specified number of bits. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253">boost::xint::core::shift_right</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an integer by a specified number of bits. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338">boost::xint::core::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a">boost::xint::core::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c">boost::xint::core::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4">boost::xint::core::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4">boost::xint::core::invmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451">boost::xint::core::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random integer with specific attributes. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89">boost::xint::core::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests an integer for primality. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e">boost::xint::core::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">boost::xint::core::operator!</a> (const integer &num1)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">boost::xint::core::operator<</a> (const integer &num1, const integer &num2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">boost::xint::core::operator></a> (const integer &num1, const integer &num2)</td></tr>
@@ -161,166 +215,142 @@
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">boost::xint::core::operator&</a> (const integer &n1, const integer &n2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">boost::xint::core::operator|</a> (const integer &n1, const integer &n2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">boost::xint::core::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f">boost::xint::core::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two integer objects. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028">boost::xint::core::log2</a> (const integer &n)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an integer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25">boost::xint::core::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6">boost::xint::core::lcm</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="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>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">boost::xint::exceptions_allowed</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Query whether exceptions are currently allowed or blocked. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">token </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint::block_exceptions</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporarily prevent the library from throwing blockable exceptions. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">token </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint::allow_exceptions</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Temprarily counteract an <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a> token to allow all exceptions. <br/></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Mathematical primitives</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp196dd2a5f50860e057df961a96d84ea3"></a> </p>
-<br/><br/></div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a19a0491b2825f010e9dd66ca50ab5672">boost::xint::abs</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the absolute value of an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a84190f7b286de191e8026e440f104731">boost::xint::negate</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the additive inverse of an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a5f82fa6b23e9af01292440248b89210d">boost::xint::add</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the sum of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a86eb0099596fe66bd46be244323f44e5">boost::xint::subtract</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the difference between two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9e0d6ad947fa3e979ed6e26d7e81ab7f">boost::xint::multiply</a> (const integer &n, const integer &by)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4892543bb8ccfa8acb188a63a3d4723b">boost::xint::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0fff3b235a18c0b3243a1ccc01a68f23">boost::xint::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate how many <code>dividends</code> would fit into <code>divisor</code>, with the remainder. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">boost::xint::blockable::abs</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">boost::xint::blockable::negate</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">boost::xint::blockable::add</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">boost::xint::blockable::subtract</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">boost::xint::blockable::multiply</a> (const integer &n, const integer &by)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">boost::xint::blockable::divide</a> (const integer &dividend, const integer &divisor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::pair< integer, integer > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">boost::xint::blockable::divide_r</a> (const integer &d1, const integer &d2)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Powers and roots</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp928a8cb047602f789d7433e262ed4560"></a> </p>
-<br/><br/></div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afbba1eeb86e4e7610a75afbb89d594e3">boost::xint::sqr</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>2</sup>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aa7d7b30f587c98ad31b8d421b8813c61">boost::xint::pow</a> (const integer &n, const integer &e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of n<sup>e</sup>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af710e4b39cfa66096c202f17d12cc7b7">boost::xint::pow2</a> (size_t e)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of 2<sup>e</sup>. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a942e346f6e6d069dc19c28e7e56634ab">boost::xint::factorial</a> (size_t n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the value of <code>n!</code> <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#afdf79cc57e434b9c7f4cb3b6bd68dbd6">boost::xint::sqrt</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the square root of <code>an</code> <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">boost::xint::blockable::sqr</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">boost::xint::blockable::pow</a> (const integer &n, const integer &e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">boost::xint::blockable::pow2</a> (size_t e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">boost::xint::blockable::factorial</a> (size_t n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">boost::xint::blockable::sqrt</a> (const integer &n)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Conversion functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9c2e8a06d85d2c9b83b5a0d27e85d535"></a> </p>
-<br/><br/></div></td></tr>
+</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae90546b0cb6cf2f27fc5ce65bb43a21e">boost::xint::to</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Efficiently converts from an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">xint::integer</a> to a built-in integer type. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac0454fdc47e70a493c7bf5d92dda33d4">boost::xint::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string representation of the specified <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af263105e57d48eff5fe14d4d03ca10e1">boost::xint::from_string</a> (const std::string &str, size_t base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a string into an <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">boost::xint::to_binary</a> (const integer &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="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a58aa7dc532f0d8a1557c9ec8f512602e">boost::xint::from_binary</a> (const std::string &str)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a binary representation of a number into an <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a>. <br/></td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">boost::xint::blockable::to</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">boost::xint::blockable::to_string</a> (const integer &n, size_t base, bool uppercase)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">boost::xint::blockable::from_string</a> (const std::string &str, size_t base)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">boost::xint::blockable::to_binary</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">boost::xint::blockable::from_binary</a> (const std::string &str)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Bit-manipulation functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpcc775c18f98f26f2b84ac7a2558636f2"></a> </p>
-<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">boost::xint::getbit</a> (const integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Queries the value of a particular bit in an <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">boost::xint::setbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an <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">boost::xint::clearbit</a> (integer &n, size_t bit)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a specific bit in an <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">boost::xint::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the lowest bit in an <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">boost::xint::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtains the index of the highest bit in an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab828c0be1559b60537b959ef75092fb2">boost::xint::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>AND</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab38ce0764a4b6433e11e30efa2175fec">boost::xint::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>OR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6afd5af4550b698f6a7065f457fcb0a1">boost::xint::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Combine two integers using a bitwise <code>XOR</code> operation. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaed048f3dc3a442152ebffa3f721d014">boost::xint::shift</a> (const integer &n, int byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit-shift an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae22c3492ecf08370a9a972c8d6fb8e96">boost::xint::shift_left</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Left-shift an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aca7453fa9e276ebefacc9827b55f69d2">boost::xint::shift_right</a> (const integer &n, size_t byBits)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Right-shift an <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>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">boost::xint::blockable::getbit</a> (const integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">boost::xint::blockable::setbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">boost::xint::blockable::clearbit</a> (integer &n, size_t bit)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">boost::xint::blockable::lowestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">boost::xint::blockable::highestbit</a> (const integer &n, size_t valueIfZero)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">boost::xint::blockable::bitwise_and</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">boost::xint::blockable::bitwise_or</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">boost::xint::blockable::bitwise_xor</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">boost::xint::blockable::shift</a> (const integer &n, int byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">boost::xint::blockable::shift_left</a> (const integer &n, size_t byBits)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">boost::xint::blockable::shift_right</a> (const integer &n, size_t byBits)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Modular math functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpbf63e6a6a1029bb25b7aa51052b38655"></a>A common reason to use a large-integer library is to implement public-key encryption, and the algorithms for such encryption often use modular math. </p>
-<br/><br/></div></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9b8c31b64eb9700beea8b95edec31a73">boost::xint::mod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the remainder after dividing a number by another. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac9af74aa79d9cc7f51c57cc7707824ba">boost::xint::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#adb9a9cb117e7346a3b56c369cd438b0e">boost::xint::sqrmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular product of squaring an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a35e7556e9f2d8fb944dbf732ed3f96cd">boost::xint::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the result of <code>n<sup>e</sup></code> % <code>m</code>, keeping the intermediate results (relatively) small. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1e2477157ea768d8c57fac1c31a8f7ca">boost::xint::invmod</a> (const integer &n, const integer &m)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the modular inverse of a number in a modulus, if there is one. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">boost::xint::blockable::mod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">boost::xint::blockable::mulmod</a> (const integer &n, const integer &by, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">boost::xint::blockable::sqrmod</a> (const integer &n, const integer &m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">boost::xint::blockable::powmod</a> (const integer &n, const integer &e, const integer &m, bool noMontgomery)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">boost::xint::blockable::invmod</a> (const integer &n, const integer &m)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
-<br/><br/></div></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint::set_random_generator</a> (T *gen)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac8d879e19a6608b21184236e00806be5">boost::xint::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a random <a class="el" href="classboost_1_1xint_1_1integer.html" title="The extended integer class.">integer</a> with specific attributes. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">boost::xint::blockable::random_by_size</a> (size_t bits, bool high_bit_on, bool low_bit_on, bool can_be_negative)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Prime number functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp540e8e12721acbe497d2b9b53ecc76ec"></a> </p>
-<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">boost::xint::is_prime</a> (const integer &n, callback_t 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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#aaf58d56e1a47ac55e0aa97a55e6fb2c9">boost::xint::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a randomly-generated prime number of a particular bit-size. <br/></td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">boost::xint::blockable::is_prime</a> (const integer &n, callback_t callback)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">boost::xint::blockable::random_prime</a> (size_t size_in_bits, callback_t callback)</td></tr>
<tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb3c5827f54218753bb2c3338236446c2"></a> These act exactly the same as for the built-in integer types. </p>
-<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">boost::xint::operator!</a> (const integer &num1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af845afe18e9b1326d630e5c0696e679d">boost::xint::operator<</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab09672bca82a7f4fbdca4443492210bc">boost::xint::operator></a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a7749bff2e150c55649324ba9797aa6d0">boost::xint::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a1ace7bde7533ff9d8a3f38978e7bb046">boost::xint::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a66b558cce023df7b3e10ee22dfe653d0">boost::xint::operator==</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac5d5cb8db57fd0247aa4e36d9b25c492">boost::xint::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#af0e2812ac56a264cd9a86243306ec0fb">boost::xint::operator+</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a92ee4f1138215a36f4374a356fa5a359">boost::xint::operator-</a> (const integer &a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0f6171689ef68ff6672e43a1e24ea494">boost::xint::operator+</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac16aa971521ae015a62ec015f1fe56d0">boost::xint::operator-</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ae3770c0e356d50b5f3e2be573e6100cd">boost::xint::operator*</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9a2859e7b5e532eaa0cc51aba4f958c2">boost::xint::operator/</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a115e84b56b4e5e00d0b2b5c8a407ef97">boost::xint::operator%</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab054d123a003a31c06bac92a1f325805">boost::xint::operator&</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a4896e1fc3c8d0adb4911cf5b78304f49">boost::xint::operator|</a> (const integer &n1, const integer &n2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a9524e5e34757cb10a146012bc4192643">boost::xint::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">boost::xint::blockable::operator!</a> (const integer &num1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">boost::xint::blockable::operator<</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">boost::xint::blockable::operator></a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">boost::xint::blockable::operator<=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">boost::xint::blockable::operator>=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">boost::xint::blockable::operator==</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">boost::xint::blockable::operator!=</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const integer & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">boost::xint::blockable::operator+</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">boost::xint::blockable::operator-</a> (const integer &a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a43c166834c838c500713c571ff49ae7c">boost::xint::blockable::operator+</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#adde448bbc07e4a347dc78c74fcc8ddbf">boost::xint::blockable::operator-</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">boost::xint::blockable::operator*</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">boost::xint::blockable::operator/</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">boost::xint::blockable::operator%</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">boost::xint::blockable::operator&</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">boost::xint::blockable::operator|</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">boost::xint::blockable::operator^</a> (const integer &n1, const integer &n2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">boost::xint::blockable::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">boost::xint::blockable::log2</a> (const integer &n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">boost::xint::blockable::gcd</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">boost::xint::blockable::lcm</a> (const integer &num1, const integer &num2)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Exception-blocking and -allowing functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6b736a9df3b9afabec548528235f28b6"></a> See the <a class="el" href="exceptions.html">exception-blocking page</a> for details on these functions and how to use them. </p>
+</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a">boost::xint::exceptions_allowed</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Query whether exceptions are currently allowed or blocked. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">token </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad">boost::xint::block_exceptions</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporarily prevent the library from throwing blockable exceptions. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">token </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f">boost::xint::allow_exceptions</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Temprarily counteract an <a class="el" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">xint::block_exceptions</a> token to allow all exceptions. <br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Random number functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdd4713a71c208a173c1f2436d4e32ff7"></a> </p>
+</div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">boost::xint::set_random_generator</a> (T *gen)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change the random generator that the library uses. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp458f92801f3edfaf2e30b1f530c324e2"></a> </p>
-<br/><br/></div></td></tr>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd">boost::xint::opt_secure_mode</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with <a class="el" href="securemode.html">Secure Mode </a> enabled. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379">boost::xint::opt_thread_safe</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells whether the library was compiled with the <a class="el" href="threadsafe.html">Thread Safe Operation option </a> enabled. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a23f712f01d6589687d2984b1c5efea8b">boost::xint::compare</a> (const integer &b1, const integer &b2, bool ignoresign)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two <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">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0cd277cd7a80cda764f889781f0140cd">boost::xint::log2</a> (const integer &n)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log<sub>2</sub> value of an <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">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#ab551ac5968fdbcc639318b6f294da2cd">boost::xint::gcd</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Greatest Common Denominator of two integers. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a0096ae57d50e4fe8b5413ea7a4e60495">boost::xint::lcm</a> (const integer &num1, const integer &num2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Least Common Multiple of two integers. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
-<br/><br/></div></td></tr>
+</div></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">boost::xint::core::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">boost::xint::core::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Stream input/output functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpd9927783c44c1aad288df0ab8bfa9ddf"></a> </p>
+</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a8d1a90f08d8ad3547627f2c2590ab20d">boost::xint::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">boost::xint::blockable::operator<<</a> (std::basic_ostream< charT, traits > &out, const integer &n)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename charT , typename traits > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">std::basic_istream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a3a5967ac54c1a269f0b4ed555391ca4f">boost::xint::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">boost::xint::blockable::operator>></a> (std::basic_istream< charT, traits > &in, integer &n)</td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978">boost::xint::detail::nan_text</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds the text representation of the Not-a-Number value. <br/></td></tr>
@@ -328,7 +358,7 @@
<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">boost::xint::autobase</a> = (std::numeric_limits<size_t>::max)()</td></tr>
<tr><td colspan="2"><div class="groupHeader">Some constants used by the library.</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpe1f42a3ea000e0468230fb7abe73e7b1"></a> </p>
-<br/><br/></div></td></tr>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a7502e1dd4c20a5ad799c6414b55e6818">boost::xint::detail::bits_per_digit</a> = std::numeric_limits<digit_t>::digits</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#ab7d9f30b8cad63e2e82998aa2e8d0fcd">boost::xint::detail::digit_hibit</a> = (digit_t(1) << (bits_per_digit-1))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const doubledigit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html#a33ea157e34285642e6924bbffffc4367">boost::xint::detail::doubledigit_hibit</a> = (doubledigit_t(1) << (bits_per_digit*2-1))</td></tr>
@@ -341,8 +371,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -107,630 +107,614 @@
<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_1integer.html" title="The extended integer class.">integer</a>;
-<a name="l00127"></a>00127
-<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_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="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_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="l00126"></a>00126 <span class="keyword">namespace </span>blockable {
+<a name="l00127"></a>00127 <span class="keyword">class </span>integer;
+<a name="l00128"></a>00128 } <span class="comment">// namespace blockable</span>
+<a name="l00129"></a>00129
+<a name="l00136"></a>00136 <span class="keyword">namespace </span>core {
+<a name="l00137"></a>00137
+<a name="l00139"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html">00139</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a> {
+<a name="l00140"></a>00140 <span class="keyword">public</span>:
+<a name="l00141"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">00141</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a41cf20da11883ce0547e2391b9a51a80">base_integer</a>(): data(0) { }
+<a name="l00142"></a>00142 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a25b1de1f91bd026add3b07043b0eefcd">~base_integer</a>();
+<a name="l00143"></a>00143
+<a name="l00145"></a>00145
+<a name="l00146"></a><a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">00146</a> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a28bd6c6ce95b271d6f75d82041515df2">_get_data</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }
+<a name="l00147"></a>00147 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span>;
+<a name="l00148"></a>00148 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(<span class="keywordtype">size_t</span> index, <span class="keywordtype">bool</span>) <span class="keyword">const</span>;
+<a name="l00149"></a>00149 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>() <span class="keyword">const</span>;
+<a name="l00150"></a>00150 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#aa3d3f1dafb98685d92dec931dd0e3671">_is_unique</a>() <span class="keyword">const</span>;
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">protected</span>:
+<a name="l00154"></a>00154 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *new_data);
+<a name="l00155"></a>00155 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a>& copy);
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="keyword">private</span>:
+<a name="l00158"></a>00158 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">detail::data_t</a> *data;
+<a name="l00159"></a>00159 };
+<a name="l00160"></a>00160
+<a name="l00173"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html">00173</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>: <span class="keyword">public</span> core::<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html" title="The base class for the integer classes.">base_integer</a> {
+<a name="l00174"></a>00174 <span class="keyword">public</span>:
+<a name="l00175"></a>00175
+<a name="l00178"></a>00178 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>();
+<a name="l00179"></a>00179 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00180"></a>00180 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">blockable::integer</a>& b);
+<a name="l00181"></a>00181 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00182"></a>00182 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00183"></a>00183 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00184"></a>00184 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
+<a name="l00185"></a>00185 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00186"></a>00186 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00187"></a>00187 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
<a name="l00189"></a>00189
-<a name="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="l00198"></a>00198 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a25202c72bffb37f2f7342633f0435fed">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c);
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afa137efa8b9fde22a3758ba020b819b7">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00201"></a>00201 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aab4918c70e19e08e650e827b2c89e83f">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00202"></a>00202 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6eb52f1f84758e968ae7ae684436a9bb">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00203"></a>00203 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a62d24cd0e4f033f7e44d0eadcaffec21">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00204"></a>00204 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a182855c5d54a78bad4fde3e807d2cce1">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& b);
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a>();
+<a name="l00207"></a>00207 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a>();
+<a name="l00208"></a>00208 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aa7e03bb3c9fe87c3205759d4ade6f714">operator++</a>(<span class="keywordtype">int</span>);
+<a name="l00209"></a>00209 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#af66a56ff7fcc62ed0d82a7f3205951fe">operator--</a>(<span class="keywordtype">int</span>);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a00b096912c273f06aa0c0ea1284573d3">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00212"></a>00212 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6778bfda930127b6f203cbb7967373b5">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00213"></a>00213 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a6c572b5a2976a88f0b214b0732a6d689">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00214"></a>00214 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a659279c9657ce38ef02c7290025cff5c">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>) <span class="keyword">const</span>;
+<a name="l00215"></a>00215 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a792aecee632de9b1a8822bc414bd2c64">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
+<a name="l00216"></a>00216 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afde4e3672f01fd2fd4bf6091ca4e0547">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00217"></a>00217 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#aac72a9392108a0f684e7f502bef3d8fe">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
<a name="l00219"></a>00219
-<a name="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="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 <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="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="l00227"></a>00227 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a5c4fdf4a0fd9cefd3f72b38413e32e9a">zero</a>();
+<a name="l00228"></a>00228 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afcf74b546cda2690025c75325365a0fe">one</a>();
+<a name="l00230"></a>00230
+<a name="l00233"></a>00233 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a9eacfa2b1eea176019597ea25023e40e" title="Tests the lowest bit of *this to determine oddness.">odd</a>() <span class="keyword">const</span>;
+<a name="l00234"></a>00234 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a61bef2a0575b9f331ca32686e489c9d3" title="Tests the lowest bit of *this to determine evenness.">even</a>() <span class="keyword">const</span>;
+<a name="l00235"></a>00235 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() <span class="keyword">const</span>;
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a615f128085bba5e711c24be546449f43" title="Tells you roughly how large an integer is.">hex_digits</a>() <span class="keyword">const</span>;
+<a name="l00239"></a>00239
+<a name="l00245"></a>00245 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keywordtype">bool</span> negative);
+<a name="l00246"></a>00246 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a1f1b1c19c7c3ec22972124abdbd08cc1">_make_unique</a>();
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="keyword">protected</span>:
+<a name="l00250"></a>00250 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0);
+<a name="l00251"></a>00251 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &c);
+<a name="l00252"></a>00252 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t n);
+<a name="l00253"></a>00253 };
+<a name="l00254"></a>00254
+<a name="l00257"></a>00257 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00258"></a>00258 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0103381c7bca2e5a904ad3b75904e982" title="Return the additive inverse of an integer.">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00259"></a>00259 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa8ac1151e65f51b3dca51e827c29af66" title="Calculate the sum of two integers.">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& addend);
+<a name="l00260"></a>00260 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa1d93a8d3a437f7b9df70ea00d48f355" title="Calculate the difference between two integers.">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& subtrahend);
+<a name="l00261"></a>00261 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a1a4424b4d8b045a3484463e588368593" title="Calculate the product of two integers.">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& multiplicand);
+<a name="l00262"></a>00262 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad09c66a61457feb23505d26adc116530" title="Calculate how many dividends would fit into divisor.">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& divisor);
+<a name="l00263"></a>00263 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a731b3943a2e1bc95ec34a32291754ad4" title="Calculate how many dividends would fit into divisor, with the remainder.">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&
+<a name="l00264"></a>00264 divisor);
+<a name="l00266"></a>00266
+<a name="l00269"></a>00269 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9bd005ab3992dc51d6c95fdee987f2fe" title="Calculate the value of n2">sqr</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00270"></a>00270 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4bf3bb563c2a9a3c1dd98f8975253a30" title="Calculate the value of ne">pow</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& exponent);
+<a name="l00271"></a>00271 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a72afdedb16eff4404641511681e08116" title="Calculate the value of 2e">pow2</a>(<span class="keywordtype">size_t</span> exponent);
+<a name="l00272"></a>00272 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab82432c3d99638bb2f56304cf44a405a" title="Calculate the value of n! ">factorial</a>(<span class="keywordtype">size_t</span> n);
+<a name="l00273"></a>00273 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9ebf35bf53baa1eddf9a84dc719a5d15" title="Calculate the square root of an integer.">sqrt</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00275"></a>00275
+<a name="l00278"></a>00278 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00279"></a>00279 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
+<a name="l00280"></a>00280 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00281"></a>00281 std::string <a class="code" href="namespaceboost_1_1xint_1_1core.html#a32564e3da6e4e65ae8b937614cdca95c" title="Creates a binary representation of an integer, lowest byte first.">to_binary</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00282"></a>00282 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a626c8b1f3bd3f6b03a18412c8419bad8" title="Converts a binary representation of a number into an integer.">from_binary</a>(<span class="keyword">const</span> std::string& s);
+<a name="l00284"></a>00284
+<a name="l00287"></a>00287 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a06f4b3f75bb5e648e865f20990f8154c" title="Queries the value of a particular bit in an integer.">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00288"></a>00288 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aae966bbb23d33801b34108f4490b0778" title="Sets a specific bit in an integer to one.">setbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00289"></a>00289 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd43d348da182e32e931743d1837f849" title="Sets a specific bit in an integer to zero.">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00290"></a>00290 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#afbb649428a445bd8a6e7d9bcfab69707" title="Obtains the index of the lowest bit in an integer with a value of one.">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00291"></a>00291 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2a32641fadc89dc7385b2f1a0af862dc" title="Obtains the index of the highest bit in an integer with a value of one.">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00292"></a>00292 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aab6badbf5997e33714d0dbe54c16375f" title="Combine two integers using a bitwise AND operation.">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00293"></a>00293 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a04384ebf492038c4ba83af9736412c9b" title="Combine two integers using a bitwise OR operation.">bitwise_or</a> (<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00294"></a>00294 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a86446e5e38a977b68f041dfa4b82a385" title="Combine two integers using a bitwise XOR operation.">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00295"></a>00295 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab5d1310559b3ac9857e3475889b06b1a" title="Bit-shift an integer, in either direction.">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits);
+<a name="l00296"></a>00296 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a51a385d6a7e71b555b152de0f40cd9fc" title="Left-shift an integer by a specified number of bits.">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00297"></a>00297 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ac456d45328b682c029af422923298253" title="Right-shift an integer by a specified number of bits.">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00299"></a>00299
<a name="l00305"></a>00305
-<a name="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="l00306"></a>00306 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae02fe53b2dc0340dcd66c44e689e7338" title="Get the remainder after dividing a number by another.">mod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modBy);
+<a name="l00307"></a>00307 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a46494daacb938b204aba5a5a3d957e3a" title="Get the modular product of two integers.">mulmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& by, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modulus);
+<a name="l00308"></a>00308 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abaf712bcc261145845c49e2e07a8c23c" title="Get the modular product of squaring an integer.">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modulus);
+<a name="l00309"></a>00309 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a6d465ee56d6ba0263ac4648bd8b68bc4" title="Get the result of ne % m, keeping the intermediate results (relatively) small.">powmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& exponent, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>&
+<a name="l00310"></a>00310 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
+<a name="l00311"></a>00311 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a4cbae3e54ac73cfb3573c4e4f316abe4" title="Get the modular inverse of a number in a modulus, if there is one.">invmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& modulus);
+<a name="l00313"></a>00313
+<a name="l00316"></a>00316 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ace96723bc59d89473ab9c750330d4451" title="Generates a random integer with specific attributes.">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
+<a name="l00317"></a>00317 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
<a name="l00319"></a>00319
-<a name="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="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="l00322"></a>00322 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a79626b71d9ebb21c2c07e105c8b1ad89" title="Tests an integer for primality.">is_prime</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00323"></a>00323 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5f117503768fded4de58ded6d0c5513e" title="Generate a randomly-generated prime number of a particular bit-size.">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00325"></a>00325
+<a name="l00330"></a>00330
+<a name="l00331"></a>00331 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa86f6238d476cfdb8f534a8cb289a7e5">operator!</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1);
+<a name="l00332"></a>00332 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad66c54269633ec8a0609bafecad430dc">operator<</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00333"></a>00333 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ae4725524123f4ba5544d47cce68606fb">operator></a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00334"></a>00334 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a5548f1bea201f1de80fc3d847d58d8d7">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00335"></a>00335 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#acd8e6b8505268237b7fe55bea9a23b2e">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00336"></a>00336 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab91cfea31de4287970ae678b4a951a13">operator==</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00337"></a>00337 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a422409aa6897f3169f9be22fba746466">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00338"></a>00338
+<a name="l00339"></a>00339 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& a);
+<a name="l00340"></a>00340 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& a);
+<a name="l00341"></a>00341 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a0e26ec58adc380b930eb3c47723a7d6a">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00342"></a>00342 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a94dda733eac933cee9a5e307ba030b88">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00343"></a>00343 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abc738f0d18724bbdda6d956dabd77b0c">operator*</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00344"></a>00344 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a9704cdf0b9adc7cca4118b2e20737a65">operator/</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00345"></a>00345 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#abd7c9499bde867d7b8c7eae5b08bd54d">operator%</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00346"></a>00346 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3913ac27d582f4f5c162cd2c763b91a1">operator&</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00347"></a>00347 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a3124de335da66bcf5a4141dccc1a9458">operator|</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00348"></a>00348 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2c93fc2437215ef1e54c67276bfde742">operator^</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n2);
+<a name="l00350"></a>00350
+<a name="l00353"></a>00353 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#a37bbe9d9165afb0a3f20df233a9db07f" title="Compare two integer objects.">compare</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
+<a name="l00354"></a>00354 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1core.html#aa3924902931d74fe0a7d2c6daf9ab028" title="Get the log2 value of an integer.">log2</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n);
+<a name="l00355"></a>00355 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ab914d21c7168f03fc844746be068bf25" title="Calculate the Greatest Common Denominator of two integers.">gcd</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num2);
+<a name="l00356"></a>00356 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1core.html#ad8783802f3252c9c3143eaca76acd9a6" title="Calculate the Least Common Multiple of two integers.">lcm</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& num2);
<a name="l00358"></a>00358
+<a name="l00359"></a>00359 } <span class="comment">// namespace core</span>
<a name="l00360"></a>00360
-<a name="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="l00370"></a>00370 <span class="keyword">namespace </span>blockable {
<a name="l00371"></a>00371
-<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="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="l00373"></a>00373 <span class="comment">// The blockable integer class</span>
+<a name="l00374"></a>00374
+<a name="l00387"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html">00387</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>: <span class="keyword">public</span> core::base_integer {
+<a name="l00388"></a>00388 <span class="keyword">public</span>:
+<a name="l00389"></a>00389
+<a name="l00392"></a>00392 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>();
+<a name="l00393"></a>00393 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
+<a name="l00394"></a>00394 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>& b);
+<a name="l00395"></a>00395 <span class="keyword">explicit</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00396"></a>00396 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00397"></a>00397 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00398"></a>00398 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type* = 0);
+<a name="l00399"></a>00399 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00400"></a>00400 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type* = 0,
+<a name="l00401"></a>00401 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type* = 0);
+<a name="l00403"></a>00403
+<a name="l00412"></a>00412 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a90efe3e62f20a587d2304d7df6e91c63">operator=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &c);
+<a name="l00413"></a>00413
+<a name="l00414"></a>00414 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af6ee01d09f0dcb51fa6c45437e18de7e">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
+<a name="l00415"></a>00415 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9e89bbb863f344227e72585634f4c695">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
+<a name="l00416"></a>00416 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aedc9d1a4591b66b96f2074a944990d8d">operator*=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
+<a name="l00417"></a>00417 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ac25f98f5fbf12160ea9bfd6acb867f16">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
+<a name="l00418"></a>00418 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a3c95f3fe54f21728cce0363283e63582">operator%=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& b);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">operator++</a>();
+<a name="l00421"></a>00421 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">operator--</a>();
+<a name="l00422"></a>00422 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aaf8089c12fbf456ba44414031975904e">operator++</a>(<span class="keywordtype">int</span>);
+<a name="l00423"></a>00423 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aac66433b51dba8fa64e555fbe753195c">operator--</a>(<span class="keywordtype">int</span>);
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#acc4f122a18cb417de1e04dbc011cd2ab">operator&=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00426"></a>00426 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#af8a5624f5fe99930cf27b13628190717">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00427"></a>00427 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a2e63df76366b1ad1bd0246eebe24e3ef">operator^=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00428"></a>00428 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae21b3b4e8189fd051efa649f00a3dce3">operator<<</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>) <span class="keyword">const</span>;
+<a name="l00429"></a>00429 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a479d19cff13ff3d592f9e543f14c1254">operator>></a>(<span class="keywordtype">size_t</span> shift) <span class="keyword">const</span>;
+<a name="l00430"></a>00430 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#afd3d92f33f89c51575062f4d87238380">operator<<=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00431"></a>00431 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a31216f4689f95bf82677faa3b43ad458">operator>>=</a>(<span class="keywordtype">size_t</span> shift);
+<a name="l00433"></a>00433
+<a name="l00436"></a>00436 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aeeb0effdaf500fabdabde386c6d71ecf">odd</a>() <span class="keyword">const</span>;
+<a name="l00437"></a>00437 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa4a34e862279bdcabcb10aa3f7015751">even</a>() <span class="keyword">const</span>;
+<a name="l00438"></a>00438 <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#addba2da8dc24e5e137dc759b5ec3c211">sign</a>() <span class="keyword">const</span>;
+<a name="l00439"></a>00439 <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>() <span class="keyword">const</span>;
+<a name="l00440"></a>00440
+<a name="l00441"></a>00441 <span class="keywordtype">size_t</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ab59ab2bab8ee2620f82328e43d8f8493">hex_digits</a>() <span class="keyword">const</span>;
+<a name="l00443"></a>00443
+<a name="l00451"></a>00451 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a6f7309f1c9710a8167796c6954e690fd">zero</a>();
+<a name="l00452"></a>00452 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ad1c34452538608bee270c1971f8a0bd5">one</a>();
+<a name="l00453"></a>00453 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">nan</a>();
+<a name="l00455"></a>00455
+<a name="l00461"></a>00461 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a7ebbf3b74b5c3307f550efa29180b7f6">_set_negative</a>(<span class="keywordtype">bool</span> negative);
+<a name="l00462"></a>00462 <span class="keywordtype">void</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a93aebe2dfcc921ae4959811399b1643e">_make_unique</a>();
+<a name="l00464"></a>00464
+<a name="l00465"></a>00465 <span class="keyword">private</span>:
+<a name="l00466"></a>00466 <span class="keywordtype">void</span> _init(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a> init=0);
+<a name="l00467"></a>00467 <span class="keywordtype">void</span> _init(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &c);
+<a name="l00468"></a>00468 <span class="keywordtype">void</span> _init(boost::uintmax_t n);
+<a name="l00469"></a>00469 };
+<a name="l00470"></a>00470
+<a name="l00473"></a>00473 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a60245c96acca4efe2301939acb7ca798">abs</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00474"></a>00474 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a99e18d64a42f9a24069cbbe91e1dd035">negate</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00475"></a>00475 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ada3b973466beb1c2b2e65718606c1cc8">add</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& addend);
+<a name="l00476"></a>00476 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a56cc023cafb9e92223c74dc780175bc2">subtract</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& subtrahend);
+<a name="l00477"></a>00477 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9f79cef4aca96d97b00f7cde90d7eabd">multiply</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& multiplicand);
+<a name="l00478"></a>00478 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1a69ea437aacb48b0ce224a97eaf87f3">divide</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& divisor);
+<a name="l00479"></a>00479 std::pair<integer, integer> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a022fd3c44ddeb39a78ad3202c51ade8a">divide_r</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& dividend, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>&
+<a name="l00480"></a>00480 divisor);
+<a name="l00482"></a>00482
+<a name="l00484"></a>00484
+<a name="l00487"></a>00487 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30c49fd181989bba7260f99d695b66e5">sqr</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00488"></a>00488 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab554163bc27a115dbe5310dfc6f515e3">pow</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& exponent);
+<a name="l00489"></a>00489 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f16c8a722f5a89748b154dc530ecff5">pow2</a>(<span class="keywordtype">size_t</span> exponent);
+<a name="l00490"></a>00490 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a48bbd62060daaf179abb8664de24c0c4">factorial</a>(<span class="keywordtype">size_t</span> n);
+<a name="l00491"></a>00491 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa2bb7a673045f8a9b517e5903f9c10e5">sqrt</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00493"></a>00493
+<a name="l00495"></a>00495
+<a name="l00498"></a>00498 <span class="keyword">template</span> <<span class="keyword">typename</span> T> T <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00499"></a>00499 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a242028d310c35165b714a20e068a4e61">to_string</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> base=10, <span class="keywordtype">bool</span> upperCase=<span class="keyword">false</span>);
+<a name="l00500"></a>00500 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a90aa8c790fe7241999d14b4fc79e4a00">from_string</a>(<span class="keyword">const</span> std::string& str, <span class="keywordtype">size_t</span> base=10);
+<a name="l00501"></a>00501 std::string <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afef5469852d10aefa70e1c69b4433cc9">to_binary</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00502"></a>00502 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2d59a617f6374118f622d37df7e8593b">from_binary</a>(<span class="keyword">const</span> std::string& s);
+<a name="l00504"></a>00504
<a name="l00506"></a>00506
-<a name="l00509"></a>00509 <span class="keywordtype">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="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="l00509"></a>00509 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afc792f94cf335a3e3dbdf09caae2937d">getbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00510"></a>00510 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad121a71d8a161b9eaea24fcecf378393">setbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00511"></a>00511 <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a1731eab251e1601451c3a7c6635c2194">clearbit</a>(<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> bit);
+<a name="l00512"></a>00512 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a9e7a17fbb2cd20db9d1a3431ea6ecdf5">lowestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00513"></a>00513 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3bf3a07f92c73e4fbd30452e057522f5">highestbit</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> valueIfZero=0);
+<a name="l00514"></a>00514 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a42ded343a54837d6f0ac84399227ac8e">bitwise_and</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00515"></a>00515 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30e1dfd31902219bf24cc843c543469f">bitwise_or</a> (<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00516"></a>00516 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad3c95f6466b3c77d940838331f9d0c3c">bitwise_xor</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00517"></a>00517 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac096f3f80627f005fd7b4bc69af9f7dd">shift</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">int</span> byBits);
+<a name="l00518"></a>00518 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3a09db2ff23e3bf43bb01ffe1137cee8">shift_left</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00519"></a>00519 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad1ac8c13f6b642be791f59a95f58639b">shift_right</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keywordtype">size_t</span> byBits);
+<a name="l00521"></a>00521
+<a name="l00523"></a>00523
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2724cf5153be79d22b53230ae994f653">mod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modBy);
+<a name="l00531"></a>00531 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a455f9442a9d20ee8e5be198c8279d99c">mulmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& by, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modulus);
+<a name="l00532"></a>00532 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aba0c3ada68c395cf941b4c0fbc574343">sqrmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modulus);
+<a name="l00533"></a>00533 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a924d7a2c8a1c8817d75d0985ff30ebf0">powmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& exponent, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>&
+<a name="l00534"></a>00534 modulus, <span class="keywordtype">bool</span> noMontgomery=<span class="keyword">false</span>);
+<a name="l00535"></a>00535 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8f5f71a0e2e0c713295ede03d604d636">invmod</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& modulus);
+<a name="l00537"></a>00537
+<a name="l00539"></a>00539
+<a name="l00542"></a>00542 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a8d6e418a9b7172091f434b7657a02908">random_by_size</a>(<span class="keywordtype">size_t</span> sizeInBits, <span class="keywordtype">bool</span> highBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span>
+<a name="l00543"></a>00543 lowBitOn=<span class="keyword">false</span>, <span class="keywordtype">bool</span> canBeNegative=<span class="keyword">false</span>);
+<a name="l00545"></a>00545
+<a name="l00547"></a>00547
+<a name="l00550"></a>00550 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a0a6764881137a513c747b893aef16e9d">is_prime</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00551"></a>00551 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a3db40c31f1d6659d21986bfc96b7a13c">random_prime</a>(<span class="keywordtype">size_t</span> sizeInBits, <a class="code" href="namespaceboost_1_1xint.html#a48deb76c9c428a4b3a50177b1b0cb547">callback_t</a> callback=<a class="code" href="namespaceboost_1_1xint.html#a758d415a476a5eeed28dc6b5869b1696">no_callback</a>);
+<a name="l00553"></a>00553
+<a name="l00555"></a>00555
+<a name="l00560"></a>00560
+<a name="l00561"></a>00561 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad590f6564f7b4ba124835dce5a49b6e8">operator!</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1);
+<a name="l00562"></a>00562 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a03cbe2419b28b7d7bc86afe71158108e">operator<</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00563"></a>00563 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab3826f291c742f4b980d34cec652173c">operator></a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00564"></a>00564 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a2f826b80a2baf62af87d3335a260ee0d">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00565"></a>00565 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#afab66769cd37ad94e89559e55746a55b">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00566"></a>00566 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a30d62778d26a857f5b3ff6a56ebe6e6a">operator==</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00567"></a>00567 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a51e46fd4112a2fcff16e11d977f92e63">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00568"></a>00568
+<a name="l00569"></a>00569 <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& a);
+<a name="l00570"></a>00570 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& a);
+<a name="l00571"></a>00571 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ab13e7e95fd015038193d3babd65adb83">operator+</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00572"></a>00572 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aad0456bbbfcf1385355baef6ed7ee368">operator-</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00573"></a>00573 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aa5b674570d38ee92b7ed20aec2eedbeb">operator*</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00574"></a>00574 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a45485a6d3b99c83332836a100e3159e0">operator/</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00575"></a>00575 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a13908294b14450d3a12181f8f245baea">operator%</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00576"></a>00576 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aab0835691ea26d99726423b8456c8dce">operator&</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00577"></a>00577 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac5d01d4cfdb9adfc4d466811477b4927">operator|</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00578"></a>00578 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aabec559201c8efd77965ee8b6f07a4ca">operator^</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n2);
+<a name="l00580"></a>00580
+<a name="l00582"></a>00582
+<a name="l00585"></a>00585 <span class="keywordtype">int</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ad4d320afe012be4d62cca1ee985daa95">compare</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &n1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> &n2, <span class="keywordtype">bool</span> ignoresign=<span class="keyword">false</span>);
+<a name="l00586"></a>00586 <span class="keywordtype">size_t</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#ac761490fc23ecfb5017277529f2bf3a7">log2</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n);
+<a name="l00587"></a>00587 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a86b6971f33fec78e0186a0e8ce337368">gcd</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num2);
+<a name="l00588"></a>00588 <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a312ad948e2c326b228889bdb04131b49">lcm</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num1, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& num2);
+<a name="l00590"></a>00590
+<a name="l00591"></a>00591 } <span class="comment">// namespace blockable</span>
+<a name="l00592"></a>00592
+<a name="l00594"></a>00594
+<a name="l00602"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html">00602</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html" title="A convenience class for cryptographically-secure random numbers.">strong_random_generator</a> {
+<a name="l00603"></a>00603 <span class="keyword">public</span>:
+<a name="l00604"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">00604</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a>;
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a03606cc093b70870d2661aedccf12c26">strong_random_generator</a>();
+<a name="l00607"></a>00607 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a38abfddb5372dc090429ba1c4132ad9c">~strong_random_generator</a>();
+<a name="l00608"></a>00608 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ae2afe16256095db48543b859530990b8">operator()</a>();
+<a name="l00609"></a>00609
+<a name="l00610"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">00610</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1fec38eaf8f94dbcb866e9ee495a1eef">has_fixed_range</a>;
+<a name="l00611"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">00611</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a487dc7bc2b00f9e692957fc7f7b2da25">min_value</a>;
+<a name="l00612"></a><a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">00612</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#ab1ae2657dfc2cbce1511d9991c21a68b">max_value</a>;
+<a name="l00613"></a>00613 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a6a7fac4a372011d55494e3b5dc7f3471">min</a>() <span class="keyword">const</span>;
+<a name="l00614"></a>00614 <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#afb7490db5d65e0998290663ab7f5e688">result_type</a> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a4fa01769bdeb04ec7c55a7e8cb297922">max</a>() <span class="keyword">const</span>;
+<a name="l00615"></a>00615 <span class="keywordtype">double</span> <a class="code" href="classboost_1_1xint_1_1strong__random__generator.html#a1faed1bfa2b68731ecc2cb15f78e035b">entropy</a>() <span class="keyword">const</span>;
+<a name="l00616"></a>00616
+<a name="l00617"></a>00617 <span class="keyword">private</span>:
+<a name="l00618"></a>00618 <span class="keyword">struct </span>impl_t;
+<a name="l00619"></a>00619 impl_t *impl;
+<a name="l00620"></a>00620 };
+<a name="l00621"></a>00621
+<a name="l00623"></a>00623
+<a name="l00629"></a>00629
+<a name="l00630"></a>00630 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>();
+<a name="l00631"></a>00631 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a23aac788de86c99b403a691954e016ad" title="Temporarily prevent the library from throwing blockable exceptions.">block_exceptions</a>();
+<a name="l00632"></a>00632 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> <a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
+<a name="l00634"></a>00634
+<a name="l00637"></a>00637 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen);
+<a name="l00639"></a>00639
+<a name="l00642"></a>00642 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#a0492c49fda91b5f498074d3f812906dd" title="Tells whether the library was compiled with Secure Mode enabled.">opt_secure_mode</a>();
+<a name="l00643"></a>00643 <span class="keywordtype">bool</span> <a class="code" href="namespaceboost_1_1xint.html#ac80750e62d5ffa2484332aae4b23d379" title="Tells whether the library was compiled with the Thread Safe Operation option enabled...">opt_thread_safe</a>();
+<a name="l00645"></a>00645
+<a name="l00647"></a>00647 <span class="comment">// Exception classes</span>
+<a name="l00648"></a>00648
+<a name="l00651"></a>00651
+<a name="l00655"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html">00655</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__base.html" title="Exception class.">invalid_base</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00656"></a>00656 <span class="keyword">public</span>:
+<a name="l00657"></a><a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">00657</a> <a class="code" href="classboost_1_1xint_1_1invalid__base.html#a73c7125da5b1425c27b9f20aa3845078">invalid_base</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid base"</span>): invalid_argument(what)
+<a name="l00658"></a>00658 { }
+<a name="l00659"></a>00659 };
+<a name="l00660"></a>00660
+<a name="l00665"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html">00665</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__digit.html" title="Exception class.">invalid_digit</a>: <span class="keyword">public</span> std::range_error {
+<a name="l00666"></a>00666 <span class="keyword">public</span>:
+<a name="l00667"></a><a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">00667</a> <a class="code" href="classboost_1_1xint_1_1invalid__digit.html#a02be633b5225e22839b547c4b0e8d4ca">invalid_digit</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid digit"</span>): range_error(what)
+<a name="l00668"></a>00668 { }
+<a name="l00669"></a>00669 };
+<a name="l00670"></a>00670
+<a name="l00675"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html">00675</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html" title="Exception class.">invalid_modulus</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00676"></a>00676 <span class="keyword">public</span>:
+<a name="l00677"></a><a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">00677</a> <a class="code" href="classboost_1_1xint_1_1invalid__modulus.html#aab32f87b83c6d8deca7d3ce4e887e03b">invalid_modulus</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"invalid modulus"</span>):
+<a name="l00678"></a>00678 invalid_argument(what) { }
+<a name="l00679"></a>00679 };
+<a name="l00680"></a>00680
+<a name="l00685"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html">00685</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html" title="Exception class.">divide_by_zero</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00686"></a>00686 <span class="keyword">public</span>:
+<a name="l00687"></a><a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">00687</a> <a class="code" href="classboost_1_1xint_1_1divide__by__zero.html#a67f133dc2856d38d2664f3c8d8c73fe4">divide_by_zero</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"divide by zero error"</span>):
+<a name="l00688"></a>00688 invalid_argument(what) { }
+<a name="l00689"></a>00689 };
+<a name="l00690"></a>00690
+<a name="l00695"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html">00695</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1cannot__represent.html" title="Exception class.">cannot_represent</a>: <span class="keyword">public</span> std::invalid_argument {
+<a name="l00696"></a>00696 <span class="keyword">public</span>:
+<a name="l00697"></a><a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">00697</a> <a class="code" href="classboost_1_1xint_1_1cannot__represent.html#a940b731d15c77c43abef5d6053fd5d75">cannot_represent</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00698"></a>00698 <span class="stringliteral">"cannot represent the requested value"</span>): invalid_argument(what) { }
<a name="l00699"></a>00699 };
-<a name="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="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="l00700"></a>00700
+<a name="l00705"></a><a class="code" href="classboost_1_1xint_1_1too__big.html">00705</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>: <span class="keyword">public</span> std::range_error {
+<a name="l00706"></a>00706 <span class="keyword">public</span>:
+<a name="l00707"></a><a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">00707</a> <a class="code" href="classboost_1_1xint_1_1too__big.html#a91ca4f8a23e008c2ffc13608179226f3">too_big</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00708"></a>00708 <span class="stringliteral">"value out of range for requested conversion"</span>): range_error(what) { }
+<a name="l00709"></a>00709 };
+<a name="l00710"></a>00710
+<a name="l00722"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html">00722</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1not__a__number.html" title="Exception class.">not_a_number</a>: <span class="keyword">public</span> std::runtime_error {
+<a name="l00723"></a>00723 <span class="keyword">public</span>:
+<a name="l00724"></a><a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">00724</a> <a class="code" href="classboost_1_1xint_1_1not__a__number.html#a61a42fa00f7424f0e04e1f859fd40632">not_a_number</a>(<span class="keyword">const</span> std::string& what=<span class="stringliteral">"attempted to use a Not-a-Number"</span>):
+<a name="l00725"></a>00725 runtime_error(what) { }
+<a name="l00726"></a>00726 };
+<a name="l00727"></a>00727
+<a name="l00740"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html">00740</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1no__strong__random.html" title="Exception class.">no_strong_random</a>: <span class="keyword">public</span> std::runtime_error {
+<a name="l00741"></a>00741 <span class="keyword">public</span>:
+<a name="l00742"></a><a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">00742</a> <a class="code" href="classboost_1_1xint_1_1no__strong__random.html#a4c6cd31c06363212c0f1e21ba6718d58">no_strong_random</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00743"></a>00743 <span class="stringliteral">"system does not have a strong random generator"</span>):
+<a name="l00744"></a>00744 runtime_error(what) { }
+<a name="l00745"></a>00745 };
+<a name="l00746"></a>00746
+<a name="l00754"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html">00754</a> <span class="keyword">class </span><a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>: <span class="keyword">public</span> std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a> {
+<a name="l00755"></a>00755 <span class="keyword">public</span>:
+<a name="l00756"></a><a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">00756</a> <a class="code" href="classboost_1_1xint_1_1overflow__error.html#a6f37c836a5c2083a7be660c0bf1aeb00">overflow_error</a>(<span class="keyword">const</span> std::string& what=
+<a name="l00757"></a>00757 <span class="stringliteral">"overflow error: can't obtain enough memory to represent the requested number"</span>):
+<a name="l00758"></a>00758 std::<a class="code" href="classboost_1_1xint_1_1overflow__error.html" title="Exception class.">overflow_error</a>(what) { }
+<a name="l00759"></a>00759 };
+<a name="l00761"></a>00761
+<a name="l00763"></a>00763 <span class="comment">// Template function definitions</span>
+<a name="l00764"></a>00764
+<a name="l00778"></a>00778 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00779"></a><a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6">00779</a> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1xint.html#a201d33fafe577133130cd16dec3422b6" title="Change the random generator that the library uses.">set_random_generator</a>(T *gen) {
+<a name="l00780"></a>00780 <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a> *obj=<span class="keyword">new</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1random__generator.html" title="Support class for the random generator code.">detail::random_generator<T></a>(gen);
+<a name="l00781"></a>00781 <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a17e1b4fcb11ff18fd2641dc43ee905b8" title="Support function.">detail::set_random_generator</a>(obj);
+<a name="l00782"></a>00782 }
+<a name="l00783"></a>00783
+<a name="l00784"></a>00784 <span class="keyword">namespace </span>core {
+<a name="l00785"></a>00785
+<a name="l00798"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#afb6b73128973a835a261546f0a7fa0e7">00798</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00799"></a>00799 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00800"></a>00800 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
+<a name="l00801"></a>00801 {
+<a name="l00802"></a>00802 <span class="keywordflow">if</span> (n >= 0) {
+<a name="l00803"></a>00803 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
+<a name="l00804"></a>00804 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
+<a name="l00805"></a>00805 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(n));
+<a name="l00806"></a>00806 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n == (std::numeric_limits<T>::min)()) {
+<a name="l00807"></a>00807 <span class="comment">// Have to treat the minimum number carefully, because -n is not</span>
+<a name="l00808"></a>00808 <span class="comment">// what you'd think it is.</span>
+<a name="l00809"></a>00809 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(-(n+1)));
+<a name="l00810"></a>00810 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keyword">true</span>);
+<a name="l00811"></a>00811 --(*this);
+<a name="l00812"></a>00812 } <span class="keywordflow">else</span> {
+<a name="l00813"></a>00813 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(-n));
+<a name="l00814"></a>00814 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a66b8657cfa608ce2fd95bfad869e09b3">_set_negative</a>(<span class="keyword">true</span>);
+<a name="l00815"></a>00815 }
+<a name="l00816"></a>00816 }
+<a name="l00817"></a>00817
+<a name="l00830"></a><a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a570690c9233ceb8d73dccb9af052f12b">00830</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a4e99025a3cdbf0777f90effe05e97625" title="Creates a new integer with an initial value of zero.">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00831"></a>00831 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00832"></a>00832 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
+<a name="l00833"></a>00833 {
+<a name="l00834"></a>00834 <span class="keywordflow">if</span> (static_cast<T>(n & <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aecc94d5cb515781b3a33ddf76884e8f5">detail::digit_mask</a>) == n)
+<a name="l00835"></a>00835 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">detail::digit_t</a>(n));
+<a name="l00836"></a>00836 <span class="keywordflow">else</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#a0a8f95e339c5c30a23313a4af6a40b51">_init</a>(boost::uintmax_t(n));
+<a name="l00837"></a>00837 }
+<a name="l00838"></a>00838
+<a name="l00849"></a>00849 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00850"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3">00850</a> T <a class="code" href="namespaceboost_1_1xint_1_1core.html#a2cc4b19211f94878d3fe4fc50dbe24a3" title="Efficiently converts from an xint::integer to a built-in integer type.">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n) {
+<a name="l00851"></a>00851 <span class="keywordflow">if</span> (n < (std::numeric_limits<T>::min)()
+<a name="l00852"></a>00852 || n > (std::numeric_limits<T>::max)())
+<a name="l00853"></a>00853 <span class="keywordflow">throw</span> <a class="code" href="classboost_1_1xint_1_1too__big.html" title="Exception class.">too_big</a>(<span class="stringliteral">"value out of range for requested conversion"</span>);
+<a name="l00854"></a>00854
+<a name="l00855"></a>00855 T rval=0;
+<a name="l00856"></a>00856 <span class="keywordtype">size_t</span> len=n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a9ed6fed4d931d2eb9b481ca02cc96bd7">_get_length</a>();
+<a name="l00857"></a>00857 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> x=0; x<len; ++x)
+<a name="l00858"></a>00858 rval=static_cast<T>((rval * <a class="code" href="namespaceboost_1_1xint_1_1detail.html#aa743d942f784ec3a77e85816628d14cc">detail::digit_overflowbit</a>)
+<a name="l00859"></a>00859 + n.<a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#ac932c6bae77d2bbc93bf3456909e30bb">_get_digit</a>(len-x-1));
+<a name="l00860"></a>00860 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>() < 0) rval *= -1;
+<a name="l00861"></a>00861 <span class="keywordflow">return</span> rval;
+<a name="l00862"></a>00862 }
+<a name="l00863"></a>00863
+<a name="l00866"></a>00866 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00867"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">00867</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#af8fd339a3a68d1de9d8c3991c4952835">operator<<</a>(std::basic_ostream<charT,
+<a name="l00868"></a>00868 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n)
+<a name="l00869"></a>00869 {
+<a name="l00870"></a>00870 <span class="keywordtype">int</span> base=((out.flags() & std::ios::hex) ? 16
+<a name="l00871"></a>00871 : (out.flags() & std::ios::oct) ? 8
+<a name="l00872"></a>00872 : 10);
+<a name="l00873"></a>00873 <span class="keywordtype">bool</span> upperCase=(out.flags() & std::ios::uppercase ? <span class="keyword">true</span> : <span class="keyword">false</span>);
+<a name="l00874"></a>00874
+<a name="l00875"></a>00875 <span class="keywordtype">int</span> nsign=n.<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html#abbb37de330e3a50ac3df337e5c0eb1c9" title="Tests the sign of *this.">sign</a>();
+<a name="l00876"></a>00876 <span class="keywordflow">if</span> ((out.flags() & std::ios::showpos) && nsign >= 0) out << <span class="stringliteral">"+"</span>;
<a name="l00877"></a>00877
-<a name="l00878"></a>00878 <span class="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="l00878"></a>00878 <span class="keywordflow">if</span> (out.flags() & std::ios::showbase) {
+<a name="l00879"></a>00879 <span class="keywordflow">if</span> (nsign < 0) out << <span class="stringliteral">"-"</span>;
+<a name="l00880"></a>00880
+<a name="l00881"></a>00881 <span class="keywordflow">if</span> (base==16 && upperCase) out << <span class="stringliteral">"0X"</span>;
+<a name="l00882"></a>00882 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==16) out << <span class="stringliteral">"0x"</span>;
+<a name="l00883"></a>00883 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (base==8) out << <span class="stringliteral">"0"</span>;
+<a name="l00884"></a>00884
+<a name="l00885"></a>00885 out << <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(<a class="code" href="namespaceboost_1_1xint_1_1core.html#ab1b84a6eb65676fdb85e71c1fe06e792" title="Returns the absolute value of an integer.">abs</a>(n), base, upperCase);
+<a name="l00886"></a>00886 } <span class="keywordflow">else</span> {
+<a name="l00887"></a>00887 out << <a class="code" href="namespaceboost_1_1xint_1_1core.html#a28e4e76808cb1a05102e9c3d66fe0027" title="Creates a string representation of the specified integer.">to_string</a>(n, base, upperCase);
+<a name="l00888"></a>00888 }
+<a name="l00889"></a>00889 <span class="keywordflow">return</span> out;
+<a name="l00890"></a>00890 }
+<a name="l00891"></a>00891
+<a name="l00892"></a>00892 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l00893"></a><a class="code" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">00893</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1core.html#a39b5e2f0e689ba91809cc1eaebe40428">operator>></a>(std::basic_istream<charT,
+<a name="l00894"></a>00894 traits>& in, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a>& n)
+<a name="l00895"></a>00895 {
+<a name="l00896"></a>00896 <span class="keywordtype">int</span> hex=(in.flags() & std::ios::hex) ? 1 : 0;
+<a name="l00897"></a>00897 <span class="keywordtype">int</span> dec=(in.flags() & std::ios::dec) ? 1 : 0;
+<a name="l00898"></a>00898 <span class="keywordtype">int</span> oct=(in.flags() & std::ios::oct) ? 1 : 0;
+<a name="l00899"></a>00899 <span class="keywordtype">int</span> count=hex+dec+oct;
+<a name="l00900"></a>00900
+<a name="l00901"></a>00901 <span class="keywordtype">size_t</span> base=<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>;
+<a name="l00902"></a>00902 <span class="keywordflow">if</span> (count==1) {
+<a name="l00903"></a>00903 <span class="keywordflow">if</span> (hex) base=16;
+<a name="l00904"></a>00904 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (oct) base=8;
+<a name="l00905"></a>00905 <span class="keywordflow">else</span> base=10;
+<a name="l00906"></a>00906 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count>1) base=10;
+<a name="l00907"></a>00907 <span class="comment">// else auto-base</span>
+<a name="l00908"></a>00908
+<a name="l00909"></a>00909 std::string s;
+<a name="l00910"></a>00910 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'+'</span>) {
+<a name="l00911"></a>00911 in.ignore();
+<a name="l00912"></a>00912 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'-'</span>) {
+<a name="l00913"></a>00913 in.ignore();
+<a name="l00914"></a>00914 s.push_back(<span class="charliteral">'-'</span>);
+<a name="l00915"></a>00915 }
+<a name="l00916"></a>00916
+<a name="l00917"></a>00917 <span class="keywordflow">if</span> (base==<a class="code" href="namespaceboost_1_1xint.html#a086ec65a0273dccedca0fbfbddb03398">autobase</a>) {
+<a name="l00918"></a>00918 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'0'</span>) {
+<a name="l00919"></a>00919 in.ignore();
+<a name="l00920"></a>00920 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00921"></a>00921 <span class="keywordflow">if</span> (c==<span class="charliteral">'x'</span> || c==<span class="charliteral">'X'</span>) {
+<a name="l00922"></a>00922 in.ignore();
+<a name="l00923"></a>00923 base=16;
+<a name="l00924"></a>00924 } <span class="keywordflow">else</span> base=8;
+<a name="l00925"></a>00925 } <span class="keywordflow">else</span> base=10;
+<a name="l00926"></a>00926 }
+<a name="l00927"></a>00927
+<a name="l00928"></a>00928 <span class="keywordflow">while</span> (in) {
+<a name="l00929"></a>00929 <span class="keywordtype">int</span> c=in.peek();
+<a name="l00930"></a>00930 <span class="keywordflow">if</span> ((base==8 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'7'</span>)) ||
+<a name="l00931"></a>00931 (base==10 && (c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>)) ||
+<a name="l00932"></a>00932 (base==16 && ((c>=<span class="charliteral">'0'</span> && c<=<span class="charliteral">'9'</span>) || (c>=<span class="charliteral">'a'</span> && c<=<span class="charliteral">'f'</span>) ||
+<a name="l00933"></a>00933 (c>=<span class="charliteral">'A'</span> && c<=<span class="charliteral">'F'</span>))))
+<a name="l00934"></a>00934 {
+<a name="l00935"></a>00935 in.ignore();
+<a name="l00936"></a>00936 s.push_back(<span class="keywordtype">char</span>(c));
+<a name="l00937"></a>00937 } <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
+<a name="l00938"></a>00938 }
+<a name="l00939"></a>00939
+<a name="l00940"></a>00940 <a class="code" href="structboost_1_1xint_1_1detail_1_1token.html" title="An empty struct, used in xint::token.">token</a> allow=<a class="code" href="namespaceboost_1_1xint.html#a6353146e15d8912324f5fa820674a75f" title="Temprarily counteract an xint::block_exceptions token to allow all exceptions.">allow_exceptions</a>();
+<a name="l00941"></a>00941 <span class="keywordflow">try</span> {
+<a name="l00942"></a>00942 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">integer</a> testValue=<a class="code" href="namespaceboost_1_1xint_1_1core.html#adaa2e5c8f2ff92faee861a68bc7e4cca" title="Converts a string into an integer.">from_string</a>(s, base);
+<a name="l00943"></a>00943 n=testValue;
+<a name="l00944"></a>00944 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00945"></a>00945 <span class="comment">// Catch invalid strings</span>
+<a name="l00946"></a>00946 in.setstate(std::ios::failbit);
+<a name="l00947"></a>00947 }
+<a name="l00948"></a>00948
+<a name="l00949"></a>00949 <span class="keywordflow">return</span> in;
+<a name="l00950"></a>00950 }
+<a name="l00952"></a>00952
+<a name="l00953"></a>00953 } <span class="comment">// namespace core</span>
<a name="l00954"></a>00954
-<a name="l00955"></a>00955 <span class="keyword">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="l00955"></a>00955 <span class="keyword">namespace </span>blockable {
+<a name="l00956"></a>00956
+<a name="l00969"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a466b727de74ca896778f7bde6ae3fbf1">00969</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00970"></a>00970 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00971"></a>00971 <span class="keyword">typename</span> boost::enable_if<boost::is_signed<T> >::type*)
+<a name="l00972"></a>00972 {
+<a name="l00973"></a>00973 <span class="keywordflow">try</span> {
+<a name="l00974"></a>00974 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
+<a name="l00975"></a>00975 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l00976"></a>00976 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l00977"></a>00977 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
+<a name="l00978"></a>00978 }
+<a name="l00979"></a>00979 }
<a name="l00980"></a>00980
-<a name="l00981"></a>00981 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_H</span>
+<a name="l00993"></a><a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a97fd03d9176e7f308518248e738987c7">00993</a> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer::integer</a>(<span class="keyword">const</span> T& n,
+<a name="l00994"></a>00994 <span class="keyword">typename</span> boost::enable_if<boost::is_integral<T> >::type*,
+<a name="l00995"></a>00995 <span class="keyword">typename</span> boost::enable_if<boost::is_unsigned<T> >::type*)
+<a name="l00996"></a>00996 {
+<a name="l00997"></a>00997 <span class="keywordflow">try</span> {
+<a name="l00998"></a>00998 *<span class="keyword">this</span>=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#a9f1ddc3bb2f495ebad9dc666c51ed046">integer</a>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
+<a name="l00999"></a>00999 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l01000"></a>01000 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l01001"></a>01001 <a class="code" href="classboost_1_1xint_1_1core_1_1base__integer.html#a662d8cca23ec10683e5a4884e9ade5d4">_attach</a>(0);
+<a name="l01002"></a>01002 }
+<a name="l01003"></a>01003 }
+<a name="l01004"></a>01004
+<a name="l01009"></a>01009 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l01010"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">01010</a> T <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#a355624609c6e03048b8db0088fe0b436">to</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n) {
+<a name="l01011"></a>01011 <span class="keywordflow">try</span> {
+<a name="l01012"></a>01012 <span class="keywordflow">return</span> to<T>(<a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
+<a name="l01013"></a>01013 } <span class="keywordflow">catch</span> (std::exception&) {
+<a name="l01014"></a>01014 <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1xint.html#a389e96a85ba1c76ef5bfcf836b7e4e8a" title="Query whether exceptions are currently allowed or blocked.">exceptions_allowed</a>()) <span class="keywordflow">throw</span>;
+<a name="l01015"></a>01015 <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;
+<a name="l01016"></a>01016 }
+<a name="l01017"></a>01017 }
+<a name="l01018"></a>01018
+<a name="l01021"></a>01021 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l01022"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">01022</a> <span class="keyword">inline</span> std::basic_ostream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">operator<<</a>(std::basic_ostream<charT,
+<a name="l01023"></a>01023 traits>& out, <span class="keyword">const</span> <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n)
+<a name="l01024"></a>01024 {
+<a name="l01025"></a>01025 <span class="keywordflow">if</span> (n.<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#aa03f255fa20c9340c110a56a9b4e5123" title="Tests *this for Not-a-Number.">is_nan</a>()) {
+<a name="l01026"></a>01026 out << <a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>;
+<a name="l01027"></a>01027 <span class="keywordflow">return</span> out;
+<a name="l01028"></a>01028 } <span class="keywordflow">else</span> {
+<a name="l01029"></a>01029 <span class="keywordflow">return</span> <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#af8e7b16a508aefda2738d854c3a4e55c">core::operator<<</a>(out, <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a>(n));
+<a name="l01030"></a>01030 }
+<a name="l01031"></a>01031 }
+<a name="l01032"></a>01032
+<a name="l01033"></a>01033 <span class="keyword">template</span> <<span class="keyword">typename</span> <span class="keywordtype">char</span>T, <span class="keyword">typename</span> traits>
+<a name="l01034"></a><a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">01034</a> <span class="keyword">inline</span> std::basic_istream<charT,traits>& <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">operator>></a>(std::basic_istream<charT,
+<a name="l01035"></a>01035 traits>& in, <a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html" title="The blockable integer class.">integer</a>& n)
+<a name="l01036"></a>01036 {
+<a name="l01037"></a>01037 <span class="keywordflow">if</span> (in.peek()==<span class="charliteral">'#'</span>) {
+<a name="l01038"></a>01038 <span class="comment">// Must be either #NaN# or an error</span>
+<a name="l01039"></a>01039 <span class="keywordtype">char</span> buffer[6];
+<a name="l01040"></a>01040 std::streamsize size=in.readsome(buffer, 5);
+<a name="l01041"></a>01041 buffer[size]=0;
+<a name="l01042"></a>01042 std::string str(buffer);
+<a name="l01043"></a>01043
+<a name="l01044"></a>01044 <span class="keywordflow">if</span> (str==<a class="code" href="namespaceboost_1_1xint_1_1detail.html#ab0df946a2c10228501ef82bf823d0978" title="Holds the text representation of the Not-a-Number value.">detail::nan_text</a>) n=<a class="code" href="classboost_1_1xint_1_1blockable_1_1integer.html#ae52c1f42c887d0fffa40e38c97caedf1">integer::nan</a>();
+<a name="l01045"></a>01045 <span class="keywordflow">else</span> in.setstate(std::ios::failbit);
+<a name="l01046"></a>01046 } <span class="keywordflow">else</span> {
+<a name="l01047"></a>01047 <a class="code" href="classboost_1_1xint_1_1core_1_1integer.html" title="The core integer class.">core::integer</a> nn;
+<a name="l01048"></a>01048 <a class="code" href="namespaceboost_1_1xint_1_1blockable.html#aced22cdcfc2eec503bf14d495c5642d8">core::operator>></a>(in, nn);
+<a name="l01049"></a>01049 <span class="keywordflow">if</span> (in) n=nn;
+<a name="l01050"></a>01050 }
+<a name="l01051"></a>01051
+<a name="l01052"></a>01052 <span class="keywordflow">return</span> in;
+<a name="l01053"></a>01053 }
+<a name="l01055"></a>01055
+<a name="l01056"></a>01056 } <span class="comment">// namespace blockable</span>
+<a name="l01057"></a>01057
+<a name="l01058"></a>01058 <span class="keyword">namespace </span>test = core;
+<a name="l01059"></a>01059
+<a name="l01060"></a>01060 } <span class="comment">// namespace xint</span>
+<a name="l01061"></a>01061 } <span class="comment">// namespace boost</span>
+<a name="l01062"></a>01062
+<a name="l01063"></a>01063 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_H</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -29,20 +29,19 @@
<h1>xint_data_t.hpp File Reference</h1>
<p>Internal details of an xint::integer.
<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
<p>Go to the source code of this file.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t.html">boost::xint::detail::data_t</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 class="mdescLeft"> </td><td class="mdescRight">Holds the internal details of an xint::integer. More...<br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1xint_1_1detail_1_1data__t_1_1_quick_digits.html">boost::xint::detail::data_t::QuickDigits</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Holds information determining how many quick-digits to use. More...<br/></td></tr>
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint.html">boost::xint</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>All of the commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1detail.html">boost::xint::detail</a></td></tr>
@@ -57,8 +56,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -70,42 +70,43 @@
<a name="l00063"></a>00063 <span class="keyword">public</span>:
<a name="l00064"></a>00064 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial1=0, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial2=0, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> initial3=0);
<a name="l00065"></a>00065 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c);
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <span class="preprocessor"> #if defined(XINT_SECURE)</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span> ~<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>();
-<a name="l00069"></a>00069 <span class="preprocessor"> #endif</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>
-<a name="l00071"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">00071</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>() { ++<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>; }
-<a name="l00072"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">00072</a> <span class="keywordtype">bool</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>() { <span class="keywordflow">return</span> (--<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==0); }
-<a name="l00073"></a>00073 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(<span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <span class="keywordtype">bool</span> copydigits=<span class="keyword">false</span>);
-<a name="l00074"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">00074</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<span class="keywordtype">size_t</span> newdigits) { <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(newdigits, <span class="keyword">true</span>); }
-<a name="l00075"></a>00075 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
-<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c, <span class="keywordtype">size_t</span> extraDigits=0);
-<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, <span class="keywordtype">size_t</span> count);
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">quickset</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2=0, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3=0);
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a>();
-<a name="l00082"></a>00082 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>();
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="comment">// These primitives ignore the signs of the parameters, and their results</span>
-<a name="l00085"></a>00085 <span class="comment">// are calculated in place.</span>
-<a name="l00086"></a>00086 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& addend);
-<a name="l00087"></a>00087 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& subtrahend);
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="comment">// These are also calculated in place, for maximum speed.</span>
-<a name="l00090"></a>00090 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(<span class="keywordtype">size_t</span> byBits);
-<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(<span class="keywordtype">size_t</span> byBits);
-<a name="l00092"></a>00092 };
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">// namespace detail</span>
-<a name="l00095"></a>00095 } <span class="comment">// namespace xint</span>
-<a name="l00096"></a>00096 } <span class="comment">// namespace boost</span>
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_DATA_T_H</span>
+<a name="l00066"></a>00066 <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a37dee31093efc13f9ad64171fd9c373a">data_t</a>(boost::uintmax_t n, <span class="keywordtype">bool</span>);
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <span class="preprocessor"> #if defined(XINT_SECURE)</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span> ~<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>();
+<a name="l00070"></a>00070 <span class="preprocessor"> #endif</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>
+<a name="l00072"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">00072</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ae5e0fb03bd1a93e834bbbcbb11dcf845">attach</a>() { ++<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>; }
+<a name="l00073"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">00073</a> <span class="keywordtype">bool</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aca622bc945c157c65cf5042b70eabd83">detach</a>() { <span class="keywordflow">return</span> (--<a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a6ee92e12f6b7de91f7ad85fcd481bd74">mCopies</a>==0); }
+<a name="l00074"></a>00074 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(<span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a0e65a16488bd7a9d0b1c2a42cc258da3">digits</a>, <span class="keywordtype">bool</span> copydigits=<span class="keyword">false</span>);
+<a name="l00075"></a><a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">00075</a> <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a3bdd8e8ef7c5b8bc888b96725aac9dfe">realloc</a>(<span class="keywordtype">size_t</span> newdigits) { <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a05165b7f45dea3e2459739d856d78288">alloc</a>(newdigits, <span class="keyword">true</span>); }
+<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a284e2618d908796987c624311a42625d">skipLeadingZeros</a>();
+<a name="l00077"></a>00077 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a8fd5f934c3ad8c1f9d38bb38ac89cfcd">copy</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a> *c, <span class="keywordtype">size_t</span> extraDigits=0);
+<a name="l00078"></a>00078 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#abc03de358802a588b87fe666dd8f7c43">zero</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> *p, <span class="keywordtype">size_t</span> count);
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a231dab01a05e0c7f64e9c592537ddb14">quickset</a>(<a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d1, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d2=0, <a class="code" href="namespaceboost_1_1xint_1_1detail.html#a46b5dc5524403d8a09d1bb419abcc347">digit_t</a> d3=0);
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad082d802e78dab68eb7409e09386e974">invert</a>();
+<a name="l00083"></a>00083 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a1207c8b514f44886ae98f6632b9726a1">negate</a>();
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <span class="comment">// These primitives ignore the signs of the parameters, and their results</span>
+<a name="l00086"></a>00086 <span class="comment">// are calculated in place.</span>
+<a name="l00087"></a>00087 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ac723d73bc8845e6df77f3c439128b939">add</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& addend);
+<a name="l00088"></a>00088 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#a138ee1d91bfa37d248c43ef66371e590">subtract</a>(<span class="keyword">const</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html" title="Holds the internal details of an xint::integer.">data_t</a>& subtrahend);
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 <span class="comment">// These are also calculated in place, for maximum speed.</span>
+<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#aaa43f067c7f1a7772276cf9a57ab653c">shift_left</a>(<span class="keywordtype">size_t</span> byBits);
+<a name="l00092"></a>00092 <span class="keywordtype">void</span> <a class="code" href="structboost_1_1xint_1_1detail_1_1data__t.html#ad28012e618ecab56b69ceac7585d1741">shift_right</a>(<span class="keywordtype">size_t</span> byBits);
+<a name="l00093"></a>00093 };
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 } <span class="comment">// namespace detail</span>
+<a name="l00096"></a>00096 } <span class="comment">// namespace xint</span>
+<a name="l00097"></a>00097 } <span class="comment">// namespace boost</span>
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="preprocessor">#endif // BOOST_INCLUDED_XINT_DATA_T_H</span>
</pre></div></div>
-<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
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -36,18 +36,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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html">boost::xint::core</a></td></tr>
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the <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><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Contains the "pure" integer type, and functions to operate on it. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td 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>
+</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">digit_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aa6942deffea28a32072479fe663acaa2">boost::xint::core::inverse0</a> (const integer &n)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the low digit of the inverse of a number. Used internally. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#aff045b62b20e88d2e086dd64dcbba02e">boost::xint::core::montgomeryR</a> (const integer &n)</td></tr>
@@ -55,7 +55,7 @@
<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="mdescLeft"> </td><td class="mdescRight">Returns the integer from the Montgomery form of a number. Used for testing. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a902d87635063ba89629799b032e6a53d">boost::xint::core::montgomeryMultiplyMod</a> (const integer &a, const integer &b, const integer &n, digit_t nPrime0)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the Montgomery equivalent of <code>mulmod(a, b, n)</code>. Used internally. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">integer </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1xint_1_1core.html#a407dceba39038bf606814ea84ff4d964">boost::xint::core::montgomeryPowerMod</a> (const integer &a, const integer &e, const integer &n)</td></tr>
@@ -67,8 +67,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -58,8 +58,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:16:59 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -36,13 +36,13 @@
<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 commonly-used functions are within this namespace. </p>
+<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>The common functions are within this namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">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>
+</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">boost::xint::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">boost::xint::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">boost::xint::testMultiply</a> ()</td></tr>
@@ -57,8 +57,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -7,7 +7,7 @@
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
-<!-- Generated by Doxygen 1.6.1 -->
+<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
@@ -57,8 +57,8 @@
<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 Wed Apr 7 03:40:43 2010 for The Extended Integer (XInt) Library by
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Sun Apr 11 10:17:00 2010 for The Extended Integer (XInt) Library by
<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>
Modified: sandbox/xint/example/exceptions.cpp
==============================================================================
--- sandbox/xint/example/exceptions.cpp (original)
+++ sandbox/xint/example/exceptions.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -5,7 +5,7 @@
int main() {
using namespace std;
using namespace boost;
- using xint::integer;
+ using namespace xint::blockable;
integer n;
Modified: sandbox/xint/example/fibonacci.cpp
==============================================================================
--- sandbox/xint/example/fibonacci.cpp (original)
+++ sandbox/xint/example/fibonacci.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -2,7 +2,7 @@
#include <boost/xint/xint.hpp>
int main() {
- using xint::integer;
+ using namespace xint::core;
using std::cout;
using std::endl;
Modified: sandbox/xint/example/genprime.cpp
==============================================================================
--- sandbox/xint/example/genprime.cpp (original)
+++ sandbox/xint/example/genprime.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -9,6 +9,7 @@
int main() {
using namespace std;
using namespace boost;
+ using namespace xint::core;
const unsigned int bits=512;
@@ -20,7 +21,7 @@
// Generate the prime number, keeping the user informed of the
// progress.
cout << "Generating...";
- xint::integer p=xint::random_prime(bits, callback);
+ integer p=random_prime(bits, callback);
// Success!
cout << "\nA random " << bits << "-bit prime is: " << p << endl;
Modified: sandbox/xint/src/bit_manipulations.cpp
==============================================================================
--- sandbox/xint/src/bit_manipulations.cpp (original)
+++ sandbox/xint/src/bit_manipulations.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -25,6 +25,14 @@
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.
+*/
bool getbit(const integer& n, size_t bit) {
size_t index=bit/bits_per_digit;
if (index < n._get_length()) {
@@ -33,6 +41,13 @@
} 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._make_unique();
detail::data_t *ndata=n._get_data();
@@ -45,6 +60,13 @@
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) {
size_t index=bit/bits_per_digit;
if (index < n._get_length()) {
@@ -55,6 +77,15 @@
}
}
+/*! \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;
@@ -74,11 +105,26 @@
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) {
const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
@@ -96,6 +142,12 @@
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) {
const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
@@ -115,6 +167,13 @@
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) {
const detail::data_t *smaller=n1._get_data(), *larger=n2._get_data();
if (smaller->mLength > larger->mLength) std::swap(smaller, larger);
@@ -134,170 +193,6 @@
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.
@@ -319,12 +214,12 @@
\returns The bit-shifted integer.
*/
integer shift_left(const integer& n, size_t byBits) {
- try {
- return integer(shift_left(core::integer(n), byBits));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
+ if (byBits==0) return n;
+
+ integer nn(n);
+ nn._make_unique();
+ nn._get_data()->shift_left(byBits);
+ return nn;
}
/*! \brief Right-shift an integer by a specified number of bits.
@@ -335,13 +230,14 @@
\returns The bit-shifted integer.
*/
integer shift_right(const integer& n, size_t byBits) {
- try {
- return integer(shift_right(core::integer(n), byBits));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
+ if (byBits==0) return n;
+
+ integer nn(n);
+ nn._make_unique();
+ nn._get_data()->shift_right(byBits);
+ return nn;
}
+} // namespace core
} // namespace xint
} // namespace boost
Added: sandbox/xint/src/blockable_bit_manipulations.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_bit_manipulations.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,143 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the bit-manipulation functions for blockable integers.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+/*! \copydoc core::getbit
+
+\note If exceptions are blocked, returns false instead of throwing.
+*/
+bool getbit(const integer& n, size_t bit) {
+ try {
+ return getbit(core::integer(n), bit);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return false;
+ }
+}
+
+//! \copydoc core::setbit
+void setbit(integer& n, size_t bit) {
+ try {
+ core::integer nn(n);
+ setbit(nn, bit);
+ n=integer(nn);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+//! \copydoc core::clearbit
+void clearbit(integer& n, size_t bit) {
+ try {
+ core::integer nn(n);
+ clearbit(nn, bit);
+ n=integer(nn);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+/*! \copydoc core::lowestbit
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+size_t lowestbit(const integer& n, size_t valueIfZero) {
+ try {
+ return lowestbit(core::integer(n), valueIfZero);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+/*! \copydoc core::highestbit
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+size_t highestbit(const integer& n, size_t valueIfZero) {
+ try {
+ return highestbit(core::integer(n), valueIfZero);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+//! \copydoc core::bitwise_and
+integer bitwise_and(const integer& n1, const integer& n2) {
+ try {
+ return integer(bitwise_and(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::bitwise_or
+integer bitwise_or(const integer& n1, const integer& n2) {
+ try {
+ return integer(bitwise_or(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::bitwise_xor
+integer bitwise_xor(const integer& n1, const integer& n2) {
+ try {
+ return integer(bitwise_xor(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::shift
+integer shift(const integer& n, int byBits) {
+ if (byBits > 0) return shift_left(n, byBits);
+ else return shift_right(n, -byBits);
+}
+
+//! \copydoc core::shift_left
+integer shift_left(const integer& n, size_t byBits) {
+ try {
+ return integer(shift_left(core::integer(n), byBits));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::shift_right
+integer shift_right(const integer& n, size_t byBits) {
+ try {
+ return integer(shift_right(core::integer(n), byBits));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_compare.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_compare.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,74 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the the compare function and comparison operators for
+ blockable integers.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+/*! \copydoc core::compare
+
+\note If exceptions are blocked, returns 0 instead of throwing.
+*/
+int compare(const integer &b1, const integer &b2, bool ignoresign) {
+ try {
+ return compare(core::integer(b1), core::integer(b2));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+namespace {
+template <typename T>
+bool cmp(const integer &num1, const integer &num2, const T& t) {
+ try {
+ return t(compare(core::integer(num1), core::integer(num2)), 0);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return false;
+ }
+}
+} // namespace
+
+bool operator!(const integer &num1) {
+ try {
+ return operator!(core::integer(num1));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return false;
+ }
+}
+
+bool operator==(const integer &num1, const integer &num2) {
+ return cmp(num1, num2, std::equal_to<int>()); }
+bool operator!=(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::not_equal_to<int>()); }
+bool operator<(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::less<int>()); }
+bool operator>(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::greater<int>()); }
+bool operator<=(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::less_equal<int>()); }
+bool operator>=(const integer& num1, const integer& num2) {
+ return cmp(num1, num2, std::greater_equal<int>()); }
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_convert.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_convert.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,76 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the conversion functions for blockable integers.
+
+ Note that the xint::blockable::to<T> function is not here, because it's a
+ template function and must be defined in a header file.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+using namespace detail;
+
+/*! \copydoc core::to_string
+
+\note If exceptions are blocked, it returns an empty string instead of throwing
+an exception.
+*/
+std::string to_string(const integer& n, size_t base, bool uppercase) {
+ try {
+ return to_string(core::integer(n), base, uppercase);
+ } catch (exception&) {
+ if (exceptions_allowed()) throw;
+ else return std::string();
+ }
+}
+
+//! \copydoc core::from_string
+integer from_string(const std::string& str, size_t base) {
+ try {
+ if (str==detail::nan_text) return integer::nan();
+ return integer(core::from_string(str, base));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::from_binary
+integer from_binary(const std::string& str) {
+ try {
+ return integer(core::from_binary(str));
+ } catch (exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::to_binary
+std::string to_binary(const integer& n) {
+ try {
+ return to_binary(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return std::string();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_gcd.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_gcd.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,63 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Greatest Common Denominator and Least Common Multple for blockable
+ integers.
+
+ Also holds the definition for invmod, since it uses the GCD algorithm.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+//! \copydoc core::gcd
+integer gcd(const integer& num1, const integer& num2) {
+ try {
+ return integer(gcd(core::integer(num1), core::integer(num2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::lcm
+integer lcm(const integer& num1, const integer& num2) {
+ try {
+ return integer(lcm(core::integer(num1), core::integer(num2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+/*! \copydoc core::invmod
+
+\note If exceptions are blocked, it returns zero instead of throwing an
+exception.
+*/
+integer invmod(const integer& n, const integer& m) {
+ try {
+ return integer(invmod(core::integer(n), core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_integer.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_integer.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,259 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the xint::blockable::integer member
+ functions.
+*/
+
+#include "../boost/xint/xint.hpp"
+#include "../boost/xint/xint_data_t.hpp"
+
+namespace boost {
+namespace xint {
+
+const std::string detail::nan_text("#NaN#");
+
+namespace blockable {
+
+////////////////////////////////////////////////////////////////////////////////
+// The blockable integer class
+
+namespace {
+ std::auto_ptr<integer> cZero, cOne, cNaN;
+}
+
+//! \copydoc xint::core::integer::integer()
+integer::integer() {
+ _init();
+}
+
+//! \copydoc xint::core::integer::integer(const core::integer&)
+integer::integer(const integer& b) {
+ if (!b.is_nan()) _init(b);
+}
+
+/*! \brief Creates an integer from a core::integer.
+
+\param[in] b An existing core::integer.
+
+\note
+This library can use a \link cow copy-on-write technique\endlink, making
+copying (even of large numbers) a very inexpensive operation.
+
+\overload
+*/
+integer::integer(const core::integer& b) {
+ _attach(b);
+}
+
+//! \copydoc xint::core::integer::integer(const std::string&, size_t)
+integer::integer(const std::string& str, size_t base) {
+ try {
+ _init(from_string(str, base));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+/*! \copydoc core::integer::odd
+
+\note If exceptions are blocked, returns false instead of throwing.
+*/
+bool integer::odd() const {
+ if (is_nan()) {
+ if (exceptions_allowed()) throw not_a_number();
+ else return false;
+ }
+ return ((_get_digit(0) & 0x01)==1);
+}
+
+/*! \copydoc core::integer::even
+
+\note If exceptions are blocked, returns false instead of throwing.
+*/
+bool integer::even() const {
+ if (is_nan()) {
+ if (exceptions_allowed()) throw not_a_number();
+ else return false;
+ }
+ return ((_get_digit(0) & 0x01)==0);
+}
+
+/*! \copydoc core::integer::sign
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+int integer::sign() const {
+ if (is_nan()) {
+ if (exceptions_allowed()) throw not_a_number();
+ else return 0;
+ }
+ if (_get_length()==1 && _get_digit(0)==0) return 0;
+ return (_get_data()->mIsNegative ? -1 : 1);
+}
+
+/*! \copydoc core::integer::hex_digits
+
+\note If exceptions are blocked, returns zero instead of throwing.
+*/
+size_t integer::hex_digits() const {
+ try {
+ return core::integer(*this).hex_digits();
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+/*! \brief Tests \c *this for Not-a-Number.
+
+\returns \c true if \c *this is Not-a-Number, otherwise \c false.
+
+\see \ref nan
+*/
+bool integer::is_nan() const {
+ return (_get_data()==0);
+}
+
+integer& integer::operator+=(const integer& addend) {
+ try {
+ *this=integer(core::integer(*this).operator+=(core::integer(addend)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+integer& integer::operator-=(const integer& subtrahend) {
+ try {
+ *this=integer(core::integer(*this).operator-=(core::integer(subtrahend)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+integer& integer::operator=(const integer &c) {
+ try {
+ _attach(c);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ _attach(0);
+ }
+ return *this;
+}
+
+integer& integer::operator*=(const integer& b) { *this=multiply(*this, b); return *this; }
+integer& integer::operator/=(const integer& b) { *this=divide(*this, b); return *this; }
+integer& integer::operator%=(const integer& b) { *this=mod(*this, b); return *this; }
+
+integer& integer::operator++() { *this += one(); return *this; }
+integer& integer::operator--() { *this -= one(); return *this; }
+integer integer::operator++(int) { integer s=*this; *this += one(); return s; }
+integer integer::operator--(int) { integer s=*this; *this -= one(); return s; }
+
+integer integer::operator<<(size_t shift) const { return shift_left(*this, shift); }
+integer integer::operator>>(size_t shift) const { return shift_right(*this, shift); }
+integer& integer::operator&=(const integer& n) { *this=bitwise_and(*this, n); return *this; }
+integer& integer::operator|=(const integer& n) { *this=bitwise_or(*this, n); return *this; }
+integer& integer::operator^=(const integer& n) { *this=bitwise_xor(*this, n); return *this; }
+
+integer& integer::operator<<=(size_t shift) {
+ try {
+ *this=integer(core::integer(*this).operator<<=(shift));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+integer& integer::operator>>=(size_t shift) {
+ try {
+ *this=integer(core::integer(*this).operator>>=(shift));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ *this=integer::nan();
+ }
+ return *this;
+}
+
+const integer& integer::zero() {
+ if (cZero.get()==0) cZero.reset(new integer(core::integer::zero()));
+ return *cZero;
+}
+
+const integer& integer::one() {
+ if (cOne.get()==0) cOne.reset(new integer(core::integer::one()));
+ return *cOne;
+}
+
+const integer& integer::nan() {
+ if (cNaN.get()==0) {
+ integer *n=new integer();
+ n->_attach(0);
+ cNaN.reset(n);
+ }
+ return *cNaN;
+}
+
+void integer::_init(detail::digit_t init) {
+ try {
+ _attach(new detail::data_t(init));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+void integer::_init(const integer &c) {
+ try {
+ _attach(c);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+void integer::_init(boost::uintmax_t n) {
+ try {
+ _attach(new detail::data_t(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ }
+}
+
+void integer::_make_unique() {
+ if (!_is_unique()) {
+ try {
+ _attach(new detail::data_t(_get_data()));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ _attach(0); // Turns it into a Not-a-Number,
+ }
+ }
+}
+
+void integer::_set_negative(bool negative) {
+ if (_get_data()->mIsNegative != negative) {
+ _make_unique();
+ detail::data_t *p=_get_data();
+ p->mIsNegative=negative;
+ p->skipLeadingZeros();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_misc.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_misc.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,40 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Functions for blockable integers that don't fall into any other
+ category.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+/*! \copydoc core::log2
+
+\note If exceptions are blocked, returns 0 instead of throwing.
+*/
+size_t log2(const integer& n) {
+ try {
+ return log2(core::integer(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return 0;
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_modular.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_modular.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,74 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the basic modular math functions for
+ blockable integers.
+
+ The xint::invmod function, which logically would be here, is actually in
+ gcd.cpp to share the gcd_core function.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+//! \copydoc core::mod
+integer mod(const integer& n, const integer& m) {
+ try {
+ return integer(mod(core::integer(n), core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::mulmod
+integer mulmod(const integer& n, const integer& by, const integer& m) {
+ try {
+ return integer(mod(core::integer(n) * core::integer(by),
+ core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::sqrmod
+integer sqrmod(const integer& n, const integer& m) {
+ try {
+ return integer(mod(sqr(core::integer(n)), core::integer(m)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::powmod
+integer powmod(const integer& n, const integer& e, const integer& m, bool
+ noMontgomery)
+{
+ try {
+ return integer(powmod(core::integer(n), core::integer(e),
+ core::integer(m), noMontgomery));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_operators.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_operators.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,38 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the basic math operators for blockable
+ integers.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+const integer& operator+(const integer& a) { return a; }
+integer operator-(const integer& a) { return negate(a); }
+integer operator+(const integer& num1, const integer& num2) { return add(num1, num2); }
+integer operator-(const integer& num1, const integer& num2) { return subtract(num1, num2); }
+integer operator*(const integer& num1, const integer& num2) { return multiply(num1, num2); }
+integer operator/(const integer& num1, const integer& num2) { return divide(num1, num2); }
+integer operator%(const integer& num1, const integer& num2) { return mod(num1, num2); }
+integer operator&(const integer& n1, const integer& n2) { return bitwise_and(n1, n2); }
+integer operator|(const integer& n1, const integer& n2) { return bitwise_or(n1, n2); }
+integer operator^(const integer& n1, const integer& n2) { return bitwise_xor(n1, n2); }
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_powers.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_powers.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,64 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for blockable integer functions related to
+ powers of a number.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+//! \copydoc core::pow2
+integer pow2(size_t e) {
+ integer r;
+ setbit(r, e);
+ return r;
+}
+
+//! \copydoc core::sqr
+integer sqr(const integer& n) {
+ try {
+ return integer(sqr(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::pow
+integer pow(const integer& n, const integer& e) {
+ try {
+ return integer(pow(core::integer(n), core::integer(e)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+//! \copydoc core::factorial
+integer factorial(size_t n) {
+ try {
+ return integer(core::factorial(n));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_primes.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_primes.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,50 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for functions related to prime numbers for
+ blockable integers.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+/*! \copydoc core::is_prime
+
+\note If exceptions are blocked, returns -1 instead of throwing.
+*/
+int is_prime(const integer& n, callback_t callback) {
+ try {
+ return is_prime(core::integer(n), callback);
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return -1;
+ }
+}
+
+//! \copydoc core::random_prime
+integer random_prime(size_t size_in_bits, callback_t callback) {
+ try {
+ return integer(core::random_prime(size_in_bits, callback));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ else return integer::nan();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_primitives.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_primitives.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,95 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for math primitives for blockable integers.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+//! \copydoc core::abs
+integer abs(const integer& n) {
+ try {
+ return integer(abs(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::negate
+integer negate(const integer& n) {
+ try {
+ return integer(negate(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::add
+integer add(const integer& n1, const integer& n2) {
+ try {
+ return integer(add(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::subtract
+integer subtract(const integer& n1, const integer& n2) {
+ try {
+ return integer(subtract(core::integer(n1), core::integer(n2)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::multiply
+integer multiply(const integer& n, const integer& by) {
+ try {
+ return integer(multiply(core::integer(n), core::integer(by)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+//! \copydoc core::divide
+integer divide(const integer& dividend, const integer& divisor) {
+ return divide_r(dividend, divisor).first;
+}
+
+/*! \copydoc core::divide_r
+
+\note If exceptions are blocked, returns an std::pair with two Not-a-Number
+values instead of throwing.
+*/
+std::pair<integer, integer> divide_r(const integer& d1, const integer& d2) {
+ try {
+ return divide_r(core::integer(d1), core::integer(d2));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return std::make_pair(integer::nan(), integer::nan());
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_random.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_random.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,40 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for the random number functions for
+ blockable integers.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+//! \copydoc core::random_by_size
+integer random_by_size(size_t bits, bool high_bit_on, bool low_bit_on, bool
+ can_be_negative)
+{
+ try {
+ return integer(core::random_by_size(bits, high_bit_on, low_bit_on,
+ can_be_negative));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Added: sandbox/xint/src/blockable_roots.cpp
==============================================================================
--- (empty file)
+++ sandbox/xint/src/blockable_roots.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -0,0 +1,37 @@
+
+/*
+ The Extended Integer (XInt) Library
+ A fast, portable C++ library for multi-precision integer math
+ Copyright 2010 by Chad Nelson
+
+ Distributed under the Boost Software License, Version 1.0.
+ See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt
+
+ See http://www.boost.org/libs/xint for library home page.
+*/
+
+/*! \file
+ \brief Contains the definitions for blockable integer functions related to
+ roots of a number.
+*/
+
+#include "../boost/xint/xint.hpp"
+
+namespace boost {
+namespace xint {
+namespace blockable {
+
+//! \copydoc core::sqrt
+integer sqrt(const integer& n) {
+ try {
+ return integer(sqrt(core::integer(n)));
+ } catch (std::exception&) {
+ if (exceptions_allowed()) throw;
+ return integer::nan();
+ }
+}
+
+} // namespace blockable
+} // namespace xint
+} // namespace boost
Modified: sandbox/xint/src/compare.cpp
==============================================================================
--- sandbox/xint/src/compare.cpp (original)
+++ sandbox/xint/src/compare.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -24,6 +24,18 @@
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.
+*/
int compare(const integer &b1, const integer &b2, bool ignoresign) {
if (!ignoresign) {
int sign1=b1.sign(), sign2=b2.sign();
@@ -68,63 +80,5 @@
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -47,6 +47,24 @@
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.
+
+\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 (base<2 || base>36) throw invalid_base();
@@ -98,6 +116,32 @@
}
}
+/*! \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) {
bool negate=false;
const char *c=str.c_str();
@@ -138,6 +182,15 @@
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;
@@ -158,112 +211,6 @@
return r;
}
-std::string to_binary(const integer& n) {
- const size_t bytesPerDigit=sizeof(digit_t);
- const size_t bitsPerByte=std::numeric_limits<unsigned char>::digits;
- std::vector<unsigned char> temp;
- temp.reserve(n._get_length() * bytesPerDigit);
-
- const detail::data_t *ndata=n._get_data();
- const digit_t *p=ndata->digits, *pe=p+n._get_length();
- while (p != pe) {
- digit_t d(*p++);
- for (size_t i=0; i<bytesPerDigit; ++i) {
- temp.push_back((unsigned char)(d));
- d >>= bitsPerByte;
- }
- }
- while (!temp.empty() && temp.back()==0) temp.pop_back();
- char *c=(char*)&temp[0];
- 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.
@@ -284,13 +231,25 @@
\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();
+ const size_t bytesPerDigit=sizeof(digit_t);
+ const size_t bitsPerByte=std::numeric_limits<unsigned char>::digits;
+ std::vector<unsigned char> temp;
+ temp.reserve(n._get_length() * bytesPerDigit);
+
+ const detail::data_t *ndata=n._get_data();
+ const digit_t *p=ndata->digits, *pe=p+n._get_length();
+ while (p != pe) {
+ digit_t d(*p++);
+ for (size_t i=0; i<bytesPerDigit; ++i) {
+ temp.push_back((unsigned char)(d));
+ d >>= bitsPerByte;
+ }
}
+ while (!temp.empty() && temp.back()==0) temp.pop_back();
+ char *c=(char*)&temp[0];
+ return std::string(c, c+temp.size());
}
+} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/data_t.cpp
==============================================================================
--- sandbox/xint/src/data_t.cpp (original)
+++ sandbox/xint/src/data_t.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -60,6 +60,27 @@
mIsNegative=c->mIsNegative;
}
+//! \overload
+data_t::data_t(boost::uintmax_t n, bool) {
+ static int bits=std::numeric_limits<boost::uintmax_t>::digits;
+ static int maxDigits=(bits+detail::bits_per_digit-1)/detail::bits_per_digit;
+
+ mLength=1;
+ mAllocated=QuickDigits::count;
+ digits=mQuickDigits;
+ digits[0]=digits[1]=digits[2]=0;
+ mCopies=0;
+ mIsNegative=false;
+
+ alloc(maxDigits);
+ digit_t *i=digits;
+ while (n != 0) {
+ *i++=detail::digit_t(n & detail::digit_mask);
+ n >>= detail::bits_per_digit;
+ }
+ skipLeadingZeros();
+}
+
#ifdef XINT_SECURE
data_t::~data_t() {
zero(mQuickDigits, QuickDigits::count);
Modified: sandbox/xint/src/gcd.cpp
==============================================================================
--- sandbox/xint/src/gcd.cpp (original)
+++ sandbox/xint/src/gcd.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -14,7 +14,7 @@
/*! \file
\brief Greatest Common Denominator and Least Common Multple.
- Also holds the definition for xint::invmod, since it uses the GCD algorithm.
+ Also holds the definition for invmod, since it uses the GCD algorithm.
*/
#include "../boost/xint/xint.hpp"
@@ -58,6 +58,13 @@
} // 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) {
int sign1=num1.sign(), sign2=num2.sign();
if (sign1==0 && sign2==0) return integer::zero();
@@ -75,11 +82,29 @@
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.
+*/
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)
@@ -108,61 +133,5 @@
}
} // 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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -31,224 +31,52 @@
}
////////////////////////////////////////////////////////////////////////////////
-// The core integer class
-
-integer::integer() {
- _init();
-}
-
-integer::integer(const integer& b) {
- _init(b);
-}
-
-integer::integer(const ::boost::xint::integer& b) {
- if (b.is_nan()) throw xint::not_a_number();
-
- // 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();
-}
-
-integer::integer(const std::string& str, size_t base) {
- _init(from_string(str, base));
-}
-
-integer::~integer() {
- _detach();
-}
-
-void integer::_init(detail::digit_t init) {
- try {
- data=new detail::data_t(init);
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
- _attach();
-}
-
-void integer::_init(const integer &c) {
- #ifdef XINT_DISABLE_COPY_ON_WRITE
- data=new detail::data_t(c.data);
- #else
- data=c.data;
- #endif
- _attach();
-}
+// The base_integer class
-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;
-
- try {
- data=new detail::data_t;
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
- _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();
-}
-
-void integer::_attach() {
- if (data) data->attach();
-}
-
-void integer::_detach() {
+base_integer::~base_integer() {
if (data && data->detach()) delete data;
- data=0;
}
-void integer::_make_unique() {
- try {
- if (data && data->mCopies > 1) {
- detail::data_t *newstore=new detail::data_t(data);
- _detach();
- data=newstore;
- _attach();
- }
- } catch (std::bad_alloc&) {
- throw xint::overflow_error("Out of memory allocating xint::integer");
- }
-}
-
-void integer::_set_negative(bool negative) {
- if (data->mIsNegative != negative) {
- _make_unique();
- data->mIsNegative=negative;
- data->skipLeadingZeros();
- }
-}
-
-bool integer::odd() const {
- return ((_get_digit(0) & 0x01)==1);
-}
-
-bool integer::even() const {
- return ((_get_digit(0) & 0x01)==0);
-}
-
-int integer::sign() const {
- if (_get_length()==1 && _get_digit(0)==0) return 0;
- else return (data->mIsNegative ? -1 : 1);
-}
-
-size_t integer::hex_digits() const {
- size_t bits=log2(*this);
- return (bits+3)/4; // Four bits per hex digit, rounded up
+detail::digit_t base_integer::_get_digit(size_t index) const {
+ return data->digits[index];
}
-integer& integer::operator+=(const integer& addend) {
- if ((sign() < 0) == (addend.sign() < 0)
- && data->mLength >= addend.data->mLength)
- {
- // Fast in-place add
- _make_unique();
- data->add(addend.data);
- } else {
- // This works for all cases
- *this=add(*this, addend);
- }
- return *this;
+detail::digit_t base_integer::_get_digit(size_t index, bool) const {
+ if (index >= data->mLength) return 0;
+ return data->digits[index];
}
-integer& integer::operator-=(const integer& subtrahend) {
- if (sign() >= 0 && subtrahend.sign() >= 0 && *this >= subtrahend) {
- // Fast in-place subtract
- _make_unique();
- data->subtract(subtrahend.data);
- } else {
- // This works for all cases
- *this=subtract(*this, subtrahend);
- }
- return *this;
+size_t base_integer::_get_length() const {
+ return data->mLength;
}
-integer& integer::operator=(const integer &c) {
- _detach();
+void base_integer::_attach(detail::data_t *new_data) {
+ if (data && data->detach()) delete data;
#ifdef XINT_DISABLE_COPY_ON_WRITE
- data=new detail::data_t(c.data);
+ if (new_data==0 || new_data->mCopies==0) data=new_data;
+ else {
+ try {
+ data=new detail::data_t(new_data);
+ } catch (std::bad_alloc&) {
+ throw xint::overflow_error("Out of memory allocating xint::integer");
+ }
+ }
#else
- data=c.data;
+ data=new_data;
#endif
- _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) {
- if (shift>0) {
- _make_unique();
- data->shift_left(shift);
- }
- return *this;
-}
-
-integer& integer::operator>>=(size_t shift) {
- if (shift>0) {
- _make_unique();
- data->shift_right(shift);
- }
- return *this;
-}
-
-const integer& integer::zero() {
- if (cZero.get()==0) cZero.reset(new integer(0));
- return *cZero;
-}
-
-const integer& integer::one() {
- if (cOne.get()==0) cOne.reset(new integer(1));
- return *cOne;
-}
-
-detail::digit_t integer::_get_digit(size_t index) const {
- return data->digits[index];
+ if (data) data->attach();
}
-detail::digit_t integer::_get_digit(size_t index, bool) const {
- if (index >= data->mLength) return 0;
- return data->digits[index];
+void base_integer::_attach(const base_integer& copy) {
+ _attach(copy.data);
}
-size_t integer::_get_length() const {
- return data->mLength;
+bool base_integer::_is_unique() const {
+ return (!data || data->mCopies==1);
}
-} // namespace core
-
////////////////////////////////////////////////////////////////////////////////
-// The non-core integer class
-
-namespace {
- std::auto_ptr<integer> cZero, cOne, cNaN;
-}
-
-const std::string detail::nan_text("#NaN#");
+// The core integer class
//! \brief Creates a new integer with an initial value of zero.
integer::integer() {
@@ -267,13 +95,12 @@
\overload
*/
integer::integer(const integer& b) {
- if (b.is_nan()) data=0;
- else _init(b);
+ _init(b);
}
-/*! \brief Creates an integer from a core::integer.
+/*! \brief Creates an integer from a blockable::integer.
-\param[in] b An existing core::integer.
+\param[in] b An existing blockable::integer.
\note
This library can use a \link cow copy-on-write technique\endlink, making
@@ -281,16 +108,9 @@
\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();
+integer::integer(const blockable::integer& b) {
+ if (b.is_nan()) throw xint::not_a_number();
+ _attach(b);
}
/*! \brief Create an integer from a string representation.
@@ -314,41 +134,59 @@
\overload
*/
integer::integer(const std::string& str, size_t base) {
+ _init(from_string(str, base));
+}
+
+void integer::_init(detail::digit_t init) {
+ try {
+ _attach(new detail::data_t(init));
+ } catch (std::bad_alloc&) {
+ throw xint::overflow_error("Out of memory allocating xint::integer");
+ }
+}
+
+void integer::_init(const integer &c) {
+ _attach(c);
+}
+
+void integer::_init(boost::uintmax_t n) {
try {
- data=0;
- _init(from_string(str, base));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- delete data;
- data=0;
+ _attach(new detail::data_t(n, true));
+ } catch (std::bad_alloc&) {
+ throw xint::overflow_error("Out of memory allocating xint::integer");
+ }
+}
+
+void integer::_make_unique() {
+ try {
+ if (!_is_unique()) _attach(new detail::data_t(_get_data()));
+ } catch (std::bad_alloc&) {
+ throw xint::overflow_error("Out of memory allocating xint::integer");
+ }
+}
+
+void integer::_set_negative(bool negative) {
+ if (_get_data()->mIsNegative != negative) {
+ _make_unique();
+ detail::data_t *p=_get_data();
+ p->mIsNegative=negative;
+ p->skipLeadingZeros();
}
}
/*! \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);
}
@@ -356,77 +194,50 @@
\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);
+ else return (_get_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);
+ size_t bits=log2(*this);
+ return (bits+3)/4; // Four bits per hex digit, rounded up
}
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();
+ if ((sign() < 0) == (addend.sign() < 0)
+ && _get_length() >= addend._get_length())
+ {
+ // Fast in-place add
+ _make_unique();
+ _get_data()->add(addend._get_data());
+ } else {
+ // This works for all cases
+ *this=add(*this, addend);
}
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();
+ if (sign() >= 0 && subtrahend.sign() >= 0 && *this >= subtrahend) {
+ // Fast in-place subtract
+ _make_unique();
+ _get_data()->subtract(subtrahend._get_data());
+ } else {
+ // This works for all cases
+ *this=subtract(*this, subtrahend);
}
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();
+ _attach(c);
return *this;
}
@@ -446,136 +257,31 @@
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();
+ if (shift>0) {
+ _make_unique();
+ _get_data()->shift_left(shift);
}
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();
+ if (shift>0) {
+ _make_unique();
+ _get_data()->shift_right(shift);
}
return *this;
}
const integer& integer::zero() {
- if (cZero.get()==0) cZero.reset(new integer(core::integer::zero()));
+ if (cZero.get()==0) cZero.reset(new integer(0));
return *cZero;
}
const integer& integer::one() {
- if (cOne.get()==0) cOne.reset(new integer(core::integer::one()));
+ if (cOne.get()==0) cOne.reset(new integer(1));
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 core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/misc.cpp
==============================================================================
--- sandbox/xint/src/misc.cpp (original)
+++ sandbox/xint/src/misc.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -48,41 +48,29 @@
}
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.
+#pow2(log2(n)-1) will give you an integer with the highest set bit of \c n,
+assuming that \c n is non-zero.
\par
-Similar to the xint::highestbit function.
+Similar to the #highestbit function.
*/
size_t log2(const integer& n) {
- try {
- return log2(core::integer(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return 0;
+ 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
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/modular.cpp
==============================================================================
--- sandbox/xint/src/modular.cpp (original)
+++ sandbox/xint/src/modular.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -25,60 +25,6 @@
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.
\param[in] n The dividend.
@@ -87,12 +33,9 @@
\returns The result of \c n % \c m.
*/
integer mod(const integer& n, const integer& m) {
- try {
- return integer(mod(core::integer(n), core::integer(m)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
+ integer r=divide_r(n, m).second;
+ if (r.sign() < 0) r+=abs(m);
+ return r;
}
/*! \brief Get the modular product of two integers.
@@ -108,13 +51,7 @@
writing out the calculation.
*/
integer mulmod(const integer& n, const integer& by, const integer& m) {
- try {
- return integer(mod(core::integer(n) * core::integer(by),
- core::integer(m)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
+ return mod(n * by, m);
}
/*! \brief Get the modular product of squaring an integer.
@@ -130,12 +67,7 @@
writing out the calculation.
*/
integer sqrmod(const integer& n, const integer& m) {
- try {
- return integer(mod(sqr(core::integer(n)), core::integer(m)));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
- }
+ return mod(sqr(n), m);
}
/*! \brief Get the result of \c n<sup>e</sup> % \c m, keeping the intermediate
@@ -162,14 +94,41 @@
integer powmod(const integer& n, const integer& e, const integer& m, bool
noMontgomery)
{
- try {
- return integer(powmod(core::integer(n), core::integer(e),
- core::integer(m), noMontgomery));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- return integer::nan();
+ 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
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/operators.cpp
==============================================================================
--- sandbox/xint/src/operators.cpp (original)
+++ sandbox/xint/src/operators.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -31,17 +31,5 @@
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); }
-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 xint
} // namespace boost
Modified: sandbox/xint/src/powers.cpp
==============================================================================
--- sandbox/xint/src/powers.cpp (original)
+++ sandbox/xint/src/powers.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -38,12 +38,31 @@
} // 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) {
const data_t *ndata=n._get_data();
std::vector<doubledigit_t> a(ndata->mLength*2+1, 0);
@@ -86,6 +105,12 @@
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());
@@ -109,63 +134,6 @@
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.
@@ -178,13 +146,11 @@
system's memory.
*/
integer factorial(size_t n) {
- try {
- return integer(core::factorial(n));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
- }
+ integer r(integer::one());
+ while (n > 1) { r *= n--; }
+ return r;
}
+} // namespace core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/primes.cpp
==============================================================================
--- sandbox/xint/src/primes.cpp (original)
+++ sandbox/xint/src/primes.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -79,47 +79,6 @@
} // 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.
@@ -131,8 +90,6 @@
\exception std::invalid_argument if \c n is less than 2.
-\note If exceptions are blocked, returns -1 instead of throwing.
-
\remarks
This function uses the Rabin-Miller probabilistic primality test. There is an
infinitesimally small chance that it will think that a composite number is
@@ -143,12 +100,22 @@
\see \ref primes
*/
int is_prime(const integer& n, callback_t callback) {
- try {
- return is_prime(core::integer(n), callback);
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return -1;
+ 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!
}
/*! \brief Generate a randomly-generated prime number of a particular bit-size.
@@ -174,13 +141,24 @@
\see \ref primes
*/
integer random_prime(size_t size_in_bits, callback_t callback) {
- try {
- return integer(core::random_prime(size_in_bits, callback));
- } catch (std::exception&) {
- if (exceptions_allowed()) throw;
- else return integer::nan();
+ 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
} // namespace xint
} // namespace boost
Modified: sandbox/xint/src/primitives.cpp
==============================================================================
--- sandbox/xint/src/primitives.cpp (original)
+++ sandbox/xint/src/primitives.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -26,10 +26,22 @@
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) {
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) {
integer nn(n);
nn._make_unique();
@@ -37,6 +49,12 @@
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) {
@@ -55,6 +73,12 @@
}
}
+/*! \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) {
@@ -74,6 +98,16 @@
}
}
+/*! \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();
@@ -214,10 +248,29 @@
} // 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.
+*/
std::pair<integer, integer> divide_r(const integer& d1, const integer& d2) {
int sign1=d1.sign(), sign2=d2.sign();
if (sign2==0) throw divide_by_zero();
@@ -253,120 +306,5 @@
}
} // 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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -99,6 +99,7 @@
// The secure random generator
//! @cond
+
#ifdef _WIN32
struct strong_random_generator::impl_t {
typedef BOOLEAN (WINAPI *RtlGenRandomFn)(PVOID, ULONG);
@@ -157,6 +158,7 @@
double strong_random_generator::entropy() const { return 8; }
#endif
+
//! @endcond
const bool strong_random_generator::has_fixed_range = true;
@@ -181,6 +183,26 @@
// (1<<bits)-1, inclusive
namespace core {
+/*! \brief Generates a random integer with specific attributes.
+
+\param[in] bits The maximum number of bits that you want the returned number to
+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)
{
@@ -213,38 +235,5 @@
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-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -19,8 +19,18 @@
namespace boost {
namespace xint {
-
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) {
if (n.sign() < 0) throw cannot_represent("library cannot represent "
"imaginary values (tried to take sqrt of negative number)");
@@ -39,26 +49,7 @@
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 core
} // namespace xint
} // namespace boost
Modified: sandbox/xint/test/test_add.cpp
==============================================================================
--- sandbox/xint/test/test_add.cpp (original)
+++ sandbox/xint/test/test_add.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -21,6 +21,8 @@
namespace boost {
namespace xint {
+using namespace test;
+
using std::endl;
using std::dec;
using std::hex;
Modified: sandbox/xint/test/test_bit_manipulations.cpp
==============================================================================
--- sandbox/xint/test/test_bit_manipulations.cpp (original)
+++ sandbox/xint/test/test_bit_manipulations.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -22,6 +22,8 @@
namespace boost {
namespace xint {
+using namespace test;
+
using std::hex;
BOOST_AUTO_TEST_CASE(testBitManipulations) {
Modified: sandbox/xint/test/test_convert.cpp
==============================================================================
--- sandbox/xint/test/test_convert.cpp (original)
+++ sandbox/xint/test/test_convert.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -27,6 +27,8 @@
namespace boost {
namespace xint {
+using namespace test;
+
BOOST_AUTO_TEST_CASE(testConvert) {
// Come up with a sufficiently complex number to test with. It must be
// greater than one digit's worth of data, and have at least one leading
@@ -85,7 +87,7 @@
{
token t=block_exceptions();
- BOOST_CHECK_NO_THROW(integer badConversion("abcdefg", 16));
+ BOOST_CHECK_NO_THROW(blockable::integer badConversion("abcdefg", 16));
}
{
Modified: sandbox/xint/test/test_divide.cpp
==============================================================================
--- sandbox/xint/test/test_divide.cpp (original)
+++ sandbox/xint/test/test_divide.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -25,6 +25,8 @@
namespace boost {
namespace xint {
+using namespace test;
+
using std::endl;
namespace {
Modified: sandbox/xint/test/test_multiply.cpp
==============================================================================
--- sandbox/xint/test/test_multiply.cpp (original)
+++ sandbox/xint/test/test_multiply.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -22,6 +22,8 @@
namespace boost {
namespace xint {
+using namespace test;
+
using std::endl;
namespace {
@@ -37,10 +39,10 @@
out << "m = " << to_string(m, 16) << endl;
out << "r = " << to_string(result, 16) << endl << endl;
- out << "r / m = " << to_string(result-m, 16)
+ out << "r / m = " << to_string(result/m, 16)
<< (result/m == n ? " (good)" : " (should be n, isn't)")
<< endl;
- out << "r / n = " << to_string(result-n, 16)
+ out << "r / n = " << to_string(result/n, 16)
<< (result/n == m ? " (good)" : " (should be m, isn't)")
<< endl;
BOOST_ERROR(out.str());
@@ -52,11 +54,17 @@
BOOST_AUTO_TEST_CASE(testMultiply) {
{
+ // These caused a problem while trying to backport the new division
+ // algorithm into the version used elsewhere.
+ integer n=integer("-41e0348d52a1be49b7da339137639cde", 16);
+ integer m=integer("c3a1d54a63e80d5a8b851a01d244ea61", 16);
+ _test(0, 0, n, m);
+
// 'm' contains a full digit of zeros, which caused problems with an
// earlier implementation.
- integer n("300493435053701420844513300446198902283");
- integer m("-10530911911644352242410713382920651977");
- _test(0, 0, n, m);
+ n=integer("300493435053701420844513300446198902283");
+ m=integer("-10530911911644352242410713382920651977");
+ _test(0, 1, n, m);
}
for (int i=0; i<10000; ++i) {
Modified: sandbox/xint/test/test_streams.cpp
==============================================================================
--- sandbox/xint/test/test_streams.cpp (original)
+++ sandbox/xint/test/test_streams.cpp 2010-04-11 10:29:32 EDT (Sun, 11 Apr 2010)
@@ -23,6 +23,8 @@
namespace boost {
namespace xint {
+using namespace test;
+
namespace {
bool testStreamOut(std::string name, std::stringstream& str, const integer& n, std::string expected) {
@@ -158,10 +160,10 @@
str.flags(defaultFlags);
str.clear();
- str << integer::nan();
+ str << blockable::integer::nan();
std::string temp=str.str();
- integer test;
+ blockable::integer test;
str.str(temp);
str >> test;
if (!test.is_nan()) BOOST_ERROR("testStream: isNaN test failed");
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk