⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polynomi_8h-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00273 <span class="comment"></span>                <span class="keywordtype">bool</span> IsUnit()<span class="keyword"> const </span>{<span class="keywordflow">return</span> B::IsUnit(fixedRing);}00274 <span class="comment"></span>00275 <span class="comment">                //!</span>00276 <span class="comment"></span>                ThisType Doubled()<span class="keyword"> const </span>{<span class="keywordflow">return</span> ThisType(B::Doubled(fixedRing));}<span class="comment"></span>00277 <span class="comment">                //!</span>00278 <span class="comment"></span>                ThisType Squared()<span class="keyword"> const </span>{<span class="keywordflow">return</span> ThisType(B::Squared(fixedRing));}00279 00280                 CoefficientType EvaluateAt(<span class="keyword">const</span> CoefficientType &amp;x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> B::EvaluateAt(x, fixedRing);}00281 <span class="comment"></span>00282 <span class="comment">                //! calculate r and q such that (a == d*q + r) &amp;&amp; (0 &lt;= r &lt; abs(d))</span><a name="l00283"></a><a class="code" href="class_polynomial_over_fixed_ring.html#_polynomial_over_fixed_ringz77_5">00283</a> <span class="comment"></span>                <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_polynomial_over_fixed_ring.html#_polynomial_over_fixed_ringz77_5">Divide</a>(<a class="code" href="class_polynomial_over_fixed_ring.html">ThisType</a> &amp;r, <a class="code" href="class_polynomial_over_fixed_ring.html">ThisType</a> &amp;q, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html">ThisType</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html">ThisType</a> &amp;d)00284                         {B::Divide(r, q, a, d, fixedRing);}<span class="comment"></span>00285 <span class="comment">        //@}</span>00286 <span class="comment"></span><span class="comment"></span>00287 <span class="comment">        //! \name INPUT/OUTPUT</span>00288 <span class="comment"></span><span class="comment">        //@{</span>00289 <span class="comment"></span><span class="comment">                //!</span>00290 <span class="comment"></span>                <span class="keyword">friend</span> std::istream&amp; operator&gt;&gt;(std::istream&amp; in, ThisType &amp;a)00291                         {<span class="keywordflow">return</span> a.Input(in, fixedRing);}<span class="comment"></span>00292 <span class="comment">                //!</span>00293 <span class="comment"></span>                <span class="keyword">friend</span> std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, <span class="keyword">const</span> ThisType &amp;a)00294                         {<span class="keywordflow">return</span> a.Output(out, fixedRing);}<span class="comment"></span>00295 <span class="comment">        //@}</span>00296 <span class="comment"></span>00297 <span class="keyword">private</span>:00298         <span class="keyword">static</span> <span class="keyword">const</span> Ring fixedRing;00299 };00300 <span class="comment"></span>00301 <span class="comment">//! Ring of polynomials over another ring</span><a name="l00302"></a><a class="code" href="class_ring_of_polynomials_over.html">00302</a> <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span><a class="code" href="class_ring_of_polynomials_over.html">RingOfPolynomialsOver</a> : <span class="keyword">public</span> <a class="code" href="class_abstract_euclidean_domain.html">AbstractEuclideanDomain</a>&lt;PolynomialOver&lt;T&gt; &gt;00303 {00304 <span class="keyword">public</span>:00305         <span class="keyword">typedef</span> T CoefficientRing;00306         <span class="keyword">typedef</span> <a class="code" href="class_polynomial_over.html">PolynomialOver&lt;T&gt;</a> <a class="code" href="class_polynomial_over.html">Element</a>;00307         <span class="keyword">typedef</span> Element::CoefficientType CoefficientType;00308         <span class="keyword">typedef</span> Element::RandomizationParameter RandomizationParameter;00309 00310         <a class="code" href="class_ring_of_polynomials_over.html">RingOfPolynomialsOver</a>(<span class="keyword">const</span> CoefficientRing &amp;ring) : m_ring(ring) {}00311 00312         <a class="code" href="class_polynomial_over.html">Element</a> RandomElement(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, <span class="keyword">const</span> RandomizationParameter &amp;parameter)00313                 {<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over.html">Element</a>(rng, parameter, m_ring);}00314 00315         <span class="keywordtype">bool</span> Equal(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00316 <span class="keyword">                </span>{<span class="keywordflow">return</span> a.Equals(b, m_ring);}00317 00318         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Identity()<span class="keyword"> const</span>00319 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = m_ring.Identity();}00320 00321         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Add(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00322 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.Plus(b, m_ring);}00323 00324         <a class="code" href="class_polynomial_over.html">Element</a>&amp; Accumulate(<a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00325 <span class="keyword">                </span>{a.Accumulate(b, m_ring); <span class="keywordflow">return</span> a;}00326 00327         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Inverse(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a)<span class="keyword"> const</span>00328 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.Inverse(m_ring);}00329 00330         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Subtract(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00331 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.Minus(b, m_ring);}00332 00333         <a class="code" href="class_polynomial_over.html">Element</a>&amp; Reduce(<a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00334 <span class="keyword">                </span>{<span class="keywordflow">return</span> a.Reduce(b, m_ring);}00335 00336         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Double(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a)<span class="keyword"> const</span>00337 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.Doubled(m_ring);}00338 00339         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; MultiplicativeIdentity()<span class="keyword"> const</span>00340 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = m_ring.MultiplicativeIdentity();}00341 00342         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Multiply(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00343 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.Times(b, m_ring);}00344 00345         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; <a class="code" href="class_square.html">Square</a>(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a)<span class="keyword"> const</span>00346 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.Squared(m_ring);}00347 00348         <span class="keywordtype">bool</span> IsUnit(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a)<span class="keyword"> const</span>00349 <span class="keyword">                </span>{<span class="keywordflow">return</span> a.IsUnit(m_ring);}00350 00351         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; MultiplicativeInverse(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a)<span class="keyword"> const</span>00352 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.MultiplicativeInverse(m_ring);}00353 00354         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Divide(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00355 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.DividedBy(b, m_ring);}00356 00357         <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a>&amp; Mod(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;b)<span class="keyword"> const</span>00358 <span class="keyword">                </span>{<span class="keywordflow">return</span> result = a.Modulo(b, m_ring);}00359 00360         <span class="keywordtype">void</span> DivisionAlgorithm(<a class="code" href="class_polynomial_over.html">Element</a> &amp;r, <a class="code" href="class_polynomial_over.html">Element</a> &amp;q, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &amp;d)<span class="keyword"> const</span>00361 <span class="keyword">                </span>{Element::Divide(r, q, a, d, m_ring);}00362 00363         <span class="keyword">class </span>InterpolationFailed : <span class="keyword">public</span> <a class="code" href="class_exception.html">Exception</a>00364         {00365         <span class="keyword">public</span>:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -