<!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++: QuotientRing< T > Class Template Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main 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 List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="contents"> <h1>QuotientRing< T > Class Template Reference</h1><!-- doxytag: class="QuotientRing" --><!-- doxytag: inherits="AbstractRing< T::Element >" --> <p>Quotient Ring. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="algebra_8h_source.html">algebra.h</a>></code></p> <div class="dynheader"> Inheritance diagram for QuotientRing< T >:</div> <div class="dynsection"> <div class="center"> <img src="class_quotient_ring.gif" usemap="#QuotientRing< T >_map" alt=""/> <map id="QuotientRing< T >_map" name="QuotientRing< T >_map"> <area href="class_abstract_ring.html" alt="AbstractRing< T::Element >" shape="rect" coords="0,56,175,80"/> <area href="class_abstract_group.html" alt="AbstractGroup< T::Element >" shape="rect" coords="0,0,175,24"/> </map> </div> </div> <p><a href="class_quotient_ring-members.html">List of all members.</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeba485b8efc03cb16525c389519833e1"></a><!-- doxytag: member="QuotientRing::EuclideanDomain" ref="aeba485b8efc03cb16525c389519833e1" args="" --> typedef T </td><td class="memItemRight" valign="bottom"><b>EuclideanDomain</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5fc43636ce1b8ab3c8aa4ec309242e0"></a><!-- doxytag: member="QuotientRing::Element" ref="aa5fc43636ce1b8ab3c8aa4ec309242e0" args="" --> typedef T::Element </td><td class="memItemRight" valign="bottom"><b>Element</b></td></tr> <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad75b4078b485d09683b5c9eec944a714"></a><!-- doxytag: member="QuotientRing::QuotientRing" ref="ad75b4078b485d09683b5c9eec944a714" args="(const EuclideanDomain &domain, const Element &modulus)" --> </td><td class="memItemRight" valign="bottom"><b>QuotientRing</b> (const EuclideanDomain &domain, const Element &modulus)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6aba5afdb504051dddeb9704bd02c490"></a><!-- doxytag: member="QuotientRing::GetDomain" ref="a6aba5afdb504051dddeb9704bd02c490" args="() const " --> const EuclideanDomain & </td><td class="memItemRight" valign="bottom"><b>GetDomain</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79d382173484c284cac62d8fb341e68d"></a><!-- doxytag: member="QuotientRing::GetModulus" ref="a79d382173484c284cac62d8fb341e68d" args="() const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>GetModulus</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27c74d4476883847533c49acbc628822"></a><!-- doxytag: member="QuotientRing::Equal" ref="a27c74d4476883847533c49acbc628822" args="(const Element &a, const Element &b) const " --> bool </td><td class="memItemRight" valign="bottom"><b>Equal</b> (const Element &a, const Element &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af569e328dd07b9c1758633c742ca178e"></a><!-- doxytag: member="QuotientRing::Identity" ref="af569e328dd07b9c1758633c742ca178e" args="() const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>Identity</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a455b3ef5b970e6f9af4e7b947dc3e89e"></a><!-- doxytag: member="QuotientRing::Add" ref="a455b3ef5b970e6f9af4e7b947dc3e89e" args="(const Element &a, const Element &b) const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>Add</b> (const Element &a, const Element &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a516445c6cd0a881edc97de6fc99ea4a7"></a><!-- doxytag: member="QuotientRing::Accumulate" ref="a516445c6cd0a881edc97de6fc99ea4a7" args="(Element &a, const Element &b) const " --> Element & </td><td class="memItemRight" valign="bottom"><b>Accumulate</b> (Element &a, const Element &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32a8f4858aa802ef080984b5a00be015"></a><!-- doxytag: member="QuotientRing::Inverse" ref="a32a8f4858aa802ef080984b5a00be015" args="(const Element &a) const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>Inverse</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84eadc2e3d6c726ce402a5bf4ec854df"></a><!-- doxytag: member="QuotientRing::Subtract" ref="a84eadc2e3d6c726ce402a5bf4ec854df" args="(const Element &a, const Element &b) const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>Subtract</b> (const Element &a, const Element &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f91d1daa995dbe41f7526d88c377977"></a><!-- doxytag: member="QuotientRing::Reduce" ref="a3f91d1daa995dbe41f7526d88c377977" args="(Element &a, const Element &b) const " --> Element & </td><td class="memItemRight" valign="bottom"><b>Reduce</b> (Element &a, const Element &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8789051cffe054f0edf5e9ac7d9cb686"></a><!-- doxytag: member="QuotientRing::Double" ref="a8789051cffe054f0edf5e9ac7d9cb686" args="(const Element &a) const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>Double</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8732f66da8d4cef1932d2738a5583ad"></a><!-- doxytag: member="QuotientRing::IsUnit" ref="af8732f66da8d4cef1932d2738a5583ad" args="(const Element &a) const " --> bool </td><td class="memItemRight" valign="bottom"><b>IsUnit</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76393d59a5d54a8138ecf9a12bc03f84"></a><!-- doxytag: member="QuotientRing::MultiplicativeIdentity" ref="a76393d59a5d54a8138ecf9a12bc03f84" args="() const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>MultiplicativeIdentity</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9743b3bec9033de1243205cb0178a8a0"></a><!-- doxytag: member="QuotientRing::Multiply" ref="a9743b3bec9033de1243205cb0178a8a0" args="(const Element &a, const Element &b) const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>Multiply</b> (const Element &a, const Element &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4b1b1638b50483bf4904fc909f54883"></a><!-- doxytag: member="QuotientRing::Square" ref="aa4b1b1638b50483bf4904fc909f54883" args="(const Element &a) const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>Square</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4188ae1dccb83f17c118748afd60df8"></a><!-- doxytag: member="QuotientRing::MultiplicativeInverse" ref="ac4188ae1dccb83f17c118748afd60df8" args="(const Element &a) const " --> const Element & </td><td class="memItemRight" valign="bottom"><b>MultiplicativeInverse</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a847f1d958a70c9caf1713321a6055c52"></a><!-- doxytag: member="QuotientRing::operator==" ref="a847f1d958a70c9caf1713321a6055c52" args="(const QuotientRing< T > &rhs) const " --> bool </td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="class_quotient_ring.html">QuotientRing</a>< T > &rhs) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3240b133d9df74c34868c11901b304fe"></a><!-- doxytag: member="QuotientRing::Divide" ref="a3240b133d9df74c34868c11901b304fe" args="(const Element &a, const Element &b) const" --> virtual const Element & </td><td class="memItemRight" valign="bottom"><b>Divide</b> (const Element &a, const Element &b) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23be7c80484bc46fd8beaa0a6aefa66d"></a><!-- doxytag: member="QuotientRing::Exponentiate" ref="a23be7c80484bc46fd8beaa0a6aefa66d" args="(const Element &a, const Integer &e) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>Exponentiate</b> (const Element &a, const <a class="el" href="class_integer.html">Integer</a> &e) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbe859e24ea6ee1e22ed2a1261f7f9d0"></a><!-- doxytag: member="QuotientRing::CascadeExponentiate" ref="acbe859e24ea6ee1e22ed2a1261f7f9d0" args="(const Element &x, const Integer &e1, const Element &y, const Integer &e2) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>CascadeExponentiate</b> (const Element &x, const <a class="el" href="class_integer.html">Integer</a> &e1, const Element &y, const <a class="el" href="class_integer.html">Integer</a> &e2) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56b1047d5e1c57d9b3c52e20af464cfe"></a><!-- doxytag: member="QuotientRing::SimultaneousExponentiate" ref="a56b1047d5e1c57d9b3c52e20af464cfe" args="(Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const" --> virtual void </td><td class="memItemRight" valign="bottom"><b>SimultaneousExponentiate</b> (Element *results, const Element &base, const <a class="el" href="class_integer.html">Integer</a> *exponents, unsigned int exponentsCount) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab48b7bf4c39d1b2bd06ac92e71e0b905"></a><!-- doxytag: member="QuotientRing::MultiplicativeGroup" ref="ab48b7bf4c39d1b2bd06ac92e71e0b905" args="() const" --> virtual const <a class="el" href="class_abstract_group.html">AbstractGroup</a><br class="typebreak"/> < T::Element > & </td><td class="memItemRight" valign="bottom"><b>MultiplicativeGroup</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac571ac9b67ad9b7ef893c715b1ec2f43"></a><!-- doxytag: member="QuotientRing::InversionIsFast" ref="ac571ac9b67ad9b7ef893c715b1ec2f43" args="() const" --> virtual bool </td><td class="memItemRight" valign="bottom"><b>InversionIsFast</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf1b8d510593fd5a9e8111580107741b"></a><!-- doxytag: member="QuotientRing::ScalarMultiply" ref="abf1b8d510593fd5a9e8111580107741b" args="(const Element &a, const Integer &e) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>ScalarMultiply</b> (const Element &a, const <a class="el" href="class_integer.html">Integer</a> &e) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca3e1ca578003aff2595cc8d73522894"></a><!-- doxytag: member="QuotientRing::CascadeScalarMultiply" ref="aca3e1ca578003aff2595cc8d73522894" args="(const Element &x, const Integer &e1, const Element &y, const Integer &e2) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>CascadeScalarMultiply</b> (const Element &x, const <a class="el" href="class_integer.html">Integer</a> &e1, const Element &y, const <a class="el" href="class_integer.html">Integer</a> &e2) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00a5cd4b22aab947ec107ec93ad13122"></a><!-- doxytag: member="QuotientRing::SimultaneousMultiply" ref="a00a5cd4b22aab947ec107ec93ad13122" args="(Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const" --> virtual void </td><td class="memItemRight" valign="bottom"><b>SimultaneousMultiply</b> (Element *results, const Element &base, const <a class="el" href="class_integer.html">Integer</a> *exponents, unsigned int exponentsCount) const</td></tr> <tr><td colspan="2"><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa96b7fc70b6b3abbc3a1eca196d7b6c"></a><!-- doxytag: member="QuotientRing::m_domain" ref="afa96b7fc70b6b3abbc3a1eca196d7b6c" args="" --> EuclideanDomain </td><td class="memItemRight" valign="bottom"><b>m_domain</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07127b18d71b1a503e29436fce18e5b4"></a><!-- doxytag: member="QuotientRing::m_modulus" ref="a07127b18d71b1a503e29436fce18e5b4" args="" --> Element </td><td class="memItemRight" valign="bottom"><b>m_modulus</b></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <h3>template<class T><br/> class QuotientRing< T ></h3> <p>Quotient Ring. </p> <p>Definition at line <a class="el" href="algebra_8h_source.html#l00218">218</a> of file <a class="el" href="algebra_8h_source.html">algebra.h</a>.</p> <hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="algebra_8h_source.html">algebra.h</a></li> <li><a class="el" href="algebra_8cpp_source.html">algebra.cpp</a></li> </ul> </div> <hr size="1"/><address style="text-align: right;"><small>Generated on 9 Dec 2009 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address> </body> </html>