Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > 07dfcfe50d66c9a48a3c5e6c1693f12a > files > 824

cryptopp-doc-5.6.1-0.1.svn479.fc13.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Crypto++: 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><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Integer Class Reference</h1><!-- doxytag: class="Integer" --><!-- doxytag: inherits="InitializeInteger,ASN1Object" -->
<p>multiple precision integer and basic arithmetics  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="integer_8h_source.html">integer.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Integer:</div>
<div class="dynsection">
 <div class="center">
  <img src="class_integer.gif" usemap="#Integer_map" alt=""/>
  <map id="Integer_map" name="Integer_map">
<area href="struct_initialize_integer.html" alt="InitializeInteger" shape="rect" coords="0,0,96,24"/>
<area href="class_a_s_n1_object.html" alt="ASN1Object" shape="rect" coords="106,0,202,24"/>
</map>
 </div>
</div>

<p><a href="class_integer-members.html">List of all members.</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer_1_1_divide_by_zero.html">DivideByZero</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">division by zero exception  <a href="class_integer_1_1_divide_by_zero.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer_1_1_open_p_g_p_decode_err.html">OpenPGPDecodeErr</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer_1_1_random_number_not_found.html">RandomNumberNotFound</a></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_s_n1_object.html#ab8446b61690a19015d3d565d86dd1d3d">BEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode this object into a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a>, using BER  <a href="#ab8446b61690a19015d3d565d86dd1d3d"></a><br/></td></tr>
<tr><td colspan="2"><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ef821fc78e4bfe3236b3a0157df189d"></a><!-- doxytag: member="Integer::ModularArithmetic" ref="a0ef821fc78e4bfe3236b3a0157df189d" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a0ef821fc78e4bfe3236b3a0157df189d">ModularArithmetic</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14e60a19be28337cb24783301e091877"></a><!-- doxytag: member="Integer::MontgomeryRepresentation" ref="a14e60a19be28337cb24783301e091877" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a14e60a19be28337cb24783301e091877">MontgomeryRepresentation</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef0adde4261276d74ddf19366c427b62"></a><!-- doxytag: member="Integer::HalfMontgomeryRepresentation" ref="aef0adde4261276d74ddf19366c427b62" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>HalfMontgomeryRepresentation</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6295e7fe9ae3d0c22e38168e8fd7c0f1"></a><!-- doxytag: member="Integer::PositiveAdd" ref="a6295e7fe9ae3d0c22e38168e8fd7c0f1" args="(Integer &amp;sum, const Integer &amp;a, const Integer &amp;b)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>PositiveAdd</b> (<a class="el" href="class_integer.html">Integer</a> &amp;sum, const <a class="el" href="class_integer.html">Integer</a> &amp;a, const <a class="el" href="class_integer.html">Integer</a> &amp;b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc5b1ed43bfa0c217e2c64535515e7bb"></a><!-- doxytag: member="Integer::PositiveSubtract" ref="acc5b1ed43bfa0c217e2c64535515e7bb" args="(Integer &amp;diff, const Integer &amp;a, const Integer &amp;b)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>PositiveSubtract</b> (<a class="el" href="class_integer.html">Integer</a> &amp;diff, const <a class="el" href="class_integer.html">Integer</a> &amp;a, const <a class="el" href="class_integer.html">Integer</a> &amp;b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53b5444044b02d93e76fafac50c3bb29"></a><!-- doxytag: member="Integer::PositiveMultiply" ref="a53b5444044b02d93e76fafac50c3bb29" args="(Integer &amp;product, const Integer &amp;a, const Integer &amp;b)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>PositiveMultiply</b> (<a class="el" href="class_integer.html">Integer</a> &amp;product, const <a class="el" href="class_integer.html">Integer</a> &amp;a, const <a class="el" href="class_integer.html">Integer</a> &amp;b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30542b29292dbe332eb60b6aabfaf937"></a><!-- doxytag: member="Integer::PositiveDivide" ref="a30542b29292dbe332eb60b6aabfaf937" args="(Integer &amp;remainder, Integer &amp;quotient, const Integer &amp;dividend, const Integer &amp;divisor)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>PositiveDivide</b> (<a class="el" href="class_integer.html">Integer</a> &amp;remainder, <a class="el" href="class_integer.html">Integer</a> &amp;quotient, const <a class="el" href="class_integer.html">Integer</a> &amp;dividend, const <a class="el" href="class_integer.html">Integer</a> &amp;divisor)</td></tr>
<tr><td colspan="2"><h2>ENUMS, EXCEPTIONS, and TYPEDEFS</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrpa03118083bc7586a83a4ee7290b05995"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>Sign</b> { <b>POSITIVE</b> = 0, 
<b>NEGATIVE</b> = 1
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>Signedness</b> { <b>UNSIGNED</b>, 
<b>SIGNED</b>
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>RandomNumberType</b> { <b>ANY</b>, 
<b>PRIME</b>
 }</td></tr>
<tr><td colspan="2"><h2>OTHER ARITHMETIC FUNCTIONS</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp9b2e3a5f8113660d4333aeae3c0867b1"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0c699fd5d44290c499eb51a4e75d062"></a><!-- doxytag: member="Integer::a_times_b_mod_c" ref="ac0c699fd5d44290c499eb51a4e75d062" args="(const Integer &amp;x, const Integer &amp;y, const Integer &amp;m)" -->
<a class="el" href="class_integer.html">Integer</a> __cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ac0c699fd5d44290c499eb51a4e75d062">a_times_b_mod_c</a> (const <a class="el" href="class_integer.html">Integer</a> &amp;x, const <a class="el" href="class_integer.html">Integer</a> &amp;y, const <a class="el" href="class_integer.html">Integer</a> &amp;m)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">modular multiplication <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa90e318d86745dd8cd92e2845708158b"></a><!-- doxytag: member="Integer::a_exp_b_mod_c" ref="aa90e318d86745dd8cd92e2845708158b" args="(const Integer &amp;x, const Integer &amp;e, const Integer &amp;m)" -->
<a class="el" href="class_integer.html">Integer</a> __cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aa90e318d86745dd8cd92e2845708158b">a_exp_b_mod_c</a> (const <a class="el" href="class_integer.html">Integer</a> &amp;x, const <a class="el" href="class_integer.html">Integer</a> &amp;e, const <a class="el" href="class_integer.html">Integer</a> &amp;m)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">modular exponentiation <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3561a8987c0150e20d2fe0f7ef44c70b"></a><!-- doxytag: member="Integer::AbsoluteValue" ref="a3561a8987c0150e20d2fe0f7ef44c70b" args="() const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>AbsoluteValue</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e1a3170987a46b3682e217057687c2b"></a><!-- doxytag: member="Integer::Doubled" ref="a5e1a3170987a46b3682e217057687c2b" args="() const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Doubled</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0b94a015187c923d4e36683c8cb0668"></a><!-- doxytag: member="Integer::Squared" ref="ae0b94a015187c923d4e36683c8cb0668" args="() const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Squared</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cbc1009bb421942470163aed5e3fefb"></a><!-- doxytag: member="Integer::SquareRoot" ref="a9cbc1009bb421942470163aed5e3fefb" args="() const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9cbc1009bb421942470163aed5e3fefb">SquareRoot</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">extract square root, if negative return 0, else return floor of square root <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49efda9b0c4767508a2b5541380132ed"></a><!-- doxytag: member="Integer::IsSquare" ref="a49efda9b0c4767508a2b5541380132ed" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a49efda9b0c4767508a2b5541380132ed">IsSquare</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return whether this integer is a perfect square <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbee0ebe94c7ef5b0da39beabe87c27b"></a><!-- doxytag: member="Integer::IsUnit" ref="acbee0ebe94c7ef5b0da39beabe87c27b" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#acbee0ebe94c7ef5b0da39beabe87c27b">IsUnit</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">is 1 or -1 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94954b3df8073387d225be1033b0fa5b"></a><!-- doxytag: member="Integer::MultiplicativeInverse" ref="a94954b3df8073387d225be1033b0fa5b" args="() const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a94954b3df8073387d225be1033b0fa5b">MultiplicativeInverse</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return inverse if 1 or -1, otherwise return 0 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a881f9c714ee42f35718725a43d4d7db3"></a><!-- doxytag: member="Integer::InverseMod" ref="a881f9c714ee42f35718725a43d4d7db3" args="(const Integer &amp;n) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a881f9c714ee42f35718725a43d4d7db3">InverseMod</a> (const <a class="el" href="class_integer.html">Integer</a> &amp;n) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">calculate multiplicative inverse of *this mod n <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f73939559a765be0b1c9a9681ad9e2c"></a><!-- doxytag: member="Integer::InverseMod" ref="a3f73939559a765be0b1c9a9681ad9e2c" args="(word n) const " -->
word&nbsp;</td><td class="memItemRight" valign="bottom"><b>InverseMod</b> (word n) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a567c89aa176b354143c99d558d05a5fb"></a><!-- doxytag: member="Integer::Divide" ref="a567c89aa176b354143c99d558d05a5fb" args="(Integer &amp;r, Integer &amp;q, const Integer &amp;a, const Integer &amp;d)" -->
static void __cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a567c89aa176b354143c99d558d05a5fb">Divide</a> (<a class="el" href="class_integer.html">Integer</a> &amp;r, <a class="el" href="class_integer.html">Integer</a> &amp;q, const <a class="el" href="class_integer.html">Integer</a> &amp;a, const <a class="el" href="class_integer.html">Integer</a> &amp;d)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">calculate r and q such that (a == d*q + r) &amp;&amp; (0 &lt;= r &lt; abs(d)) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1849c5a8af28ab4f3a70d9690924f249"></a><!-- doxytag: member="Integer::Divide" ref="a1849c5a8af28ab4f3a70d9690924f249" args="(word &amp;r, Integer &amp;q, const Integer &amp;a, word d)" -->
static void __cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a1849c5a8af28ab4f3a70d9690924f249">Divide</a> (word &amp;r, <a class="el" href="class_integer.html">Integer</a> &amp;q, const <a class="el" href="class_integer.html">Integer</a> &amp;a, word d)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">use a faster division algorithm when divisor is short <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf2934a6172b4cb5317874f0c993a420"></a><!-- doxytag: member="Integer::DivideByPowerOf2" ref="abf2934a6172b4cb5317874f0c993a420" args="(Integer &amp;r, Integer &amp;q, const Integer &amp;a, unsigned int n)" -->
static void __cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#abf2934a6172b4cb5317874f0c993a420">DivideByPowerOf2</a> (<a class="el" href="class_integer.html">Integer</a> &amp;r, <a class="el" href="class_integer.html">Integer</a> &amp;q, const <a class="el" href="class_integer.html">Integer</a> &amp;a, unsigned int n)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns same result as Divide(r, q, a, Power2(n)), but faster <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d4d29937f8ef666717530b30f137c37"></a><!-- doxytag: member="Integer::Gcd" ref="a2d4d29937f8ef666717530b30f137c37" args="(const Integer &amp;a, const Integer &amp;n)" -->
static <a class="el" href="class_integer.html">Integer</a> __cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2d4d29937f8ef666717530b30f137c37">Gcd</a> (const <a class="el" href="class_integer.html">Integer</a> &amp;a, const <a class="el" href="class_integer.html">Integer</a> &amp;n)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">greatest common divisor <br/></td></tr>
<tr><td colspan="2"><h2>INPUT/OUTPUT</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp1b1587792b52046d87b6d77541dd2b4c"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98f06f69fc1e81254df74408c184eb7e"></a><!-- doxytag: member="Integer::operator&gt;&gt;" ref="a98f06f69fc1e81254df74408c184eb7e" args="(std::istream &amp;in, Integer &amp;a)" -->
std::istream &amp;__cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (std::istream &amp;in, <a class="el" href="class_integer.html">Integer</a> &amp;a)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84ed49a91b4e00f5e3454de276e8452f"></a><!-- doxytag: member="Integer::operator&lt;&lt;" ref="a84ed49a91b4e00f5e3454de276e8452f" args="(std::ostream &amp;out, const Integer &amp;a)" -->
std::ostream &amp;__cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (std::ostream &amp;out, const <a class="el" href="class_integer.html">Integer</a> &amp;a)</td></tr>
<tr><td colspan="2"><h2>CREATORS</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp19ed50dd7d15a96072c9b6a53e8d6a1d"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fcab0564d7270017ebcca55bae1a17a"></a><!-- doxytag: member="Integer::Integer" ref="a7fcab0564d7270017ebcca55bae1a17a" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a7fcab0564d7270017ebcca55bae1a17a">Integer</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">creates the zero integer <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e86175b4b1fb79321736974846fce70"></a><!-- doxytag: member="Integer::Integer" ref="a9e86175b4b1fb79321736974846fce70" args="(const Integer &amp;t)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9e86175b4b1fb79321736974846fce70">Integer</a> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">copy constructor <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0536c16f441f1b5abcb2019f7d52e17"></a><!-- doxytag: member="Integer::Integer" ref="ab0536c16f441f1b5abcb2019f7d52e17" args="(signed long value)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ab0536c16f441f1b5abcb2019f7d52e17">Integer</a> (signed long value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from signed long <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15a70886677caedd35492b495c5290e6"></a><!-- doxytag: member="Integer::Integer" ref="a15a70886677caedd35492b495c5290e6" args="(Sign s, lword value)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a15a70886677caedd35492b495c5290e6">Integer</a> (Sign s, lword value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from lword <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a834c31dcb78213e008b342c97764fd5d"></a><!-- doxytag: member="Integer::Integer" ref="a834c31dcb78213e008b342c97764fd5d" args="(Sign s, word highWord, word lowWord)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a834c31dcb78213e008b342c97764fd5d">Integer</a> (Sign s, word highWord, word lowWord)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from two words <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9e8bf8c72458dff4ceb5d6cdf9e5c97a">Integer</a> (const char *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from string  <a href="#a9e8bf8c72458dff4ceb5d6cdf9e5c97a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6931189bb0b2e68d04bef63bc6f172b3"></a><!-- doxytag: member="Integer::Integer" ref="a6931189bb0b2e68d04bef63bc6f172b3" args="(const wchar_t *str)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>Integer</b> (const wchar_t *str)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19c0d3273fcc216a5849527c7ba759d8"></a><!-- doxytag: member="Integer::Integer" ref="a19c0d3273fcc216a5849527c7ba759d8" args="(const byte *encodedInteger, size_t byteCount, Signedness s=UNSIGNED)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a19c0d3273fcc216a5849527c7ba759d8">Integer</a> (const byte *encodedInteger, size_t byteCount, Signedness s=UNSIGNED)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from big-endian byte array <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39fee8047d003a1d6044da4b5025f3ce"></a><!-- doxytag: member="Integer::Integer" ref="a39fee8047d003a1d6044da4b5025f3ce" args="(BufferedTransformation &amp;bt, size_t byteCount, Signedness s=UNSIGNED)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a39fee8047d003a1d6044da4b5025f3ce">Integer</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, size_t byteCount, Signedness s=UNSIGNED)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from big-endian form stored in a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81d3973655b9f9d358de31ca4d0215c1"></a><!-- doxytag: member="Integer::Integer" ref="a81d3973655b9f9d358de31ca4d0215c1" args="(BufferedTransformation &amp;bt)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a81d3973655b9f9d358de31ca4d0215c1">Integer</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">convert from BER encoded byte array stored in a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aeb4abb834e9e897a28850d2081f3fa63">Integer</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, size_t bitcount)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create a random integer  <a href="#aeb4abb834e9e897a28850d2081f3fa63"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a88a110cb9f89a8810c228ad00cea18c2">Integer</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const <a class="el" href="class_integer.html">Integer</a> &amp;min, const <a class="el" href="class_integer.html">Integer</a> &amp;max, RandomNumberType rnType=ANY, const <a class="el" href="class_integer.html">Integer</a> &amp;equiv=Zero(), const <a class="el" href="class_integer.html">Integer</a> &amp;mod=One())</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create a random integer of special type  <a href="#a88a110cb9f89a8810c228ad00cea18c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19b7e6d48b1b57bd4846160ea2928175"></a><!-- doxytag: member="Integer::Zero" ref="a19b7e6d48b1b57bd4846160ea2928175" args="()" -->
static const <a class="el" href="class_integer.html">Integer</a> &amp;__cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a19b7e6d48b1b57bd4846160ea2928175">Zero</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">avoid calling constructors for these frequently used integers <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c070592581bf6c2f928c72bfa1c1638"></a><!-- doxytag: member="Integer::One" ref="a8c070592581bf6c2f928c72bfa1c1638" args="()" -->
static const <a class="el" href="class_integer.html">Integer</a> &amp;__cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a8c070592581bf6c2f928c72bfa1c1638">One</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">avoid calling constructors for these frequently used integers <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0cb74a45a48e677952166bdac9d82d7"></a><!-- doxytag: member="Integer::Two" ref="af0cb74a45a48e677952166bdac9d82d7" args="()" -->
static const <a class="el" href="class_integer.html">Integer</a> &amp;__cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#af0cb74a45a48e677952166bdac9d82d7">Two</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">avoid calling constructors for these frequently used integers <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade53248f5dbb520273a70856b975417c"></a><!-- doxytag: member="Integer::Power2" ref="ade53248f5dbb520273a70856b975417c" args="(size_t e)" -->
static <a class="el" href="class_integer.html">Integer</a> __cdecl&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ade53248f5dbb520273a70856b975417c">Power2</a> (size_t e)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the integer 2**e <br/></td></tr>
<tr><td colspan="2"><h2>ENCODE/DECODE</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp504bf883702193e006878608276a59c5"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a3b269bbf8a91faf217c0dd76222182bb">MinEncodedSize</a> (Signedness=UNSIGNED) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">minimum number of bytes to encode this integer  <a href="#a3b269bbf8a91faf217c0dd76222182bb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#ac12ea467de9a609b86ec03d8cb8837e4">Encode</a> (byte *output, size_t outputLen, Signedness=UNSIGNED) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode in big-endian format  <a href="#ac12ea467de9a609b86ec03d8cb8837e4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18a664f00df5dcfb979b2e804e7418ce"></a><!-- doxytag: member="Integer::Encode" ref="a18a664f00df5dcfb979b2e804e7418ce" args="(BufferedTransformation &amp;bt, size_t outputLen, Signedness=UNSIGNED) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>Encode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, size_t outputLen, Signedness=UNSIGNED) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ab51a05bee88cfa690179611e8a084e"></a><!-- doxytag: member="Integer::DEREncode" ref="a6ab51a05bee88cfa690179611e8a084e" args="(BufferedTransformation &amp;bt) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a6ab51a05bee88cfa690179611e8a084e">DEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode using Distinguished Encoding Rules, put result into a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1dc54b479df856d614cb23e362126110"></a><!-- doxytag: member="Integer::DEREncodeAsOctetString" ref="a1dc54b479df856d614cb23e362126110" args="(BufferedTransformation &amp;bt, size_t length) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a1dc54b479df856d614cb23e362126110">DEREncodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, size_t length) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode absolute value as big-endian octet string <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d6226e12e1ac0b957ad84ac54a15ce9"></a><!-- doxytag: member="Integer::OpenPGPEncode" ref="a9d6226e12e1ac0b957ad84ac54a15ce9" args="(byte *output, size_t bufferSize) const " -->
size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9d6226e12e1ac0b957ad84ac54a15ce9">OpenPGPEncode</a> (byte *output, size_t bufferSize) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode absolute value in OpenPGP format, return length of output <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2325e09a01b29c3a70f3c2bcfcea0a1d"></a><!-- doxytag: member="Integer::OpenPGPEncode" ref="a2325e09a01b29c3a70f3c2bcfcea0a1d" args="(BufferedTransformation &amp;bt) const " -->
size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2325e09a01b29c3a70f3c2bcfcea0a1d">OpenPGPEncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encode absolute value in OpenPGP format, put result into a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91fee9e9873f3412f47e6d647545099"></a><!-- doxytag: member="Integer::Decode" ref="ae91fee9e9873f3412f47e6d647545099" args="(const byte *input, size_t inputLen, Signedness=UNSIGNED)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>Decode</b> (const byte *input, size_t inputLen, Signedness=UNSIGNED)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92052699599bfd434418b782dbaf4f72"></a><!-- doxytag: member="Integer::Decode" ref="a92052699599bfd434418b782dbaf4f72" args="(BufferedTransformation &amp;bt, size_t inputLen, Signedness=UNSIGNED)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>Decode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, size_t inputLen, Signedness=UNSIGNED)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a810fc0382f8928893fe192ab79b1972c"></a><!-- doxytag: member="Integer::BERDecode" ref="a810fc0382f8928893fe192ab79b1972c" args="(const byte *input, size_t inputLen)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>BERDecode</b> (const byte *input, size_t inputLen)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8736cc41b06596c9c04328d2f0238db7"></a><!-- doxytag: member="Integer::BERDecode" ref="a8736cc41b06596c9c04328d2f0238db7" args="(BufferedTransformation &amp;bt)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a8736cc41b06596c9c04328d2f0238db7">BERDecode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">decode this object from a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a>, using BER (Basic Encoding Rules) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59f2e3f759fb252da8ce4bd718fb6487"></a><!-- doxytag: member="Integer::BERDecodeAsOctetString" ref="a59f2e3f759fb252da8ce4bd718fb6487" args="(BufferedTransformation &amp;bt, size_t length)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a59f2e3f759fb252da8ce4bd718fb6487">BERDecodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, size_t length)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">decode nonnegative value as big-endian octet string <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b2415221b6eb9ffde8c9c495ae098f2"></a><!-- doxytag: member="Integer::OpenPGPDecode" ref="a4b2415221b6eb9ffde8c9c495ae098f2" args="(const byte *input, size_t inputLen)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>OpenPGPDecode</b> (const byte *input, size_t inputLen)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ff99fc6723da5a45c98212de5cf4f3d"></a><!-- doxytag: member="Integer::OpenPGPDecode" ref="a9ff99fc6723da5a45c98212de5cf4f3d" args="(BufferedTransformation &amp;bt)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>OpenPGPDecode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr>
<tr><td colspan="2"><h2>ACCESSORS</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrpc0453e8d6311263eccfc02576bf64333"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc8abb12371da5c520d15efd64532697"></a><!-- doxytag: member="Integer::IsConvertableToLong" ref="abc8abb12371da5c520d15efd64532697" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#abc8abb12371da5c520d15efd64532697">IsConvertableToLong</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return true if *this can be represented as a signed long <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c689da5ded6e077a203b122deec519f"></a><!-- doxytag: member="Integer::ConvertToLong" ref="a9c689da5ded6e077a203b122deec519f" args="() const " -->
signed long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a9c689da5ded6e077a203b122deec519f">ConvertToLong</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return equivalent signed long if possible, otherwise undefined <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a178398002ab175e788a3bc224e5e5a8d"></a><!-- doxytag: member="Integer::BitCount" ref="a178398002ab175e788a3bc224e5e5a8d" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a178398002ab175e788a3bc224e5e5a8d">BitCount</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of significant bits = floor(log2(abs(*this))) + 1 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea4f2d31725ab02c67d9ea0288767670"></a><!-- doxytag: member="Integer::ByteCount" ref="aea4f2d31725ab02c67d9ea0288767670" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aea4f2d31725ab02c67d9ea0288767670">ByteCount</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of significant bytes = ceiling(<a class="el" href="class_integer.html#a178398002ab175e788a3bc224e5e5a8d" title="number of significant bits = floor(log2(abs(*this))) + 1">BitCount()</a>/8) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ecc9cc334b338ee805f91e6b289396"></a><!-- doxytag: member="Integer::WordCount" ref="aa8ecc9cc334b338ee805f91e6b289396" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#aa8ecc9cc334b338ee805f91e6b289396">WordCount</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of significant words = ceiling(<a class="el" href="class_integer.html#aea4f2d31725ab02c67d9ea0288767670" title="number of significant bytes = ceiling(BitCount()/8)">ByteCount()</a>/sizeof(word)) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2814c3b82849bd8f6f44cc36974f1717"></a><!-- doxytag: member="Integer::GetBit" ref="a2814c3b82849bd8f6f44cc36974f1717" args="(size_t i) const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2814c3b82849bd8f6f44cc36974f1717">GetBit</a> (size_t i) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the i-th bit, i=0 being the least significant bit <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95fad23b0d8a06325ca2893300c9b45e"></a><!-- doxytag: member="Integer::GetByte" ref="a95fad23b0d8a06325ca2893300c9b45e" args="(size_t i) const " -->
byte&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a95fad23b0d8a06325ca2893300c9b45e">GetByte</a> (size_t i) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the i-th byte <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66049970ba544ce8178f9c7d69776b23"></a><!-- doxytag: member="Integer::GetBits" ref="a66049970ba544ce8178f9c7d69776b23" args="(size_t i, size_t n) const " -->
lword&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a66049970ba544ce8178f9c7d69776b23">GetBits</a> (size_t i, size_t n) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return n lowest bits of *this &gt;&gt; i <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d70dd43a65cfec05f5563daa43fd104"></a><!-- doxytag: member="Integer::IsZero" ref="a6d70dd43a65cfec05f5563daa43fd104" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>IsZero</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00b920fd1854a8a1a5be234edebfd8e2"></a><!-- doxytag: member="Integer::NotZero" ref="a00b920fd1854a8a1a5be234edebfd8e2" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>NotZero</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7118a72cd6ac315a17ebe03316f25186"></a><!-- doxytag: member="Integer::IsNegative" ref="a7118a72cd6ac315a17ebe03316f25186" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>IsNegative</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c7691b0c0f9a26b7343c46be1665a35"></a><!-- doxytag: member="Integer::NotNegative" ref="a9c7691b0c0f9a26b7343c46be1665a35" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>NotNegative</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74fcb4d6ac90900a049937113036f527"></a><!-- doxytag: member="Integer::IsPositive" ref="a74fcb4d6ac90900a049937113036f527" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>IsPositive</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af202b82ae0c4149ca05eccbe200d2e99"></a><!-- doxytag: member="Integer::NotPositive" ref="af202b82ae0c4149ca05eccbe200d2e99" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>NotPositive</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a135da78466ea269cdc803fca1cc78129"></a><!-- doxytag: member="Integer::IsEven" ref="a135da78466ea269cdc803fca1cc78129" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>IsEven</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee32e0b261b2558cf0fd5f3077e68a3b"></a><!-- doxytag: member="Integer::IsOdd" ref="aee32e0b261b2558cf0fd5f3077e68a3b" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>IsOdd</b> () const </td></tr>
<tr><td colspan="2"><h2>MANIPULATORS</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp96fa225bbaf7975cba24829e8ce78daf"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96a2740dadac69f6ff374feb071a94ec"></a><!-- doxytag: member="Integer::operator=" ref="a96a2740dadac69f6ff374feb071a94ec" args="(const Integer &amp;t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37047060547d744b74f15649fbae6ea3"></a><!-- doxytag: member="Integer::operator+=" ref="a37047060547d744b74f15649fbae6ea3" args="(const Integer &amp;t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator+=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9951406a1fe063627d3293b27f8c1441"></a><!-- doxytag: member="Integer::operator&#45;=" ref="a9951406a1fe063627d3293b27f8c1441" args="(const Integer &amp;t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator-=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb1320901d7bbf1ee52bf27bacdfb9df"></a><!-- doxytag: member="Integer::operator*=" ref="adb1320901d7bbf1ee52bf27bacdfb9df" args="(const Integer &amp;t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator*=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80e968a9c7afc4979fe2148170ec7458"></a><!-- doxytag: member="Integer::operator/=" ref="a80e968a9c7afc4979fe2148170ec7458" args="(const Integer &amp;t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator/=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a468142f7860854f6e97910af4eb2b220"></a><!-- doxytag: member="Integer::operator%=" ref="a468142f7860854f6e97910af4eb2b220" args="(const Integer &amp;t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator%=</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fcad58a76f3cedc4134a18d56ebb808"></a><!-- doxytag: member="Integer::operator/=" ref="a6fcad58a76f3cedc4134a18d56ebb808" args="(word t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator/=</b> (word t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3874b6ac8979328ce532eebc8b275eab"></a><!-- doxytag: member="Integer::operator%=" ref="a3874b6ac8979328ce532eebc8b275eab" args="(word t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator%=</b> (word t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2d8542b96b5a40ea740ccf7f1bf4129"></a><!-- doxytag: member="Integer::operator&lt;&lt;=" ref="ad2d8542b96b5a40ea740ccf7f1bf4129" args="(size_t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;=</b> (size_t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9dbbe7f79b702f8a9981a9297188875e"></a><!-- doxytag: member="Integer::operator&gt;&gt;=" ref="a9dbbe7f79b702f8a9981a9297188875e" args="(size_t)" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;=</b> (size_t)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f0574b9cae3cddf62c155da93085f0d"></a><!-- doxytag: member="Integer::Randomize" ref="a0f0574b9cae3cddf62c155da93085f0d" args="(RandomNumberGenerator &amp;rng, size_t bitcount)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>Randomize</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, size_t bitcount)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae8e0904d1752629f59f0343507c7f8b"></a><!-- doxytag: member="Integer::Randomize" ref="aae8e0904d1752629f59f0343507c7f8b" args="(RandomNumberGenerator &amp;rng, const Integer &amp;min, const Integer &amp;max)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>Randomize</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const <a class="el" href="class_integer.html">Integer</a> &amp;min, const <a class="el" href="class_integer.html">Integer</a> &amp;max)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a83dd6a11aa51d545ce2735777787b622">Randomize</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const <a class="el" href="class_integer.html">Integer</a> &amp;min, const <a class="el" href="class_integer.html">Integer</a> &amp;max, RandomNumberType rnType, const <a class="el" href="class_integer.html">Integer</a> &amp;equiv=Zero(), const <a class="el" href="class_integer.html">Integer</a> &amp;mod=One())</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set this <a class="el" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> to a random element of {x | min &lt;= x &lt;= max and x is of rnType and x % mod == equiv}  <a href="#a83dd6a11aa51d545ce2735777787b622"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad330521e84a900a80e8dd90e97796e17"></a><!-- doxytag: member="Integer::GenerateRandomNoThrow" ref="ad330521e84a900a80e8dd90e97796e17" args="(RandomNumberGenerator &amp;rng, const NameValuePairs &amp;params=g_nullNameValuePairs)" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>GenerateRandomNoThrow</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params=<a class="el" href="cryptlib_8h.html#ad3205973dd1afa14090a683154c1109c">g_nullNameValuePairs</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d9a427fe64a454b11b24fe61c10dbeb"></a><!-- doxytag: member="Integer::GenerateRandom" ref="a0d9a427fe64a454b11b24fe61c10dbeb" args="(RandomNumberGenerator &amp;rng, const NameValuePairs &amp;params=g_nullNameValuePairs)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>GenerateRandom</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params=<a class="el" href="cryptlib_8h.html#ad3205973dd1afa14090a683154c1109c">g_nullNameValuePairs</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f0d5fae94eba0c55da9bd1c5138d155"></a><!-- doxytag: member="Integer::SetBit" ref="a2f0d5fae94eba0c55da9bd1c5138d155" args="(size_t n, bool value=1)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a2f0d5fae94eba0c55da9bd1c5138d155">SetBit</a> (size_t n, bool value=1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the n-th bit to value <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ff987d783a61f52c8c5d57b324a8d45"></a><!-- doxytag: member="Integer::SetByte" ref="a0ff987d783a61f52c8c5d57b324a8d45" args="(size_t n, byte value)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a0ff987d783a61f52c8c5d57b324a8d45">SetByte</a> (size_t n, byte value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set the n-th byte to value <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87410093addf9a2253fe07b39b918b02"></a><!-- doxytag: member="Integer::Negate" ref="a87410093addf9a2253fe07b39b918b02" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>Negate</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ba4496f4ae1392c3860d3bcbba586c1"></a><!-- doxytag: member="Integer::SetPositive" ref="a8ba4496f4ae1392c3860d3bcbba586c1" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>SetPositive</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a860dd1318ef7089d774674f2100c8fb8"></a><!-- doxytag: member="Integer::SetNegative" ref="a860dd1318ef7089d774674f2100c8fb8" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>SetNegative</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf1e9c170e56841ce73d137c12675f9b"></a><!-- doxytag: member="Integer::swap" ref="abf1e9c170e56841ce73d137c12675f9b" args="(Integer &amp;a)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="class_integer.html">Integer</a> &amp;a)</td></tr>
<tr><td colspan="2"><h2>UNARY OPERATORS</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrpf2e24c7f281b06b6998903e7b5569b30"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af38f3bf1d96507458e5479b24174c08c"></a><!-- doxytag: member="Integer::operator!" ref="af38f3bf1d96507458e5479b24174c08c" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator!</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0af6f7034ff425fd4e2e6863ab13f198"></a><!-- doxytag: member="Integer::operator+" ref="a0af6f7034ff425fd4e2e6863ab13f198" args="() const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator+</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56b6d34f3b1e76c59f1413d7d91465b1"></a><!-- doxytag: member="Integer::operator&#45;" ref="a56b6d34f3b1e76c59f1413d7d91465b1" args="() const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator-</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4290bf7f6763b27a51e216bdbfdea68f"></a><!-- doxytag: member="Integer::operator++" ref="a4290bf7f6763b27a51e216bdbfdea68f" args="()" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator++</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b3dd03530b31f3839c75dcdc4322ee6"></a><!-- doxytag: member="Integer::operator&#45;&#45;" ref="a5b3dd03530b31f3839c75dcdc4322ee6" args="()" -->
<a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator--</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1666444f09484e482b2f94dd263c7dc9"></a><!-- doxytag: member="Integer::operator++" ref="a1666444f09484e482b2f94dd263c7dc9" args="(int)" -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator++</b> (int)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a000120734ad8ba84af5c5ac7f5f84925"></a><!-- doxytag: member="Integer::operator&#45;&#45;" ref="a000120734ad8ba84af5c5ac7f5f84925" args="(int)" -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator--</b> (int)</td></tr>
<tr><td colspan="2"><h2>BINARY OPERATORS</h2></td></tr>
<tr><td colspan="2"><p><a class="anchor" id="amgrp9e1d9554636126ae321e225d1d24c447"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_integer.html#a550cf80410789dc459df82387792ed49">Compare</a> (const <a class="el" href="class_integer.html">Integer</a> &amp;a) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">signed comparison  <a href="#a550cf80410789dc459df82387792ed49"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e294ba5adf2c733e4185fc9c497ff2a"></a><!-- doxytag: member="Integer::Plus" ref="a9e294ba5adf2c733e4185fc9c497ff2a" args="(const Integer &amp;b) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Plus</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;b) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf500b571832a4a29315837c94ccada3"></a><!-- doxytag: member="Integer::Minus" ref="aaf500b571832a4a29315837c94ccada3" args="(const Integer &amp;b) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Minus</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;b) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7547efdb8c45c6b033bfb1a0d5141e6"></a><!-- doxytag: member="Integer::Times" ref="aa7547efdb8c45c6b033bfb1a0d5141e6" args="(const Integer &amp;b) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Times</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;b) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a6d4284d05d6377cbf6a07611a57545"></a><!-- doxytag: member="Integer::DividedBy" ref="a9a6d4284d05d6377cbf6a07611a57545" args="(const Integer &amp;b) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>DividedBy</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;b) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a850606c271d06678f98c98ecc0f0ac23"></a><!-- doxytag: member="Integer::Modulo" ref="a850606c271d06678f98c98ecc0f0ac23" args="(const Integer &amp;b) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>Modulo</b> (const <a class="el" href="class_integer.html">Integer</a> &amp;b) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16dab535de7a1ce00f2cb84da79d88db"></a><!-- doxytag: member="Integer::DividedBy" ref="a16dab535de7a1ce00f2cb84da79d88db" args="(word b) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>DividedBy</b> (word b) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50e1b59012582912ff015cc083d50a50"></a><!-- doxytag: member="Integer::Modulo" ref="a50e1b59012582912ff015cc083d50a50" args="(word b) const " -->
word&nbsp;</td><td class="memItemRight" valign="bottom"><b>Modulo</b> (word b) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d73ebaa15061b4d251c8cdee218ea26"></a><!-- doxytag: member="Integer::operator&gt;&gt;" ref="a5d73ebaa15061b4d251c8cdee218ea26" args="(size_t n) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&gt;&gt;</b> (size_t n) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3ad44e1538d8d1a0eb55a502588026f"></a><!-- doxytag: member="Integer::operator&lt;&lt;" ref="ad3ad44e1538d8d1a0eb55a502588026f" args="(size_t n) const " -->
<a class="el" href="class_integer.html">Integer</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (size_t n) const </td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>multiple precision integer and basic arithmetics </p>
<p>This class can represent positive and negative integers with absolute value less than (256**sizeof(word)) ** (256**sizeof(int)). </p>

<p>Definition at line <a class="el" href="integer_8h_source.html#l00026">26</a> of file <a class="el" href="integer_8h_source.html">integer.h</a>.</p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a9e8bf8c72458dff4ceb5d6cdf9e5c97a"></a><!-- doxytag: member="Integer::Integer" ref="a9e8bf8c72458dff4ceb5d6cdf9e5c97a" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Integer::Integer </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [explicit]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>convert from string </p>
<p>str can be in base 2, 8, 10, or 16. Base is determined by a case insensitive suffix of 'h', 'o', or 'b'. No suffix means base 10. </p>

<p>Definition at line <a class="el" href="integer_8cpp_source.html#l03040">3040</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aeb4abb834e9e897a28850d2081f3fa63"></a><!-- doxytag: member="Integer::Integer" ref="aeb4abb834e9e897a28850d2081f3fa63" args="(RandomNumberGenerator &amp;rng, size_t bitcount)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Integer::Integer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>bitcount</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>create a random integer </p>
<p>The random integer created is uniformly distributed over [0, 2**bitcount). </p>

<p>Definition at line <a class="el" href="integer_8cpp_source.html#l02847">2847</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a88a110cb9f89a8810c228ad00cea18c2"></a><!-- doxytag: member="Integer::Integer" ref="a88a110cb9f89a8810c228ad00cea18c2" args="(RandomNumberGenerator &amp;rng, const Integer &amp;min, const Integer &amp;max, RandomNumberType rnType=ANY, const Integer &amp;equiv=Zero(), const Integer &amp;mod=One())" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Integer::Integer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">RandomNumberType&nbsp;</td>
          <td class="paramname"> <em>rnType</em> = <code>ANY</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>equiv</em> = <code>Zero()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mod</em> = <code>One()</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>create a random integer of special type </p>
