📄 polynomi_8h-source.html
字号:
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 &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) && (0 <= r < 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> &r, <a class="code" href="class_polynomial_over_fixed_ring.html">ThisType</a> &q, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html">ThisType</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over_fixed_ring.html">ThisType</a> &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& operator>>(std::istream& in, ThisType &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& operator<<(std::ostream& out, <span class="keyword">const</span> ThisType &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> <<span class="keyword">class</span> T> <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><PolynomialOver<T> >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<T></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 &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> &rng, <span class="keyword">const</span> RandomizationParameter &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> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& 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>& Add(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& Accumulate(<a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& Inverse(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& Subtract(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& Reduce(<a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& Double(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& 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>& Multiply(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& <a class="code" href="class_square.html">Square</a>(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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> &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>& MultiplicativeInverse(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& Divide(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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>& Mod(<span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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> &r, <a class="code" href="class_polynomial_over.html">Element</a> &q, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &a, <span class="keyword">const</span> <a class="code" href="class_polynomial_over.html">Element</a> &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 + -