<h4>2.1 <span class="Heading"> Definition of the field </span></h4>
<p>The field <span class="SimpleMath">Q^sqrt}(imath)</span> with <span class="SimpleMath">Q^sqrt}=Q({sqrtp∣ p a prime})</span> and <span class="SimpleMath">imath=sqrt-1∈C</span> is realised as <var class="Arg">SqrtField</var>. A few functions print some information on what they are doing to the info class <var class="Arg">InfoSqrtField</var>; this can be turned off by setting <var class="Arg">SetInfoLevel( InfoSqrtField, 0 );</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SqrtFieldIsGaussRat</code>( <var class="Arg">q</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Here <var class="Arg">q</var> is an element of <var class="Arg">SqrtField</var>; this function returns <var class="Arg">true</var> if and only if <var class="Arg">q</var> is the product of <var class="Arg">One(SqrtField)</var> and a Gaussian rational.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">F := SqrtField;</span>
SqrtField
<span class="GAPprompt">gap></span> <span class="GAPinput">IsField( F ); LeftActingDomain( F ); Size( F ); Characteristic( F );</span>
true
GaussianRationals
infinity
0
<span class="GAPprompt">gap></span> <span class="GAPinput">one := One( F );</span>
1
<span class="GAPprompt">gap></span> <span class="GAPinput">2 in F; 2*one in F; 2*E(4)*one in F;</span>
false
true
true
<span class="GAPprompt">gap></span> <span class="GAPinput">a := 2/3*E(4)*one;; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">a in SqrtField; a in GaussianRationals; SqrtFieldIsGaussRat( a );</span>
true
false
true
</pre></div>
<h4>2.2 <span class="Heading"> Construction of elements </span></h4>
<p>Every <span class="SimpleMath">f</span> in <var class="Arg">SqrtField</var> can be uniquely written as <span class="SimpleMath">f=∑_j=1^m r_i sqrtk_j</span> for Gaussian rationals <span class="SimpleMath">r_i∈Q(imath)</span> and pairwise distinct squarefree positive integers <span class="SimpleMath">k_1,...,k_m</span>. Thus, <span class="SimpleMath">f</span> can be described efficiently by its coefficient vector <span class="SimpleMath">[[r_1,k_1],...,[r_j,k_j]]</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Sqroot</code>( <var class="Arg">q</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Here <var class="Arg">q</var> is a rational number and <var class="Arg">Sqroot(q)</var> is the element <span class="SimpleMath">sqrtq</span> as an element of <var class="Arg">SqrtField</var>. If <span class="SimpleMath">q=(-1)^ϵ a/b</span> with coprime integers <span class="SimpleMath">a,b≥ 0</span> and <span class="SimpleMath">ϵ∈{0,1}</span>, then <var class="Arg">Sqroot(q)</var> is represented as the element <var class="Arg">E(4)</var><span class="SimpleMath">^ε</span><var class="Arg">*b*Sqroot(ab)</var> of <var class="Arg">SqrtField</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoefficientsOfSqrtFieldElt</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">f</var> is an element in <var class="Arg">SqrtField</var>, then <var class="Arg">CoefficientsOfSqrtFieldElt(f)</var> returns its coefficient vector <span class="SimpleMath">[[r_1,k_1],...,[r_m,k_m]]</span> as described above, that is, <span class="SimpleMath">r_1,...,r_m∈Q(imath)</span> and <span class="SimpleMath">k_1,...,k_m</span> are pairwise distinct positive squarefree integers such that <span class="SimpleMath">f=∑_j=1^m r_jsqrtk_j</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SqrtFieldEltByCoefficients</code>( <var class="Arg">l</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">l</var> is a list <span class="SimpleMath">[[r_1,k_1],...,[r_m,k_m]]</span> with Gaussian rationals <span class="SimpleMath">r_j</span> and rationals <span class="SimpleMath">k_j</span>, then <var class="Arg">SqrtFieldEltByCoeffiients(l)</var> returns the element <span class="SimpleMath">∑_j=1^m r_jsqrtk_j</span> as an element of <var class="Arg">SqrtField</var>. Note that here <span class="SimpleMath">k_1,...,k_m</span> need not to be positive, squarefree, or pairwise distinct.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SqrtFieldEltToCyclotomic</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">f</var> lies in <var class="Arg">SqrtField</var> with coefficient vector <spanclass="SimpleMath">[[r_1,k_1],...,[r_m,k_m]]</span>, then <var class="Arg">SqrtFieldEltToCyclotomic(f)</var> returns <span class="SimpleMath">∑_j=1^m r_jsqrtk_j</span> lying in a suitable cyclotomic field <var class="Arg">CF(n)</var>. The degree <span class="SimpleMath">n</span> can easily become too large, hence this function should be used with caution.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SqrtFieldEltByCyclotomic</code>( <var class="Arg">c</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">c</var> is an element of <span class="SimpleMath">Q^sqrt}(imath)</span> represented as an element of a cyclotomic field <var class="Arg">CF(n)</var>, then <var class="Arg">SqrtFieldEltByCyclotomic(c)</var> returns the corresponding element in <var class="Arg">SqrtField</var>. Our algorithm for doing this is described in <a href="chapBib.html#biBhdwdg12">[DG13]</a>.</p>
<p>All basic field operations are available. The inverse of an element <span class="SimpleMath">f</span> in <var class="Arg">SqrtField</var> as follows: We first compute the minimal polynomial <span class="SimpleMath">p(X)</span> of <span class="SimpleMath">f</span> over <span class="SimpleMath">Q(imath)</span>, that is, a non-trivial linear combination <span class="SimpleMath">0=p(f)=a_0+a_1 f+... a_i-1f^i-1+f^i</span>. Then <span class="SimpleMath">f^-1=-(a_1+a_2f+...+a_i-1f^i-2+f^i-1)/a_0</span>. Although the inverse of <span class="SimpleMath">f</span> can be computed with linear algebra methods only, the degree of the minimal polynomial of <span class="SimpleMath">f</span> can become rather large. For example, if <span class="SimpleMath">f=∑_j=1^m r_i sqrtk_j</span> for rational <span class="SimpleMath">r_i</span> and pairwise distinct positive squarefree integers <span class="SimpleMath">k_1,...,k_m</span>, then <span class="SimpleMath">f</span> is a primitive element of the number field <span class="SimpleMath">Q(sqrtk_1,...,sqrtk_m)</span>, see for example Lemma A.5 in <a href="chapBib.html#biBhdwdg12">[DG13]</a>. For larger degree, the progress of the computation of the inverse is printed via the InfoClass <var class="Arg">InfoSqrtField</var>. We remark that the method <var class="Arg">Random</var> simply returns a sum of a few terms <span class="SimpleMath">asqrtb</span> where <span class="SimpleMath">a,b</span> are random rationals constructed with <var class="Arg">Random(Rationals)</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SqrtFieldMakeRational</code>( <var class="Arg">m</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">m</var> is an element of <var class="Arg">SqrtField</var>, or a list or a matrix over <var class="Arg">SqrtField</var>, defined over the Gaussian rationals, then <var class="Arg">SqrtFieldMakeRational( m )</var> returns the corresponding element in <span class="SimpleMath">Q(imath)</span> or defined over <span class="SimpleMath">Q(imath)</span>, respectively. This function is used internally, for example, to compute the determinant or rank of a rational matrix over <var class="Arg">SqrtField</var> more efficiently. It is also used in the following three functions.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SqrtFieldPolynomialToRationalPolynomial</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Here <var class="Arg">f</var> is a polynomial over <var class="Arg">SqrtField</var> but with coefficients in the Gaussian rationals. The function returns the corresponding polynomial defined over the Gaussian rationals.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SqrtFieldRationalPolynomialToSqrtFieldPolynomial</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>If <var class="Arg">f</var> is a polynomial over the Gaussian rationals, then the function returns the corresponding polynomial defined over <var class="Arg">SqrtField</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Factors</code>( <var class="Arg">f</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>If <var class="Arg">f</var> is a rational polynomial defined over <var class="Arg">SqrtField</var>, then the previous two functions are used to obtain its factorisation over <span class="SimpleMath">Q</span>.</p>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.