📄 polynomi_8h-source.html
字号:
<a name="l00228"></a>00228 <span class="comment"> //!</span><a name="l00229"></a><a class="code" href="class_polynomial_over_fixed_ring.html#7531393efca5fd93db9fe4fb922e5b53">00229</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>& <a class="code" href="class_polynomial_over_fixed_ring.html#7531393efca5fd93db9fe4fb922e5b53">operator/=</a>(<span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>& t) {<span class="keywordflow">return</span> *<span class="keyword">this</span> = *<span class="keyword">this</span>/t;}<span class="comment"></span><a name="l00230"></a>00230 <span class="comment"> //!</span><a name="l00231"></a><a class="code" href="class_polynomial_over_fixed_ring.html#3b2a385791774cef7012c9909418e3ed">00231</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>& <a class="code" href="class_polynomial_over_fixed_ring.html#3b2a385791774cef7012c9909418e3ed">operator%=</a>(<span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>& t) {<span class="keywordflow">return</span> *<span class="keyword">this</span> = *<span class="keyword">this</span>%t;}<a name="l00232"></a>00232 <span class="comment"></span><a name="l00233"></a>00233 <span class="comment"> //!</span><a name="l00234"></a><a class="code" href="class_polynomial_over_fixed_ring.html#2cc5e9af7e3c3e58a81cca7ae9d7f85c">00234</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>& <a class="code" href="class_polynomial_over_fixed_ring.html#2cc5e9af7e3c3e58a81cca7ae9d7f85c">operator<<=</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n) {<a class="code" href="class_polynomial_over.html#961c5f23af4e1d59554cd8d56ae7c608">ShiftLeft</a>(n, ms_fixedRing); <span class="keywordflow">return</span> *<span class="keyword">this</span>;}<span class="comment"></span><a name="l00235"></a>00235 <span class="comment"> //!</span><a name="l00236"></a><a class="code" href="class_polynomial_over_fixed_ring.html#d1979222ca32151f9d20d0a3ae533058">00236</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>& <a class="code" href="class_polynomial_over_fixed_ring.html#d1979222ca32151f9d20d0a3ae533058">operator>>=</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n) {<a class="code" href="class_polynomial_over.html#c24e2a39771e36b36ae3ab550e529d70">ShiftRight</a>(n, ms_fixedRing); <span class="keywordflow">return</span> *<span class="keyword">this</span>;}<a name="l00237"></a>00237 <span class="comment"></span><a name="l00238"></a>00238 <span class="comment"> //! set the coefficient for x^i to value</span><a name="l00239"></a><a class="code" href="class_polynomial_over_fixed_ring.html#7c797943b4cb9e864328d6d02dcb2444">00239</a> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="class_polynomial_over_fixed_ring.html#7c797943b4cb9e864328d6d02dcb2444" title="set the coefficient for x^i to value">SetCoefficient</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html#0db1534646ae791c106da6244896e46f">CoefficientType</a> &value) {<a class="code" href="class_polynomial_over.html#ac4ab97afda49a151fc9dbd8eaf9aa16" title="set the coefficient for x^i to value">B::SetCoefficient</a>(i, value, ms_fixedRing);}<a name="l00240"></a>00240 <span class="comment"></span><a name="l00241"></a>00241 <span class="comment"> //!</span><a name="l00242"></a><a class="code" href="class_polynomial_over_fixed_ring.html#3f8bdcd22b9b4263a1ef9deb45ec8d13">00242</a> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="class_polynomial_over_fixed_ring.html#3f8bdcd22b9b4263a1ef9deb45ec8d13">Randomize</a>(<a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a> &rng, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_1_1_randomization_parameter.html" title="specify the distribution for randomization functions">RandomizationParameter</a> &parameter) {<a class="code" href="class_polynomial_over.html#3a895100d291eba0fba02f50b57d1d44">B::Randomize</a>(rng, parameter, ms_fixedRing);}<a name="l00243"></a>00243 <span class="comment"></span><a name="l00244"></a>00244 <span class="comment"> //!</span><a name="l00245"></a><a class="code" href="class_polynomial_over_fixed_ring.html#4d6ecc0486162b68a2d6fe251508ee1a">00245</a> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="class_polynomial_over_fixed_ring.html#4d6ecc0486162b68a2d6fe251508ee1a">Negate</a>() {<a class="code" href="class_polynomial_over.html#45efd76b7e9eb98a968abc90565449b3">B::Negate</a>(ms_fixedRing);}<a name="l00246"></a>00246 <a name="l00247"></a><a class="code" href="class_polynomial_over_fixed_ring.html#3a94b0d85cedf69cd381112a20b6048d">00247</a> <span class="keywordtype">void</span> <a class="code" href="class_polynomial_over_fixed_ring.html#3a94b0d85cedf69cd381112a20b6048d">swap</a>(<a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> &t) {<a class="code" href="gf2n_8h.html#cd9c045f0b5c2a7595a8a0872dc80f59">B::swap</a>(t);}<span class="comment"></span><a name="l00248"></a>00248 <span class="comment"> //@}</span><a name="l00249"></a>00249 <span class="comment"></span><span class="comment"></span><a name="l00250"></a>00250 <span class="comment"> //! \name UNARY OPERATORS</span><a name="l00251"></a>00251 <span class="comment"></span><span class="comment"> //@{</span><a name="l00252"></a>00252 <span class="comment"></span><span class="comment"> //!</span><a name="l00253"></a><a class="code" href="class_polynomial_over_fixed_ring.html#3d6030d9236c882ae60ec9430f49ed01">00253</a> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="class_polynomial_over_fixed_ring.html#3d6030d9236c882ae60ec9430f49ed01">operator!</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over_fixed_ring.html#5e659b8a429b441a1ae1d6e544ebf189" title="degree + 1">CoefficientCount</a>()==0;}<span class="comment"></span><a name="l00254"></a>00254 <span class="comment"> //!</span><a name="l00255"></a><a class="code" href="class_polynomial_over_fixed_ring.html#b6b7c98a03e46b5a7a06252a9eece583">00255</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#b6b7c98a03e46b5a7a06252a9eece583">operator+</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> *<span class="keyword">this</span>;}<span class="comment"></span><a name="l00256"></a>00256 <span class="comment"> //!</span><a name="l00257"></a><a class="code" href="class_polynomial_over_fixed_ring.html#ac507028d8d718350a555b79dcc53b82">00257</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#ac507028d8d718350a555b79dcc53b82">operator-</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>(<a class="code" href="class_polynomial_over.html#037a72b82d5acfcacbb94a73784b0d85">Inverse</a>(ms_fixedRing));}<span class="comment"></span><a name="l00258"></a>00258 <span class="comment"> //@}</span><a name="l00259"></a>00259 <span class="comment"></span><span class="comment"></span><a name="l00260"></a>00260 <span class="comment"> //! \name BINARY OPERATORS</span><a name="l00261"></a>00261 <span class="comment"></span><span class="comment"> //@{</span><a name="l00262"></a>00262 <span class="comment"></span><span class="comment"> //!</span><a name="l00263"></a><a class="code" href="class_polynomial_over_fixed_ring.html#a62b34fab996d82fe93f715a80ec5232">00263</a> <span class="comment"></span> <span class="keyword">friend</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#a62b34fab996d82fe93f715a80ec5232">operator>></a>(<a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> a, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n) {<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>(a>>=n);}<span class="comment"></span><a name="l00264"></a>00264 <span class="comment"> //!</span><a name="l00265"></a><a class="code" href="class_polynomial_over_fixed_ring.html#786d002a16dc41449d7b19225010650d">00265</a> <span class="comment"></span> <span class="keyword">friend</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#786d002a16dc41449d7b19225010650d">operator<<</a>(<a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> a, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n) {<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>(a<<=n);}<span class="comment"></span><a name="l00266"></a>00266 <span class="comment"> //@}</span><a name="l00267"></a>00267 <span class="comment"></span><span class="comment"></span><a name="l00268"></a>00268 <span class="comment"> //! \name OTHER ARITHMETIC FUNCTIONS</span><a name="l00269"></a>00269 <span class="comment"></span><span class="comment"> //@{</span><a name="l00270"></a>00270 <span class="comment"></span><span class="comment"> //!</span><a name="l00271"></a><a class="code" href="class_polynomial_over_fixed_ring.html#712f72d653c33bc1256c729af9b21a11">00271</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#712f72d653c33bc1256c729af9b21a11">MultiplicativeInverse</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>(<a class="code" href="class_polynomial_over.html#1a24658cd38205e6a3edc607aaceedda">B::MultiplicativeInverse</a>(ms_fixedRing));}<span class="comment"></span><a name="l00272"></a>00272 <span class="comment"> //!</span><a name="l00273"></a><a class="code" href="class_polynomial_over_fixed_ring.html#923b70ee6d67cb50944a68340869fe01">00273</a> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="class_polynomial_over_fixed_ring.html#923b70ee6d67cb50944a68340869fe01">IsUnit</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over.html#bd97055ea77f4c511d84cbde55fee6a0">B::IsUnit</a>(ms_fixedRing);}<a name="l00274"></a>00274 <span class="comment"></span><a name="l00275"></a>00275 <span class="comment"> //!</span><a name="l00276"></a><a class="code" href="class_polynomial_over_fixed_ring.html#605810fa5e4fa44788450f1c07075e9e">00276</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#605810fa5e4fa44788450f1c07075e9e">Doubled</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>(<a class="code" href="class_polynomial_over.html#dad14cc6a75b706ef0a6705134bb78d9">B::Doubled</a>(ms_fixedRing));}<span class="comment"></span><a name="l00277"></a>00277 <span class="comment"> //!</span><a name="l00278"></a><a class="code" href="class_polynomial_over_fixed_ring.html#08c83de30a7c99d11d1c34eb76203d11">00278</a> <span class="comment"></span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#08c83de30a7c99d11d1c34eb76203d11">Squared</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a>(<a class="code" href="class_polynomial_over.html#adf21161e0af900a33e9ca669a1efd27">B::Squared</a>(ms_fixedRing));}<a name="l00279"></a>00279 <a name="l00280"></a><a class="code" href="class_polynomial_over_fixed_ring.html#825685f191673bee3640711de56c681e">00280</a> <a class="code" href="class_polynomial_over_fixed_ring.html#0db1534646ae791c106da6244896e46f">CoefficientType</a> <a class="code" href="class_polynomial_over_fixed_ring.html#825685f191673bee3640711de56c681e">EvaluateAt</a>(<span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html#0db1534646ae791c106da6244896e46f">CoefficientType</a> &x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_polynomial_over.html#5e862bcafe11988e184db0893d086b3c">B::EvaluateAt</a>(x, ms_fixedRing);}<a name="l00281"></a>00281 <span class="comment"></span><a name="l00282"></a>00282 <span class="comment"> //! calculate r and q such that (a == d*q + r) && (0 <= r < abs(d))</span><a name="l00283"></a><a class="code" href="class_polynomial_over_fixed_ring.html#ce18f8c67eb033dd6534b7ed6e7281b2">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#ce18f8c67eb033dd6534b7ed6e7281b2" title="calculate r and q such that (a == d*q + r) && (0 <= r < abs(d))">Divide</a>(<a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> &r, <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> &q, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html" title="Polynomials over a fixed ring.">ThisType</a> &d)<a name="l00284"></a>00284 {<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...">B::Divide</a>(r, q, a, d, ms_fixedRing);}<span class="comment"></span><a name="l00285"></a>00285 <span class="comment"> //@}</span><a name="l00286"></a>00286
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -