📄 xtr_8h-source.html
字号:
<a name="l00102"></a>00102 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, b.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00103"></a>00103 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00104"></a>00104 }<a name="l00105"></a>00105 <a name="l00106"></a><a class="code" href="class_g_f_p2___o_n_b.html#a3ebe08c701e8c020fb764082128b54a">00106</a> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a>& <a class="code" href="class_g_f_p2___o_n_b.html#a3ebe08c701e8c020fb764082128b54a">Accumulate</a>(<a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &b)<span class="keyword"> const</span><a name="l00107"></a>00107 <span class="keyword"> </span>{<a name="l00108"></a>00108 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Accumulate(a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, b.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>);<a name="l00109"></a>00109 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Accumulate(a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, b.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00110"></a>00110 <span class="keywordflow">return</span> a;<a name="l00111"></a>00111 }<a name="l00112"></a>00112 <a name="l00113"></a><a class="code" href="class_g_f_p2___o_n_b.html#1eb5dc1382210ee9d0678489a48db476">00113</a> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a>& <a class="code" href="class_g_f_p2___o_n_b.html#1eb5dc1382210ee9d0678489a48db476">Reduce</a>(<a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &b)<span class="keyword"> const</span><a name="l00114"></a>00114 <span class="keyword"> </span>{<a name="l00115"></a>00115 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, b.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>);<a name="l00116"></a>00116 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, b.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00117"></a>00117 <span class="keywordflow">return</span> a;<a name="l00118"></a>00118 }<a name="l00119"></a>00119 <a name="l00120"></a><a class="code" href="class_g_f_p2___o_n_b.html#25f52100a3c7f53bd5cd96904335c820">00120</a> <span class="keywordtype">bool</span> <a class="code" href="class_g_f_p2___o_n_b.html#25f52100a3c7f53bd5cd96904335c820">IsUnit</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &a)<span class="keyword"> const</span><a name="l00121"></a>00121 <span class="keyword"> </span>{<a name="l00122"></a>00122 <span class="keywordflow">return</span> a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>.<a class="code" href="class_integer.html#5364029d13bf6d21e7b578127160dbed">NotZero</a>() || a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>.<a class="code" href="class_integer.html#5364029d13bf6d21e7b578127160dbed">NotZero</a>();<a name="l00123"></a>00123 }<a name="l00124"></a>00124 <a name="l00125"></a><a class="code" href="class_g_f_p2___o_n_b.html#a1d3c030219de3c1635a72fbdf0c7228">00125</a> <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a>& <a class="code" href="class_g_f_p2___o_n_b.html#a1d3c030219de3c1635a72fbdf0c7228">MultiplicativeIdentity</a>()<span class="keyword"> const</span><a name="l00126"></a>00126 <span class="keyword"> </span>{<a name="l00127"></a>00127 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a> = <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Inverse(<a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.MultiplicativeIdentity());<a name="l00128"></a>00128 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00129"></a>00129 }<a name="l00130"></a>00130 <a name="l00131"></a><a class="code" href="class_g_f_p2___o_n_b.html#be477db3d5bf5fdb72b9fcc832ff8bac">00131</a> <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a>& <a class="code" href="class_g_f_p2___o_n_b.html#be477db3d5bf5fdb72b9fcc832ff8bac">Multiply</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &b)<span class="keyword"> const</span><a name="l00132"></a>00132 <span class="keyword"> </span>{<a name="l00133"></a>00133 <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Add(a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00134"></a>00134 <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(<a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Add(b.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, b.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>));<a name="l00135"></a>00135 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, b.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>);<a name="l00136"></a>00136 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, b.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00137"></a>00137 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>.<a class="code" href="class_integer.html#bf1e9c170e56841ce73d137c12675f9b">swap</a>(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00138"></a>00138 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>, <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>);<a name="l00139"></a>00139 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>, <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00140"></a>00140 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>);<a name="l00141"></a>00141 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>);<a name="l00142"></a>00142 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00143"></a>00143 }<a name="l00144"></a>00144 <a name="l00145"></a><a class="code" href="class_g_f_p2___o_n_b.html#566a641ac8a1ffc03e056e93d661a3f3">00145</a> <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a>& <a class="code" href="class_g_f_p2___o_n_b.html#566a641ac8a1ffc03e056e93d661a3f3">MultiplicativeInverse</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &a)<span class="keyword"> const</span><a name="l00146"></a>00146 <span class="keyword"> </span>{<a name="l00147"></a>00147 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a> = <a class="code" href="class_g_f_p2___o_n_b.html#d71eeac946b5f17fcb6645bd2f281d23">Exponentiate</a>(a, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.GetModulus()-2);<a name="l00148"></a>00148 }<a name="l00149"></a>00149 <a name="l00150"></a><a class="code" href="class_g_f_p2___o_n_b.html#f0e2b0a96d4f5124ab43d5373c7057fe">00150</a> <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a>& <a class="code" href="class_g_f_p2___o_n_b.html#f0e2b0a96d4f5124ab43d5373c7057fe">Square</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &a)<span class="keyword"> const</span><a name="l00151"></a>00151 <span class="keyword"> </span>{<a name="l00152"></a>00152 <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &ac1 = (&a == &<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>) ? (<a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a> = a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>) : a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>;<a name="l00153"></a>00153 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(<a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(<a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>), a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>), a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00154"></a>00154 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(<a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(<a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(ac1, a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>), a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>), ac1);<a name="l00155"></a>00155 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00156"></a>00156 }<a name="l00157"></a>00157 <a name="l00158"></a><a class="code" href="class_g_f_p2___o_n_b.html#d71eeac946b5f17fcb6645bd2f281d23">00158</a> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> <a class="code" href="class_g_f_p2___o_n_b.html#d71eeac946b5f17fcb6645bd2f281d23">Exponentiate</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &e)<span class="keyword"> const</span><a name="l00159"></a>00159 <span class="keyword"> </span>{<a name="l00160"></a>00160 <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> edivp, emodp;<a name="l00161"></a>00161 <a class="code" href="class_integer.html#567c89aa176b354143c99d558d05a5fb" title="calculate r and q such that (a == d*q + r) && (0 <= r < abs(d))">Integer::Divide</a>(emodp, edivp, e, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.GetModulus());<a name="l00162"></a>00162 <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> b = <a class="code" href="class_g_f_p2___o_n_b.html#a4c7a549af3a591f10f05bff645e9d38">PthPower</a>(a);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -