📄 algebra_8h-source.html
字号:
<a name="l00214"></a>00214 <span class="keyword">mutable</span> <a class="code" href="class_euclidean_domain_of.html#a7ae3206185edccff8c2e7d56eb9d47b">Element</a> result;<a name="l00215"></a>00215 };<a name="l00216"></a>00216 <span class="comment"></span><a name="l00217"></a>00217 <span class="comment">//! Quotient Ring</span><a name="l00218"></a><a class="code" href="class_quotient_ring.html">00218</a> <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">class </span><a class="code" href="class_quotient_ring.html" title="Quotient Ring.">QuotientRing</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_ring.html" title="Abstract Ring.">AbstractRing</a><typename T::Element><a name="l00219"></a>00219 {<a name="l00220"></a>00220 <span class="keyword">public</span>:<a name="l00221"></a><a class="code" href="class_quotient_ring.html#eba485b8efc03cb16525c389519833e1">00221</a> <span class="keyword">typedef</span> T <a class="code" href="class_euclidean_domain_of.html" title="EuclideanDomainOf.">EuclideanDomain</a>;<a name="l00222"></a><a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">00222</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> T::Element <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>;<a name="l00223"></a>00223 <a name="l00224"></a><a class="code" href="class_quotient_ring.html#d75b4078b485d09683b5c9eec944a714">00224</a> <a class="code" href="class_quotient_ring.html#d75b4078b485d09683b5c9eec944a714">QuotientRing</a>(<span class="keyword">const</span> <a class="code" href="class_euclidean_domain_of.html" title="EuclideanDomainOf.">EuclideanDomain</a> &domain, <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &modulus)<a name="l00225"></a>00225 : <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>(domain), <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>(modulus) {}<a name="l00226"></a>00226 <a name="l00227"></a><a class="code" href="class_quotient_ring.html#7351765fe7217917c25b40bfd29cb7ce">00227</a> <span class="keyword">const</span> <a class="code" href="class_euclidean_domain_of.html" title="EuclideanDomainOf.">EuclideanDomain</a> & <a class="code" href="class_quotient_ring.html#7351765fe7217917c25b40bfd29cb7ce">GetDomain</a>()<span class="keyword"> const</span><a name="l00228"></a>00228 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>;}<a name="l00229"></a>00229 <a name="l00230"></a><a class="code" href="class_quotient_ring.html#251c7b3cdd89ceddd25fb92df81b07c4">00230</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#251c7b3cdd89ceddd25fb92df81b07c4">GetModulus</a>()<span class="keyword"> const</span><a name="l00231"></a>00231 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>;}<a name="l00232"></a>00232 <a name="l00233"></a><a class="code" href="class_quotient_ring.html#95a675aaca290e8cc05a56361c7d56f3">00233</a> <span class="keywordtype">bool</span> <a class="code" href="class_quotient_ring.html#95a675aaca290e8cc05a56361c7d56f3">Equal</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &b)<span class="keyword"> const</span><a name="l00234"></a>00234 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#59813252a0e0a490ea5a0420af5e9cc2">Equal</a>(<a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#f27cd160da0909dca14ffad646672695">Mod</a>(<a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#c44bd3c9af42467bfdd822ef7046bc26">Subtract</a>(a, b), <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>), <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#6d35c27f3e48c24c4cb6f93275f5ed01">Identity</a>());}<a name="l00235"></a>00235 <a name="l00236"></a><a class="code" href="class_quotient_ring.html#80815f5757c80106ae7dc2db2799b835">00236</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#80815f5757c80106ae7dc2db2799b835">Identity</a>()<span class="keyword"> const</span><a name="l00237"></a>00237 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#6d35c27f3e48c24c4cb6f93275f5ed01">Identity</a>();}<a name="l00238"></a>00238 <a name="l00239"></a><a class="code" href="class_quotient_ring.html#e373c31fe91c497e9eabd2c33b70ed98">00239</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#e373c31fe91c497e9eabd2c33b70ed98">Add</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &b)<span class="keyword"> const</span><a name="l00240"></a>00240 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#7112d4646dfb57a7437f0b04e605e653">Add</a>(a, b);}<a name="l00241"></a>00241 <a name="l00242"></a><a class="code" href="class_quotient_ring.html#516445c6cd0a881edc97de6fc99ea4a7">00242</a> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#516445c6cd0a881edc97de6fc99ea4a7">Accumulate</a>(<a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &b)<span class="keyword"> const</span><a name="l00243"></a>00243 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#9fa4103ff0b31f33b1f039383c9ab57c">Accumulate</a>(a, b);}<a name="l00244"></a>00244 <a name="l00245"></a><a class="code" href="class_quotient_ring.html#32a8f4858aa802ef080984b5a00be015">00245</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#32a8f4858aa802ef080984b5a00be015">Inverse</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a)<span class="keyword"> const</span><a name="l00246"></a>00246 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#d78d5eeb2ec41658d48fdbf526af8fc3">Inverse</a>(a);}<a name="l00247"></a>00247 <a name="l00248"></a><a class="code" href="class_quotient_ring.html#08834bbb0829ab02b7f33fd1fd6ef65a">00248</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#08834bbb0829ab02b7f33fd1fd6ef65a">Subtract</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &b)<span class="keyword"> const</span><a name="l00249"></a>00249 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#c44bd3c9af42467bfdd822ef7046bc26">Subtract</a>(a, b);}<a name="l00250"></a>00250 <a name="l00251"></a><a class="code" href="class_quotient_ring.html#3f91d1daa995dbe41f7526d88c377977">00251</a> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#3f91d1daa995dbe41f7526d88c377977">Reduce</a>(<a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &b)<span class="keyword"> const</span><a name="l00252"></a>00252 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#86e05235bbeaf1bb248f8354f3900d4b">Reduce</a>(a, b);}<a name="l00253"></a>00253 <a name="l00254"></a><a class="code" href="class_quotient_ring.html#8789051cffe054f0edf5e9ac7d9cb686">00254</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#8789051cffe054f0edf5e9ac7d9cb686">Double</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a)<span class="keyword"> const</span><a name="l00255"></a>00255 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#8c780e5c44eb5263e0115d02cd673725">Double</a>(a);}<a name="l00256"></a>00256 <a name="l00257"></a><a class="code" href="class_quotient_ring.html#f8732f66da8d4cef1932d2738a5583ad">00257</a> <span class="keywordtype">bool</span> <a class="code" href="class_quotient_ring.html#f8732f66da8d4cef1932d2738a5583ad">IsUnit</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a)<span class="keyword"> const</span><a name="l00258"></a>00258 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#cc11a9230a2d95b1f9bf7881abcfa58e">IsUnit</a>(<a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_abstract_euclidean_domain.html#2044146d4eb49414e1f4f880a9858161">Gcd</a>(a, <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>));}<a name="l00259"></a>00259 <a name="l00260"></a><a class="code" href="class_quotient_ring.html#2b5ab1827c7e73fba29f23f5a6e0e6d4">00260</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#2b5ab1827c7e73fba29f23f5a6e0e6d4">MultiplicativeIdentity</a>()<span class="keyword"> const</span><a name="l00261"></a>00261 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#8112935a4dd4996e011fef24b4d2564a">MultiplicativeIdentity</a>();}<a name="l00262"></a>00262 <a name="l00263"></a><a class="code" href="class_quotient_ring.html#e4dc3dd42c8bc2bd37eff95e8a001f1a">00263</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#e4dc3dd42c8bc2bd37eff95e8a001f1a">Multiply</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &b)<span class="keyword"> const</span><a name="l00264"></a>00264 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#f27cd160da0909dca14ffad646672695">Mod</a>(<a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#570d89c94098cfd66ac5e5e2faa81d1b">Multiply</a>(a, b), <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>);}<a name="l00265"></a>00265 <a name="l00266"></a><a class="code" href="class_quotient_ring.html#a4b1b1638b50483bf4904fc909f54883">00266</a> <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#a4b1b1638b50483bf4904fc909f54883">Square</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a)<span class="keyword"> const</span><a name="l00267"></a>00267 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#f27cd160da0909dca14ffad646672695">Mod</a>(<a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>.<a class="code" href="class_euclidean_domain_of.html#bbca8e162fa458ea0c3298ec93bbc785">Square</a>(a), <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>);}<a name="l00268"></a>00268 <a name="l00269"></a>00269 <span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a>& <a class="code" href="class_quotient_ring.html#c4188ae1dccb83f17c118748afd60df8">MultiplicativeInverse</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> &a) <span class="keyword">const</span>;<a name="l00270"></a>00270 <a name="l00271"></a><a class="code" href="class_quotient_ring.html#847f1d958a70c9caf1713321a6055c52">00271</a> <span class="keywordtype">bool</span> <a class="code" href="class_quotient_ring.html#847f1d958a70c9caf1713321a6055c52">operator==</a>(<span class="keyword">const</span> <a class="code" href="class_quotient_ring.html" title="Quotient Ring.">QuotientRing<T></a> &rhs)<span class="keyword"> const</span><a name="l00272"></a>00272 <span class="keyword"> </span>{<span class="keywordflow">return</span> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a> == rhs.<a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a> && <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a> == rhs.<a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>;}<a name="l00273"></a>00273 <a name="l00274"></a>00274 <span class="keyword">protected</span>:<a name="l00275"></a><a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">00275</a> <a class="code" href="class_euclidean_domain_of.html" title="EuclideanDomainOf.">EuclideanDomain</a> <a class="code" href="class_quotient_ring.html#fa96b7fc70b6b3abbc3a1eca196d7b6c">m_domain</a>;<a name="l00276"></a><a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">00276</a> <a class="code" href="class_quotient_ring.html#a5fc43636ce1b8ab3c8aa4ec309242e0">Element</a> <a class="code" href="class_quotient_ring.html#07127b18d71b1a503e29436fce18e5b4">m_modulus</a>;<a name="l00277"></a>00277 };<a name="l00278"></a>00278 <a name="l00279"></a>00279 NAMESPACE_END<a name="l00280"></a>00280 <a name="l00281"></a>00281 <span class="preprocessor">#ifdef CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES</span><a name="l00282"></a>00282 <span class="preprocessor"></span><span class="preprocessor">#include "algebra.cpp"</span><a name="l00283"></a>00283 <span class="preprocessor">#endif</span><a name="l00284"></a>00284 <span class="preprocessor"></span><a name="l00285"></a>00285 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:19 2007 for Crypto++ by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -