<h4>2.1 <span class="Heading"> Definition of the field </span></h4>
<p>The field <span class="SimpleMath">\(\mathbb{Q}^{\sqrt{}}(\imath)\)</span> with <span class="SimpleMath">\(\mathbb{Q}^{\sqrt{}}=\mathbb{Q}(\{\sqrt{p}\mid p\textrm{ a prime}\})\)</span> and <span class="SimpleMath">\(\imath=\sqrt{-1}\in\mathbb{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=\sum_{j=1}^m r_i \sqrt{k_j}\)</span> for Gaussian rationals <span class="SimpleMath">\(r_i\in\mathbb{Q}(\imath)\)</span> and pairwise distinct squarefree positive integers <span class="SimpleMath">\(k_1,\ldots,k_m\)</span>. Thus, <span class="SimpleMath">\(f\)</span> can be described efficiently by its coefficient vector <span class="SimpleMath">\([[r_1,k_1],\ldots,[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">\(\sqrt{q}\)</span> as an element of <var class="Arg">SqrtField</var>. If <span class="SimpleMath">\(q=(-1)^\epsilon a/b\)</span> with coprime integers <span class="SimpleMath">\( a,b\geq 0\)</span> and <span class="SimpleMath">\(\epsilon\in\{0,1\}\)</span>, then <var class="Arg">Sqroot(q)</var> is represented as the element <var class="Arg">E(4)</var><span class="SimpleMath">\(^\varepsilon\)</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],\ldots,[r_m,k_m]]\)</span> as described above, that is, <span class="SimpleMath">\(r_1,\ldots,r_m\in\mathbb{Q}(\imath)\)</span> and <span class="SimpleMath">\(k_1,\ldots,k_m\)</span> are pairwise distinct positive squarefree integers such that <span class="SimpleMath">\(f=\sum_{j=1}^m r_j\sqrt{k_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],\ldots,[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">\(\sum_{j=1}^m r_j\sqrt{k_j}\)</span> as an element of <var class="Arg">SqrtField</var>. Note that here <span class="SimpleMath">\(k_1,\ldots,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],\ldots,[r_m,k_m]]\)</span>, then <var class="Arg">SqrtFieldEltToCyclotomic(f)</var> returns <span class="SimpleMath">\(\sum_{j=1}^m r_j\sqrt{k_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">\(\mathbb{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 <varclass="Arg">SqrtField</var>. Our algorithm for doing this is described in <a href="chapBib_mj.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">\(\mathbb{Q}(\imath)\)</span>, that is, a non-trivial linear combination <span class="SimpleMath">\(0=p(f)=a_0+a_1 f+\ldots a_{i-1}f^{i-1}+f^i\)</span>. Then <span class="SimpleMath">\(f^{-1}=-(a_1+a_2f+\ldots+a_{i-1}f^{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=\sum_{j=1}^m r_i \sqrt{k_j}\)</span> for rational <span class="SimpleMath">\(r_i\)</span> and pairwise distinct positive squarefree integers <span class="SimpleMath">\(k_1,\ldots,k_m\)</span>, then <span class="SimpleMath">\(f\)</span> is a primitive element of the number field <span class="SimpleMath">\(\mathbb{Q}(\sqrt{k_1},\ldots,\sqrt{k_m})\)</span>, see for example Lemma A.5 in <a href="chapBib_mj.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">\(a\sqrt{b}\)</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">\(\mathbb{Q}(\imath)\)</span> or defined over <span class="SimpleMath">\(\mathbb{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">\(\mathbb{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.