📄 polynomi_8h-source.html
字号:
<a name="l00104"></a>00104 <span class="comment"></span><a name="l00105"></a>00105 <span class="comment"> //!</span><a name="l00106"></a>00106 <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="class_polynomial_over.html#45efd76b7e9eb98a968abc90565449b3">Negate</a>(<span class="keyword">const</span> Ring &ring);<a name="l00107"></a>00107 <span class="comment"></span><a name="l00108"></a>00108 <span class="comment"> //!</span><a name="l00109"></a>00109 <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="gf2n_8h.html#cd9c045f0b5c2a7595a8a0872dc80f59">swap</a>(<a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> &t);<span class="comment"></span><a name="l00110"></a>00110 <span class="comment"> //@}</span><a name="l00111"></a>00111 <span class="comment"></span><a name="l00112"></a>00112 <span class="comment"></span><a name="l00113"></a>00113 <span class="comment"> //! \name BASIC ARITHMETIC ON POLYNOMIALS</span><a name="l00114"></a>00114 <span class="comment"></span><span class="comment"> //@{</span><a name="l00115"></a>00115 <span class="comment"></span> <span class="keywordtype">bool</span> Equals(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> &t, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00116"></a><a class="code" href="class_polynomial_over.html#de0983f77089c32d1f7ce07738ea4619">00116</a> <span class="keywordtype">bool</span> <a class="code" href="class_polynomial_over.html#de0983f77089c32d1f7ce07738ea4619">IsZero</a>(<span class="keyword">const</span> Ring &ring)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over.html#65c6004a42608f31008ff066f2eba3e2">CoefficientCount</a>(ring)==0;}<a name="l00117"></a>00117 <a name="l00118"></a>00118 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> Plus(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& t, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00119"></a>00119 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> Minus(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& t, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00120"></a>00120 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> <a class="code" href="class_polynomial_over.html#037a72b82d5acfcacbb94a73784b0d85">Inverse</a>(<span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00121"></a>00121 <a name="l00122"></a>00122 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> Times(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& t, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00123"></a>00123 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> DividedBy(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& t, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00124"></a>00124 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> Modulo(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& t, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00125"></a>00125 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> <a class="code" href="class_polynomial_over.html#1a24658cd38205e6a3edc607aaceedda">MultiplicativeInverse</a>(<span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00126"></a>00126 <span class="keywordtype">bool</span> <a class="code" href="class_polynomial_over.html#bd97055ea77f4c511d84cbde55fee6a0">IsUnit</a>(<span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00127"></a>00127 <a name="l00128"></a>00128 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& Accumulate(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& t, <span class="keyword">const</span> Ring &ring);<a name="l00129"></a>00129 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& Reduce(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& t, <span class="keyword">const</span> Ring &ring);<a name="l00130"></a>00130 <span class="comment"></span><a name="l00131"></a>00131 <span class="comment"> //!</span><a name="l00132"></a><a class="code" href="class_polynomial_over.html#dad14cc6a75b706ef0a6705134bb78d9">00132</a> <span class="comment"></span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> <a class="code" href="class_polynomial_over.html#dad14cc6a75b706ef0a6705134bb78d9">Doubled</a>(<span class="keyword">const</span> Ring &ring)<span class="keyword"> const </span>{<span class="keywordflow">return</span> Plus(*<span class="keyword">this</span>, ring);}<span class="comment"></span><a name="l00133"></a>00133 <span class="comment"> //!</span><a name="l00134"></a><a class="code" href="class_polynomial_over.html#adf21161e0af900a33e9ca669a1efd27">00134</a> <span class="comment"></span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> <a class="code" href="class_polynomial_over.html#adf21161e0af900a33e9ca669a1efd27">Squared</a>(<span class="keyword">const</span> Ring &ring)<span class="keyword"> const </span>{<span class="keywordflow">return</span> Times(*<span class="keyword">this</span>, ring);}<a name="l00135"></a>00135 <a name="l00136"></a>00136 CoefficientType <a class="code" href="class_polynomial_over.html#5e862bcafe11988e184db0893d086b3c">EvaluateAt</a>(<span class="keyword">const</span> CoefficientType &x, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<a name="l00137"></a>00137 <a name="l00138"></a>00138 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& <a class="code" href="class_polynomial_over.html#961c5f23af4e1d59554cd8d56ae7c608">ShiftLeft</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n, <span class="keyword">const</span> Ring &ring);<a name="l00139"></a>00139 <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a>& <a class="code" href="class_polynomial_over.html#c24e2a39771e36b36ae3ab550e529d70">ShiftRight</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n, <span class="keyword">const</span> Ring &ring);<a name="l00140"></a>00140 <span class="comment"></span><a name="l00141"></a>00141 <span class="comment"> //! calculate r and q such that (a == d*q + r) && (0 <= degree of r < degree of d)</span><a name="l00142"></a>00142 <span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_polynomial_over.html#e4e0b0beb7bfab492d6f7343630c2df9" title="calculate r and q such that (a == d*q + r) && (0 <= degree of r < degree...">Divide</a>(<a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> &r, <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> &q, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<Ring></a> &d, <span class="keyword">const</span> Ring &ring);<span class="comment"></span><a name="l00143"></a>00143 <span class="comment"> //@}</span><a name="l00144"></a>00144 <span class="comment"></span><span class="comment"></span><a name="l00145"></a>00145 <span class="comment"> //! \name INPUT/OUTPUT</span><a name="l00146"></a>00146 <span class="comment"></span><span class="comment"> //@{</span><a name="l00147"></a>00147 <span class="comment"></span> std::istream& <a class="code" href="class_polynomial_over.html#f2e687246fa4366712cc024e62c799a0">Input</a>(std::istream &in, <span class="keyword">const</span> Ring &ring);<a name="l00148"></a>00148 std::ostream& <a class="code" href="class_polynomial_over.html#2c9b1f5f4bf5a748a1e811ea8b122d3c">Output</a>(std::ostream &out, <span class="keyword">const</span> Ring &ring) <span class="keyword">const</span>;<span class="comment"></span><a name="l00149"></a>00149 <span class="comment"> //@}</span><a name="l00150"></a>00150 <span class="comment"></span><a name="l00151"></a>00151 <span class="keyword">private</span>:<a name="l00152"></a>00152 <span class="keywordtype">void</span> FromStr(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keyword">const</span> Ring &ring);<a name="l00153"></a>00153 <a name="l00154"></a>00154 std::vector<CoefficientType> m_coefficients;<a name="l00155"></a>00155 };<a name="l00156"></a>00156 <span class="comment"></span><a name="l00157"></a>00157 <span class="comment">//! Polynomials over a fixed ring</span><a name="l00158"></a>00158 <span class="comment"></span><span class="comment">/*! Having a fixed ring allows overloaded operators */</span><a name="l00159"></a><a class="code" href="class_polynomial_over_fixed_ring.html">00159</a> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keywordtype">int</span> instance> <span class="keyword">class </span><a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">PolynomialOverFixedRing</a> : <span class="keyword">private</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver</a><T><a name="l00160"></a>00160 {<a name="l00161"></a>00161 <span class="keyword">typedef</span> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">PolynomialOver<T></a> <a class="code" href="class_polynomial_over.html" title="represents single-variable polynomials over arbitrary rings">B</a>;<a name="l00162"></a>00162 <span class="keyword">typedef</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">PolynomialOverFixedRing<T, instance></a> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>;<a name="l00163"></a>00163 <a name="l00164"></a>00164 <span class="keyword">public</span>:<a name="l00165"></a><a class="code" href="class_polynomial_over_fixed_ring.html#e2df1daefb676d6ff79290c7ca0e8ac5">00165</a> <span class="keyword">typedef</span> T <a class="code" href="class_polynomial_over_fixed_ring.html#e2df1daefb676d6ff79290c7ca0e8ac5">Ring</a>;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -