<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Crypto++: PolynomialMod2 class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.7 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div> <h1>PolynomialMod2 Class Reference</h1><code>#include <<a class="el" href="gf2n_8h-source.html">gf2n.h</a>></code> <p> <a href="class_polynomial_mod2-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2> Polynomial with Coefficients in GF(2). <p> <p> <p> Definition at line <a class="el" href="gf2n_8h-source.html#l00017">17</a> of file <a class="el" href="gf2n_8h-source.html">gf2n.h</a>.<table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>ENUMS, EXCEPTIONS, and TYPEDEFS</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z17_0" doxytag="PolynomialMod2::RandomizationParameter" ></a> typedef unsigned int </td><td class="memItemRight" valign=bottom><b>RandomizationParameter</b></td></tr> <tr><td colspan=2><br><h2>CREATORS</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_0" doxytag="PolynomialMod2::PolynomialMod2" ></a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_0">PolynomialMod2</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">creates the zero polynomial <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_1" doxytag="PolynomialMod2::PolynomialMod2" ></a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_1">PolynomialMod2</a> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">copy constructor <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_2">PolynomialMod2</a> (word value, unsigned int bitLength=WORD_BITS)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from word <a href="#_polynomial_mod2z19_2"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_3" doxytag="PolynomialMod2::PolynomialMod2" ></a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_3">PolynomialMod2</a> (const byte *encodedPoly, unsigned int byteCount)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from big-endian byte array <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_4" doxytag="PolynomialMod2::PolynomialMod2" ></a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_4">PolynomialMod2</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &encodedPoly, unsigned int byteCount)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert from big-endian form stored in a <a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_5" doxytag="PolynomialMod2::PolynomialMod2" ></a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_5">PolynomialMod2</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, unsigned int bitcount)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">create a random polynomial uniformly distributed over all polynomials with degree less than bitcount <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_6" doxytag="PolynomialMod2::Monomial" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_6">Monomial</a> (unsigned i)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return x^i <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_7" doxytag="PolynomialMod2::Trinomial" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_7">Trinomial</a> (unsigned t0, unsigned t1, unsigned t2)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return x^t0 + x^t1 + x^t2 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_8" doxytag="PolynomialMod2::Pentanomial" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_8">Pentanomial</a> (unsigned t0, unsigned t1, unsigned t2, unsigned int t3, unsigned int t4)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return x^t0 + x^t1 + x^t2 + x^t3 + x^t4 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_9" doxytag="PolynomialMod2::AllOnes" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z19_9">AllOnes</a> (unsigned n)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return x^(n-1) + ... + x + 1 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_10" doxytag="PolynomialMod2::Zero" ></a> const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>Zero</b> ()</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z19_11" doxytag="PolynomialMod2::One" ></a> const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>One</b> ()</td></tr> <tr><td colspan=2><br><h2>ENCODE/DECODE</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z21_0">MinEncodedSize</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">minimum number of bytes to encode this polynomial <a href="#_polynomial_mod2z21_0"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z21_1">Encode</a> (byte *output, unsigned int outputLen) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode in big-endian format <a href="#_polynomial_mod2z21_1"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z21_2" doxytag="PolynomialMod2::Encode" ></a> unsigned int </td><td class="memItemRight" valign=bottom><b>Encode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, unsigned int outputLen) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z21_3" doxytag="PolynomialMod2::Decode" ></a> void </td><td class="memItemRight" valign=bottom><b>Decode</b> (const byte *input, unsigned int inputLen)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z21_4" doxytag="PolynomialMod2::Decode" ></a> void </td><td class="memItemRight" valign=bottom><b>Decode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, unsigned int inputLen)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z21_5" doxytag="PolynomialMod2::DEREncodeAsOctetString" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z21_5">DEREncodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, unsigned int length) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">encode value as big-endian octet string <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z21_6" doxytag="PolynomialMod2::BERDecodeAsOctetString" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z21_6">BERDecodeAsOctetString</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, unsigned int length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">decode value as big-endian octet string <br><br></td></tr> <tr><td colspan=2><br><h2>ACCESSORS</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_0" doxytag="PolynomialMod2::BitCount" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_0">BitCount</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">number of significant bits = Degree() + 1 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_1" doxytag="PolynomialMod2::ByteCount" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_1">ByteCount</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">number of significant bytes = ceiling(BitCount()/8) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_2" doxytag="PolynomialMod2::WordCount" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_2">WordCount</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">number of significant words = ceiling(ByteCount()/sizeof(word)) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_3" doxytag="PolynomialMod2::GetBit" ></a> bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_3">GetBit</a> (unsigned int n) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the n-th bit, n=0 being the least significant bit <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_4" doxytag="PolynomialMod2::GetByte" ></a> byte </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_4">GetByte</a> (unsigned int n) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the n-th byte <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_5" doxytag="PolynomialMod2::Degree" ></a> signed int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_5">Degree</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">the zero polynomial will return a degree of -1 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_6" doxytag="PolynomialMod2::CoefficientCount" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_6">CoefficientCount</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">degree + 1 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_7" doxytag="PolynomialMod2::GetCoefficient" ></a> int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_7">GetCoefficient</a> (unsigned int i) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return coefficient for x^i <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_8" doxytag="PolynomialMod2::operator[]" ></a> int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z23_8">operator[]</a> (unsigned int i) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return coefficient for x^i <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_9" doxytag="PolynomialMod2::IsZero" ></a> bool </td><td class="memItemRight" valign=bottom><b>IsZero</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z23_10" doxytag="PolynomialMod2::Equals" ></a> bool </td><td class="memItemRight" valign=bottom><b>Equals</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &rhs) const</td></tr> <tr><td colspan=2><br><h2>MANIPULATORS</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_0" doxytag="PolynomialMod2::operator=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_1" doxytag="PolynomialMod2::operator &=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator &=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_2" doxytag="PolynomialMod2::operator^=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator^=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_3" doxytag="PolynomialMod2::operator+=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator+=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_4" doxytag="PolynomialMod2::operator-=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator-=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_5" doxytag="PolynomialMod2::operator *=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator *=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_6" doxytag="PolynomialMod2::operator/=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator/=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_7" doxytag="PolynomialMod2::operator%=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator%=</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &t)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_8" doxytag="PolynomialMod2::operator<<=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator<<=</b> (unsigned int)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_9" doxytag="PolynomialMod2::operator>>=" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> & </td><td class="memItemRight" valign=bottom><b>operator>>=</b> (unsigned int)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_10" doxytag="PolynomialMod2::Randomize" ></a> void </td><td class="memItemRight" valign=bottom><b>Randomize</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, unsigned int bitcount)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_11" doxytag="PolynomialMod2::SetBit" ></a> void </td><td class="memItemRight" valign=bottom><b>SetBit</b> (unsigned int i, int value=1)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_12" doxytag="PolynomialMod2::SetByte" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z25_12">SetByte</a> (unsigned int n, byte value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set the n-th byte to value <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_13" doxytag="PolynomialMod2::SetCoefficient" ></a> void </td><td class="memItemRight" valign=bottom><b>SetCoefficient</b> (unsigned int i, int value)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z25_14" doxytag="PolynomialMod2::swap" ></a> void </td><td class="memItemRight" valign=bottom><b>swap</b> (<a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &a)</td></tr> <tr><td colspan=2><br><h2>UNARY OPERATORS</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z27_0" doxytag="PolynomialMod2::operator!" ></a> bool </td><td class="memItemRight" valign=bottom><b>operator!</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z27_1" doxytag="PolynomialMod2::operator+" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>operator+</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z27_2" doxytag="PolynomialMod2::operator-" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>operator-</b> () const</td></tr> <tr><td colspan=2><br><h2>BINARY OPERATORS</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_0" doxytag="PolynomialMod2::And" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>And</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &b) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_1" doxytag="PolynomialMod2::Xor" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>Xor</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &b) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_2" doxytag="PolynomialMod2::Plus" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>Plus</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &b) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_3" doxytag="PolynomialMod2::Minus" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>Minus</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &b) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_4" doxytag="PolynomialMod2::Times" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>Times</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &b) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_5" doxytag="PolynomialMod2::DividedBy" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>DividedBy</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &b) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_6" doxytag="PolynomialMod2::Modulo" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>Modulo</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &b) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_7" doxytag="PolynomialMod2::operator>>" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>operator>></b> (unsigned int n) const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z29_8" doxytag="PolynomialMod2::operator<<" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>operator<<</b> (unsigned int n) const</td></tr> <tr><td colspan=2><br><h2>OTHER ARITHMETIC FUNCTIONS</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_0" doxytag="PolynomialMod2::Parity" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_0">Parity</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">sum modulo 2 of all coefficients <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_1" doxytag="PolynomialMod2::IsIrreducible" ></a> bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_1">IsIrreducible</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">check for irreducibility <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_2" doxytag="PolynomialMod2::Doubled" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_2">Doubled</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">is always zero since we're working modulo 2 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_3" doxytag="PolynomialMod2::Squared" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><b>Squared</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_4" doxytag="PolynomialMod2::IsUnit" ></a> bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_4">IsUnit</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">only 1 is a unit <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_5" doxytag="PolynomialMod2::MultiplicativeInverse" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_5">MultiplicativeInverse</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return inverse if *this is a unit, otherwise return 0 <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_6" doxytag="PolynomialMod2::InverseMod" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_6">InverseMod</a> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">calculate multiplicative inverse of *this mod n <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_7" doxytag="PolynomialMod2::Gcd" ></a> <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_7">Gcd</a> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &a, const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &n)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">greatest common divisor <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z31_8" doxytag="PolynomialMod2::Divide" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_polynomial_mod2.html#_polynomial_mod2z31_8">Divide</a> (<a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &r, <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &q, const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &a, const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">calculate r and q such that (a == d*q + r) && (deg(r) < deg(d)) <br><br></td></tr> <tr><td colspan=2><br><h2>INPUT/OUTPUT</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_polynomial_mod2z33_0" doxytag="PolynomialMod2::operator<<" ></a> std::ostream & </td><td class="memItemRight" valign=bottom><b>operator<<</b> (std::ostream &out, const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &a)</td></tr> </table> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="_polynomial_mod2z19_2" doxytag="PolynomialMod2::PolynomialMod2" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> PolynomialMod2::PolynomialMod2 </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">word </td> <td class="mdname" nowrap> <em>value</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>unsigned int </td> <td class="mdname" nowrap> <em>bitLength</em> = <code>WORD_BITS</code></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> convert from word <p> value should be encoded with the least significant bit as coefficient to x^0 and most significant bit as coefficient to x^(WORD_BITS-1) bitLength denotes how much memory to allocate initially <p> Definition at line <a class="el" href="gf2n_8cpp-source.html#l00022">22</a> of file <a class="el" href="gf2n_8cpp-source.html">gf2n.cpp</a>. <p> References <a class="el" href="secblock_8h-source.html#l00274">SecBlock< T, A >::size()</a>. </td> </tr> </table> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="_polynomial_mod2z21_0" doxytag="PolynomialMod2::MinEncodedSize" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> unsigned int PolynomialMod2::MinEncodedSize </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> minimum number of bytes to encode this polynomial <p> MinEncodedSize of 0 is 1 <p> Definition at line <a class="el" href="gf2n_8h-source.html#l00077">77</a> of file <a class="el" href="gf2n_8h-source.html">gf2n.h</a>. </td> </tr> </table> <a class="anchor" name="_polynomial_mod2z21_1" doxytag="PolynomialMod2::Encode" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> unsigned int PolynomialMod2::Encode </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">byte * </td> <td class="mdname" nowrap> <em>output</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>unsigned int </td> <td class="mdname" nowrap> <em>outputLen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const</td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> encode in big-endian format <p> if outputLen < MinEncodedSize, the most significant bytes will be dropped if outputLen > MinEncodedSize, the most significant bytes will be padded <p> Definition at line <a class="el" href="gf2n_8cpp-source.html#l00139">139</a> of file <a class="el" href="gf2n_8cpp-source.html">gf2n.cpp</a>. <p> References <a class="el" href="gf2n_8cpp-source.html#l00139">Encode()</a>. <p> Referenced by <a class="el" href="gf2n_8cpp-source.html#l00164">DEREncodeAsOctetString()</a>, and <a class="el" href="gf2n_8cpp-source.html#l00139">Encode()</a>. </td> </tr> </table> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="gf2n_8h-source.html">gf2n.h</a><li><a class="el" href="gf2n_8cpp-source.html">gf2n.cpp</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:24:07 2004 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address> </body> </html>