<p>Ideally, the random integer created should be uniformly distributed over {x | min &lt;= x &lt;= max and x is of rnType and x % mod == equiv}. However the actual distribution may not be uniform because sequential search is used to find an appropriate number from a random starting point. May return (with very small probability) a pseudoprime when a prime is requested and max &gt; lastSmallPrime*lastSmallPrime (lastSmallPrime is declared in <a class="el" href="nbtheory_8h_source.html">nbtheory.h</a>). </p>
<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="class_integer_1_1_random_number_not_found.html">RandomNumberNotFound</a></em>&nbsp;</td><td>if the set is empty. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="integer_8cpp_source.html#l02852">2852</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="a3b269bbf8a91faf217c0dd76222182bb"></a><!-- doxytag: member="Integer::MinEncodedSize" ref="a3b269bbf8a91faf217c0dd76222182bb" args="(Signedness=UNSIGNED) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t Integer::MinEncodedSize </td>
          <td>(</td>
          <td class="paramtype">Signedness&nbsp;</td>
          <td class="paramname"> <em>signedness</em> = <code>UNSIGNED</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>minimum number of bytes to encode this integer </p>
<p>MinEncodedSize of 0 is 1 </p>

<p>Definition at line <a class="el" href="integer_8cpp_source.html#l03112">3112</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>

<p>References <a class="el" href="integer_8cpp_source.html#l03057">ByteCount()</a>, <a class="el" href="integer_8cpp_source.html#l02928">GetByte()</a>, and <a class="el" href="integer_8cpp_source.html#l02858">Power2()</a>.</p>

<p>Referenced by <a class="el" href="integer_8cpp_source.html#l03145">DEREncode()</a>.</p>

</div>
</div>
<a class="anchor" id="ac12ea467de9a609b86ec03d8cb8837e4"></a><!-- doxytag: member="Integer::Encode" ref="ac12ea467de9a609b86ec03d8cb8837e4" args="(byte *output, size_t outputLen, Signedness=UNSIGNED) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Integer::Encode </td>
          <td>(</td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>output</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>outputLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Signedness&nbsp;</td>
          <td class="paramname"> <em>signedness</em> = <code>UNSIGNED</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>encode in big-endian format </p>
<p>unsigned means encode absolute value, signed means encode two's complement if negative. if outputLen &lt; MinEncodedSize, the most significant bytes will be dropped if outputLen &gt; MinEncodedSize, the most significant bytes will be padded </p>

<p>Definition at line <a class="el" href="integer_8cpp_source.html#l03124">3124</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>

<p>Referenced by <a class="el" href="pubkey_8cpp_source.html#l00135">TF_DecryptorBase::Decrypt()</a>, <a class="el" href="integer_8cpp_source.html#l03145">DEREncode()</a>, <a class="el" href="integer_8cpp_source.html#l03167">DEREncodeAsOctetString()</a>, <a class="el" href="dsa_8cpp_source.html#l00012">DSAConvertSignatureFormat()</a>, <a class="el" href="pubkey_8cpp_source.html#l00145">TF_EncryptorBase::Encrypt()</a>, <a class="el" href="xtrcrypt_8cpp_source.html#l00077">XTR_DH::GeneratePrivateKey()</a>, <a class="el" href="pubkey_8h_source.html#l01386">DL_SimpleKeyAgreementDomainBase&lt; GROUP_PARAMETERS::Element &gt;::GeneratePrivateKey()</a>, <a class="el" href="mqv_8h_source.html#l00049">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;::GenerateStaticPrivateKey()</a>, <a class="el" href="pubkey_8cpp_source.html#l00089">TF_VerifierBase::InputSignature()</a>, <a class="el" href="integer_8cpp_source.html#l03189">OpenPGPEncode()</a>, <a class="el" href="pubkey_8h_source.html#l01119">DL_VerifierBase&lt; SCHEME_OPTIONS::Element &gt;::RecoverAndRestart()</a>, and <a class="el" href="pubkey_8cpp_source.html#l00067">TF_SignerBase::SignAndRestart()</a>.</p>

</div>
</div>
<a class="anchor" id="a83dd6a11aa51d545ce2735777787b622"></a><!-- doxytag: member="Integer::Randomize" ref="a83dd6a11aa51d545ce2735777787b622" args="(RandomNumberGenerator &amp;rng, const Integer &amp;min, const Integer &amp;max, RandomNumberType rnType, const Integer &amp;equiv=Zero(), const Integer &amp;mod=One())" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Integer::Randomize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">RandomNumberType&nbsp;</td>
          <td class="paramname"> <em>rnType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>equiv</em> = <code>Zero()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mod</em> = <code>One()</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>set this <a class="el" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> to a random element of {x | min &lt;= x &lt;= max and x is of rnType and x % mod == equiv} </p>
<p>returns false if the set is empty </p>

<p>Definition at line <a class="el" href="integer_8cpp_source.html#l03239">3239</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a550cf80410789dc459df82387792ed49"></a><!-- doxytag: member="Integer::Compare" ref="a550cf80410789dc459df82387792ed49" args="(const Integer &amp;a) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Integer::Compare </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_integer.html">Integer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>a</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>signed comparison </p>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>if *this &lt; a </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>if *this = a </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>if *this &gt; a </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="integer_8cpp_source.html#l03902">3902</a> of file <a class="el" href="integer_8cpp_source.html">integer.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ab8446b61690a19015d3d565d86dd1d3d"></a><!-- doxytag: member="Integer::BEREncode" ref="ab8446b61690a19015d3d565d86dd1d3d" args="(BufferedTransformation &amp;bt) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ASN1Object::BEREncode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bt</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>encode this object into a <a class="el" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a>, using BER </p>
<p>this may be useful if <a class="el" href="class_a_s_n1_object.html#a10e40187a6ba048dfc8a2c8ca5c6c2ec" title="encode this object into a BufferedTransformation, using DER (Distinguished Encoding...">DEREncode()</a> would be too inefficient </p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l01657">1657</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="integer_8h_source.html">integer.h</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 9 Dec 2009 for Crypto++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>