<h3>66 <span class="Heading">Polynomials and Rational Functions</span></h3>
<p>Let <span class="SimpleMath">\(R\)</span> be a commutative ring-with-one. We call a free associative algebra <span class="SimpleMath">\(A\)</span> over <span class="SimpleMath">\(R\)</span> a <em>polynomial ring</em> over <span class="SimpleMath">\(R\)</span>. The free generators of <span class="SimpleMath">\(A\)</span> are called <em>indeterminates</em> (to avoid naming conflicts with the word <em>variables</em> which will be used to denote <strong class="pkg">GAP</strong> variables only) , they are usually denoted by <span class="SimpleMath">\(x_1, x_2, \ldots\)</span>. The number of indeterminates is called the <em>rank</em> of <span class="SimpleMath">\(A\)</span>. The elements of <span class="SimpleMath">\(A\)</span> are called <em>polynomials</em>. Products of indeterminates are called <em>monomials</em>, every polynomial can be expressed as a finite sum of products of monomials with ring elements in a form like <span class="SimpleMath">\(r_{{1,0}} x_1 + r_{{1,1}} x_1 x_2 + r_{{0,1}} x_2 + \cdots\)</span> with <span class="SimpleMath">\(r_{{i,j}} \in R\)</span>.</p>
<p>A polynomial ring of rank 1 is called an <em>univariate</em> polynomial ring, its elements are <em>univariate polynomials</em>.</p>
<p>Polynomial rings of smaller rank naturally embed in rings of higher rank; if <span class="SimpleMath">\(S\)</span> is a subring of <span class="SimpleMath">\(R\)</span> then a polynomial ring over <span class="SimpleMath">\(S\)</span> naturally embeds in a polynomial ring over <span class="SimpleMath">\(R\)</span> of the same rank. Note however that <strong class="pkg">GAP</strong> does not consider <span class="SimpleMath">\(R\)</span> as a subset of a polynomial ring over <span class="SimpleMath">\(R\)</span>; for example the zero of <span class="SimpleMath">\(R\)</span> (<span class="SimpleMath">\(0\)</span>) and the zero of the polynomial ring (<span class="SimpleMath">\(0x^0\)</span>) are different objects.</p>
<p>Internally, indeterminates are represented by positive integers, but it is possible to give names to them to have them printed in a nicer way. Beware, however that there is not necessarily any relation between the way an indeterminate is called and the way it is printed. See section <a href="chap66_mj.html#X7A8FADCD875826DA"><span class="RefLink">66.1</span></a> for details.</p>
<p>If <span class="SimpleMath">\(R\)</span> is an integral domain, the polynomial ring <span class="SimpleMath">\(A\)</span> over <span class="SimpleMath">\(R\)</span> is an integral domain as well and one can therefore form its quotient field <span class="SimpleMath">\(Q\)</span>. This field is called a <em>field of rational functions</em>. Again <span class="SimpleMath">\(A\)</span> embeds naturally into <span class="SimpleMath">\(Q\)</span> and <strong class="pkg">GAP</strong> will perform this embedding implicitly. (In fact it implements the ring of rational functions over <span class="SimpleMath">\(R\)</span>.) To avoid problems with leading coefficients, however, <span class="SimpleMath">\(R\)</span> must be a unique factorization domain.</p>
<p>Internally, indeterminates are created for a <em>family</em> of objects (for example all elements of finite fields in characteristic <span class="SimpleMath">\(3\)</span> are in one family). Thus a variable <q>x</q> over the rationals is also an <q>x</q> over the integers, while an <q>x</q> over <code class="code">GF(3)</code> is different.</p>
<p>Within one family, every indeterminate has a number <var class="Arg">nr</var> and as long as no other names have been assigned, this indeterminate will be displayed as <q><code class="code">x_<varclass="Arg">nr</var></code></q>. Indeterminate numbers can be arbitrary nonnegative integers.</p>
<p>It is possible to assign names to indeterminates; these names are strings and only provide a means for printing the indeterminates in a nice way. Indeterminates that have not been assigned a name will be printed as <q><code class="code">x_<var class="Arg">nr</var></code></q>.</p>
<p>(Because of this printing convention, the name <code class="code">x_<var class="Arg">nr</var></code> is interpreted specially to always denote the variable with internal number <var class="Arg">nr</var>.)</p>
<p>The indeterminate names have not necessarily any relations to variable names: this means that an indeterminate whose name is <q><code class="code">x</code></q> cannot be accessed using the variable <code class="code">x</code>, unless <code class="code">x</code> was defined to be that indeterminate.</p>
<p>When asking for indeterminates with certain names, <strong class="pkg">GAP</strong> usually will take the first (with respect to the internal numbering) indeterminates that are not yet named, name these accordingly and return them. Thus when asking for named indeterminates, no relation between names and indeterminate numbers can be guaranteed. The attribute <code class="code">IndeterminateNumberOfLaurentPolynomial(<var class="Arg">indet</var>)</code> will return the number of the indeterminate <var class="Arg">indet</var>.</p>
<p>When asked to create an indeterminate with a name that exists already for the family, <strong class="pkg">GAP</strong> will by default return this existing indeterminate. If you explicitly want a <em>new</em> indeterminate, distinct from the already existing one with the <em>same</em> name, you can add the <code class="code">new</code> option to the function call. (This is in most cases not a good idea.)</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Indeterminate</code>( <var class="Arg">R</var>[, <var class="Arg">nr</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Indeterminate</code>( <var class="Arg">R</var>[, <var class="Arg">name</var>][, <var class="Arg">avoid</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Indeterminate</code>( <var class="Arg">fam</var>, <var class="Arg">nr</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ X</code>( <var class="Arg">R</var>[, <var class="Arg">nr</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ X</code>( <var class="Arg">R</var>[, <var class="Arg">name</var>][, <var class="Arg">avoid</var>] )</td><tdclass="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ X</code>( <var class="Arg">fam</var>, <var class="Arg">nr</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the indeterminate number <var class="Arg">nr</var> over the ring <var class="Arg">R</var>. If <var class="Arg">nr</var> is not given it defaults to 1. If the number is not specified a list <var class="Arg">avoid</var> of indeterminates may be given. The function will return an indeterminate that is guaranteed to be different from all the indeterminates in the list <var class="Arg">avoid</var>. The third usage returns an indeterminate called <var class="Arg">name</var> (also avoiding the indeterminates in <var class="Arg">avoid</var> if given).</p>
<p><code class="func">X</code> is simply a synonym for <code class="func">Indeterminate</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(GF(3),"x");</span>
x
<span class="GAPprompt">gap></span> <span class="GAPinput">y:=X(GF(3),"y");z:=X(GF(3),"X");</span>
y
X
<span class="GAPprompt">gap></span> <span class="GAPinput">X(GF(3),2);</span>
y
<span class="GAPprompt">gap></span> <span class="GAPinput">X(GF(3),"x_3");</span>
X
<span class="GAPprompt">gap></span> <span class="GAPinput">X(GF(3),[y,z]);</span>
x
</pre></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IndeterminateNumberOfUnivariateRationalFunction</code>( <var class="Arg">rfun</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the number of the indeterminate in which the univariate rational function <var class="Arg">rfun</var> is expressed. (This also provides a way to obtain the number of a given indeterminate.)</p>
<p>A constant rational function might not possess an indeterminate number. In this case <code class="func">IndeterminateNumberOfUnivariateRationalFunction</code> will default to a value of 1. Therefore two univariate polynomials may be considered to be in the same univariate polynomial ring if their indeterminates have the same number or one if of them is constant. (see also <codeclass="func">CIUnivPols</code> (<a href="chap66_mj.html#X791A06E67F784328"><span class="RefLink">66.1-5</span></a>) and <code class="func">IsLaurentPolynomialDefaultRep</code> (<a href="chap66_mj.html#X7E1B98CC7BADAF56"><span class="RefLink">66.21-7</span></a>)).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IndeterminateName</code>( <var class="Arg">fam</var>, <var class="Arg">nr</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HasIndeterminateName</code>( <var class="Arg">fam</var>, <var class="Arg">nr</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SetIndeterminateName</code>( <var class="Arg">fam</var>, <var class="Arg">nr</var>, <var class="Arg">name</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">SetIndeterminateName</code> assigns the name <var class="Arg">name</var> to indeterminate <var class="Arg">nr</var> in the rational functions family <var class="Arg">fam</var>. It issues an error if the indeterminate was already named.</p>
<p><code class="func">IndeterminateName</code> returns the name of the <var class="Arg">nr</var>-th indeterminate (and returns <code class="keyw">fail</code> if no name has been assigned).</p>
<p><code class="func">HasIndeterminateName</code> tests whether indeterminate <var class="Arg">nr</var> has already been assigned a name.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CIUnivPols</code>( <var class="Arg">upol1</var>, <var class="Arg">upol2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>This function (whose name stands for <q>common indeterminate of univariate polynomials</q>) takes two univariate polynomials as arguments. If both polynomials are given in the same indeterminate number <var class="Arg">indnum</var> (in this case they are <q>compatible</q> as univariate polynomials) it returns <var class="Arg">indnum</var>. In all other cases it returns <code class="keyw">fail</code>. <code class="func">CIUnivPols</code> also accepts if either polynomial is constant but formally expressed in another indeterminate, in this situation the indeterminate of the other polynomial is selected.</p>
<p>Note that the quotient <code class="code"><var class="Arg">f</var>/<var class="Arg">g</var></code> of two polynomials might be represented as a rational function again. If <var class="Arg">g</var> is known to divide <var class="Arg">f</var> the call <code class="code">Quotient(<var class="Arg">f</var>,<var class="Arg">g</var>)</code> (see <code class="func">Quotient</code> (<a href="chap56_mj.html#X8350500B8576F833"><span class="RefLink">56.1-9</span></a>)) should be used instead.</p>
<p><code class="code"><var class="Arg">f</var> mod <var class="Arg">g</var></code></p>
<p>For two Laurent polynomials <var class="Arg">f</var> and <var class="Arg">g</var>, <code class="code"><var class="Arg">f</var> mod <var class="Arg">g</var></code> is the Euclidean remainder (see <code class="func">EuclideanRemainder</code> (<a href="chap56_mj.html#X7B5E9639865E91BA"><span class="RefLink">56.6-4</span></a>)) of <var class="Arg">f</var> modulo <var class="Arg">g</var>.</p>
<p>As calculating a multivariate Gcd can be expensive, it is not guaranteed that rational functions will always be represented as a quotient of coprime polynomials. In certain unfortunate situations this might lead to a degree explosion. To ensure cancellation you can use <code class="func">Gcd</code> (<a href="chap56_mj.html#X7DE207718456F98F"><span class="RefLink">56.7-1</span></a>) on the <code class="func">NumeratorOfRationalFunction</code> (<a href="chap66_mj.html#X7D7D2667803D8D8A"><span class="RefLink">66.4-2</span></a>) and <code class="func">DenominatorOfRationalFunction</code> (<a href="chap66_mj.html#X78DC1B5B866ADB6C"><span class="RefLink">66.4-3</span></a>) values of a given rational function.</p>
<p>All polynomials as well as all the univariate polynomials in the same indeterminate form subrings of this field. If two rational functions are known to be in the same subring, the result will be expressed as element in this subring.</p>
<p>The ordering of rational functions is defined in several steps. Monomials (products of indeterminates) are sorted first by degree, then lexicographically (with <span class="SimpleMath">\(x_1>x_2\)</span>) (see <code class="func">MonomialGrlexOrdering</code> (<a href="chap66_mj.html#X786C866C824D2688"><span class="RefLink">66.17-8</span></a>)). Products of monomials with ring elements (<q>terms</q>) are compared first by their monomials and then by their coefficients.</p>
<p>Rational functions are compared by comparing the polynomial <code class="code">Numerator(<var class="Arg">f</var>) * Denominator(<var class="Arg">g</var>)</code> with the polynomial <code class="code">Numerator(<var class="Arg">g</var>) * Denominator(<var class="Arg">f</var>)</code>. (As the ordering of monomials used by <strong class="pkg">GAP</strong> is invariant under multiplication this is independent of common factors in numerator and denominator.)</p>
<h4>66.4 <span class="Heading">Properties and Attributes of Rational Functions</span></h4>
<p>All these tests are applicable to <em>every</em> rational function. Depending on the internal representation of the rational function, however some of these tests (in particular, univariateness) might be expensive in some cases.</p>
<p>For reasons of performance within algorithms it can be useful to use other attributes, which give a slightly more technical representation. See section <a href="chap66_mj.html#X7E360788785DE530"><span class="RefLink">66.20</span></a> for details.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsPolynomialFunction</code>( <var class="Arg">obj</var> )</td><td class="tdright">( category )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsRationalFunction</code>( <var class="Arg">obj</var> )</td><td class="tdright">( category )</td></tr></table></div>
<p>A rational function is an element of the quotient field of a polynomial ring over an UFD. It is represented as a quotient of two polynomials, its numerator (see <code class="func">NumeratorOfRationalFunction</code> (<a href="chap66_mj.html#X7D7D2667803D8D8A"><span class="RefLink">66.4-2</span></a>)) and its denominator (see <code class="func">DenominatorOfRationalFunction</code> (<a href="chap66_mj.html#X78DC1B5B866ADB6C"><span class="RefLink">66.4-3</span></a>))</p>
<p>A polynomial function is an element of a polynomial ring (not necessarily an UFD), or a rational function.</p>
<p><strong class="pkg">GAP</strong> considers <code class="func">IsRationalFunction</code> as a subcategory of <code class="func">IsPolynomialFunction</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsPolynomial</code>( <var class="Arg">ratfun</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A polynomial is a rational function whose denominator is one. (If the coefficients family forms a field this is equivalent to the denominator being constant.)</p>
<p>If the base family is not a field, it may be impossible to represent the quotient of a polynomial by a ring element as a polynomial again, but it will have to be represented as a rational function.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AsPolynomial</code>( <var class="Arg">poly</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>If <var class="Arg">poly</var> is a rational function that is a polynomial this attribute returns an equal rational function <span class="SimpleMath">\(p\)</span> such that <span class="SimpleMath">\(p\)</span> is equal to its numerator and the denominator of <span class="SimpleMath">\(p\)</span> is one.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsUnivariateRationalFunction</code>( <var class="Arg">ratfun</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A rational function is univariate if its numerator and its denominator are both polynomials in the same one indeterminate. The attribute <code class="func">IndeterminateNumberOfUnivariateRationalFunction</code> (<a href="chap66_mj.html#X816C8D797C804380"><span class="RefLink">66.1-2</span></a>) can be used to obtain the number of this common indeterminate.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoefficientsOfUnivariateRationalFunction</code>( <var class="Arg">rfun</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>if <var class="Arg">rfun</var> is a univariate rational function, this attribute returns a list <code class="code">[ <var class="Arg">ncof</var>, <var class="Arg">dcof</var>, <var class="Arg">val</var> ]</code> where <var class="Arg">ncof</var> and <var class="Arg">dcof</var> are coefficient lists of univariate polynomials <var class="Arg">n</var> and <var class="Arg">d</var> and a valuation <var class="Arg">val</var> such that <span class="SimpleMath">\(\textit{rfun} = x^{\textit{val}} \cdot \textit{n} / \textit{d}\)</span> where <span class="SimpleMath">\(x\)</span> is the variable with the number given by <code class="func">IndeterminateNumberOfUnivariateRationalFunction</code> (<a href="chap66_mj.html#X816C8D797C804380"><span class="RefLink">66.1-2</span></a>). Numerator and denominator are guaranteed to be cancelled.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsUnivariatePolynomial</code>( <var class="Arg">ratfun</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A univariate polynomial is a polynomial in only one indeterminate.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CoefficientsOfUnivariatePolynomial</code>( <var class="Arg">pol</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">CoefficientsOfUnivariatePolynomial</code> returns the coefficient list of the polynomial <var class="Arg">pol</var>, sorted in ascending order. (It returns the empty list if <var class="Arg">pol</var> is 0.)</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLaurentPolynomial</code>( <var class="Arg">ratfun</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A Laurent polynomial is a univariate rational function whose denominator is a monomial. Therefore every univariate polynomial is a Laurent polynomial.</p>
<p>The attribute <code class="func">CoefficientsOfLaurentPolynomial</code> (<a href="chap66_mj.html#X86D58AB67F86469F"><span class="RefLink">66.13-2</span></a>) gives a compact representation as Laurent polynomial.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsConstantRationalFunction</code>( <var class="Arg">ratfun</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A constant rational function is a function whose numerator and denominator are polynomials of degree 0.</p>
</li>
<li><p>for each prime divisor <span class="SimpleMath">\(p\)</span> of <span class="SimpleMath">\(q^d - 1\)</span>, <var class="Arg">pol</var> does not divide <span class="SimpleMath">\(X^{{(q^d-1)/p}} - 1\)</span>,</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SplittingField</code>( <var class="Arg">f</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the smallest field which contains the coefficients of <var class="Arg">f</var> and the roots of <var class="Arg">f</var>.</p>
<p>Some of the operations are actually defined on the larger domain of Laurent polynomials (see <a href="chap66_mj.html#X844B3C6C87A0E7E0"><span class="RefLink">66.13</span></a>). For this section you can simply ignore the word <q>Laurent</q> if it occurs in a description.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ UnivariatePolynomial</code>( <var class="Arg">ring</var>, <var class="Arg">cofs</var>[, <var class="Arg">ind</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<p>constructs an univariate polynomial over the ring <var class="Arg">ring</var> in the indeterminate <var class="Arg">ind</var> with the coefficients given by <var class="Arg">cofs</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ UnivariatePolynomialByCoefficients</code>( <var class="Arg">fam</var>, <var class="Arg">cofs</var>, <var class="Arg">ind</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>constructs an univariate polynomial over the coefficients family <var class="Arg">fam</var> and in the indeterminate <var class="Arg">ind</var> with the coefficients given by <var class="Arg">cofs</var>. This function should be used in algorithms to create polynomials as it avoids overhead associated with <code class="func">UnivariatePolynomial</code> (<a href="chap66_mj.html#X8379F8CB7D0076BA"><span class="RefLink">66.5-1</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DegreeOfLaurentPolynomial</code>( <var class="Arg">pol</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The degree of a univariate (Laurent) polynomial <var class="Arg">pol</var> is the largest exponent <span class="SimpleMath">\(n\)</span> of a monomial <span class="SimpleMath">\(x^n\)</span> of <var class="Arg">pol</var>. The degree of a zero polynomial is defined to be <code class="code">-infinity</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RootsOfPolynomial</code>( [<var class="Arg">R</var>, ]<var class="Arg">p</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>For a univariate polynomial <var class="Arg">p</var>, this function returns all roots of <var class="Arg">p</var> over the ring <var class="Arg">R</var>. If the ring is not specified, it defaults to the ring specified by the coefficients of <var class="Arg">p</var> via <code class="func">DefaultRing</code> (<a href="chap56_mj.html#X83AFFCC77DE6ABDA"><span class="RefLink">56.1-3</span></a>)).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RootsOfUPol</code>( [<var class="Arg">field</var>, ]<var class="Arg">upol</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>This function returns a list of all roots of the univariate polynomial <var class="Arg">upol</var> in its default domain. If the optional argument <var class="Arg">field</var> is a field then the roots in this field are computed. If <var class="Arg">field</var> is the string <code class="code">"split"</code> then the splitting field of the polynomial is taken.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ QuotRemLaurpols</code>( <var class="Arg">left</var>, <var class="Arg">right</var>, <var class="Arg">mode</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>This internal function for euclidean division of polynomials takes two polynomials <var class="Arg">left</var> and <var class="Arg">right</var> and computes their quotient. No test is performed whether the arguments indeed are polynomials. Depending on the integer variable <var class="Arg">mode</var>, which may take values in a range from 1 to 4, it returns respectively:</p>
<ol>
<li><p>the quotient (there might be some remainder),</p>
</li>
<li><p>the remainder,</p>
</li>
<li><p>a list <code class="code">[<var class="Arg">q</var>,<var class="Arg">r</var>]</code> of quotient and remainder,</p>
</li>
<li><p>the quotient if there is no remainder and <code class="keyw">fail</code> otherwise.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ UnivariatenessTestRationalFunction</code>( <var class="Arg">f</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>takes a rational function <var class="Arg">f</var> and tests whether it is univariate rational function (or even a Laurent polynomial). It returns a list <code class="code">[isunivariate, indet, islaurent, cofs]</code>.</p>
<p>If <var class="Arg">f</var> is a univariate rational function then <code class="code">isunivariate</code> is <code class="keyw">true</code> and <code class="code">indet</code> is the number of the appropriate indeterminate.</p>
--> --------------------
--> maximum size reached
--> --------------------
¤ 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.0.95Bemerkung:
(vorverarbeitet)
¤
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.