Quelle chap66.html
Sprache: HTML
|
|
| products/sources/formale Sprachen/GAP/doc/ref/chap66.html |
 |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (ref) - Chapter 66: Polynomials and Rational Functions</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap66" onload="jscontent()">
<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chap6.html">6</a> <a href="chap7.html">7</a> <a href="chap8.html">8</a> <a href="chap9.html">9</a> <a href="chap10.html">10</a> <a href="chap11.html">11</a> <a href="chap12.html">12</a> <a href="chap13.html">13</a> <a href="chap14.html">14</a> <a href="chap15.html">15</a> <a href="chap16.html">16</a> <a href="chap17.html">17</a> <a href="chap18.html">18</a> <a href="chap19.html">19</a> <a href="chap20.html">20</a> <a href="chap21.html">21</a> <a href="chap22.html">22</a> <a href="chap23.html">23</a> <a href="chap24.html">24</a> <a href="chap25.html">25</a> <a href="chap26.html">26</a> <a href="chap27.html">27</a> <a href="chap28.html">28</a> <a href="chap29.html">29</a> <a href="chap30.html">30</a> <a href="chap31.html">31</a> <a href="chap32.html">32</a> <a href="chap33.html">33</a> <a href="chap34.html">34</a> <a href="chap35.html">35</a> <a href="chap36.html">36</a> <a href="chap37.html">37</a> <a href="chap38.html">38</a> <a href="chap39.html">39</a> <a href="chap40.html">40</a> <a href="chap41.html">41</a> <a href="chap42.html">42</a> <a href="chap43.html">43</a> <a href="chap44.html">44</a> <a href="chap45.html">45</a> <a href="chap46.html">46</a> <a href="chap47.html">47</a> <a href="chap48.html">48</a> <a href="chap49.html">49</a> <a href="chap50.html">50</a> <a href="chap51.html">51</a> <a href="chap52.html">52</a> <a href="chap53.html">53</a> <a href="chap54.html">54</a> <a href="chap55.html">55</a> <a href="chap56.html">56</a> <a href="chap57.html">57</a> <a href="chap58.html">58</a> <a href="chap59.html">59</a> <a href="chap60.html">60</a> <a href="chap61.html">61</a> <a href="chap62.html">62</a> <a href="chap63.html">63</a> <a href="chap64.html">64</a> <a href="chap65.html">65</a> <a href="chap66.html">66</a> <a href="chap67.html">67</a> <a href="chap68.html">68</a> <a href="chap69.html">69</a> <a href="chap70.html">70</a> <a href="chap71.html">71</a> <a href="chap72.html">72</a> <a href="chap73.html">73</a> <a href="chap74.html">74</a> <a href="chap75.html">75</a> <a href="chap76.html">76</a> <a href="chap77.html">77</a> <a href="chap78.html">78</a> <a href="chap79.html">79</a> <a href="chap80.html">80</a> <a href="chap81.html">81</a> <a href="chap82.html">82</a> <a href="chap83.html">83</a> <a href="chap84.html">84</a> <a href="chap85.html">85</a> <a href="chap86.html">86</a> <a href="chap87.html">87</a> <a href="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap65.html">[Previous Chapter]</a> <a href="chap67.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap66_mj.html">[MathJax on]</a></p>
<p><a id="X7A14A6588268810A" name="X7A14A6588268810A"></a></p>
<div class="ChapSects"><a href="chap66.html#X7A14A6588268810A">66 <span class="Heading">Polynomials and Rational Functions</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7A8FADCD875826DA">66.1 <span class="Heading">Indeterminates</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X79D0380D7FA39F7D">66.1-1 <span class="Heading">Indeterminate</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X816C8D797C804380">66.1-2 IndeterminateNumberOfUnivariateRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7A2FA46885EF403D">66.1-3 IndeterminateOfUnivariateRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7FD4AC807A1C8E27">66.1-4 IndeterminateName</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X791A06E67F784328">66.1-5 CIUnivPols</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X86A68FD582F4F757">66.2 <span class="Heading">Operations for Rational Functions</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X824B6D328643CE04">66.3 <span class="Heading">Comparison of Rational Functions</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7D871EA180E9486C">66.4 <span class="Heading">Properties and Attributes of Rational Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X86C92F677DA9347F">66.4-1 IsPolynomialFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7D7D2667803D8D8A">66.4-2 NumeratorOfRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X78DC1B5B866ADB6C">66.4-3 DenominatorOfRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7974B0707C8DAB6C">66.4-4 IsPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7914771F7C6013EF">66.4-5 AsPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8738F73583273FCA">66.4-6 IsUnivariateRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7F1F67527A35A9CE">66.4-7 CoefficientsOfUnivariateRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X86A2546685D0016B">66.4-8 IsUnivariatePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X78C9524D7F2708C2">66.4-9 CoefficientsOfUnivariatePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X79138FF28213B6EC">66.4-10 IsLaurentPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7F2A49208341C2A8">66.4-11 IsConstantRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X834B54947FAADEA4">66.4-12 IsPrimitivePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X87531E03849391C1">66.4-13 SplittingField</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X82E2F1707FC2E553">66.5 <span class="Heading">Univariate Polynomials</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8379F8CB7D0076BA">66.5-1 UnivariatePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X85178A3E7B4F11E0">66.5-2 UnivariatePolynomialByCoefficients</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X78AF77C383245254">66.5-3 DegreeOfLaurentPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7CBB760C87B04F75">66.5-4 RootsOfPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X80CEB10D7879767F">66.5-5 RootsOfUPol</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7887FBC78149BB0C">66.5-6 QuotRemLaurpols</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7DDADF157879EFBF">66.5-7 UnivariatenessTestRationalFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7A3BC96B7A50DE98">66.5-8 InfoPoly</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X81499B5A823E6EA3">66.6 <span class="Heading">Polynomials as Univariate Polynomials in one Indeterminate</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X826B99B17ABD11BE">66.6-1 DegreeIndeterminate</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X85646FD07F9C60F5">66.6-2 PolynomialCoefficientsOfPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X80710E9B7D8340BD">66.6-3 LeadingCoefficient</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7B3EAE41795598A5">66.6-4 LeadingMonomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7B57CEE2780D0E0B">66.6-5 Derivative</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7C7D790A7D6E11AD">66.6-6 Discriminant</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X857AD5587EF49029">66.6-7 Resultant</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X85ABC4687DF05777">66.7 <span class="Heading">Multivariate Polynomials</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7A70769C7F52CD2D">66.7-1 <span class="Heading">Value</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7ED3E7D17C7AC732">66.8 <span class="Heading">Minimal Polynomials</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8643915A8424DAF8">66.8-1 MinimalPolynomial</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X837B8E55832CDFEB">66.9 <span class="Heading">Cyclotomic Polynomials</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X827FC7FE81EE4C02">66.9-1 CyclotomicPolynomial</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X8551EF5187509D69">66.10 <span class="Heading">Polynomial Factorization</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X83511D517B544F36">66.10-1 Factors</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7F5A4ACB7AF9E329">66.10-2 FactorsSquarefree</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7F45E9E47EA2C18B">66.11 <span class="Heading">Polynomials over the Rationals</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7E66494B7B05A055">66.11-1 PrimitivePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7A73A3877EB73566">66.11-2 PolynomialModP</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7AB9A6257ED694EC">66.11-3 GaloisType</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7EB610D37D156DC6">66.11-4 ProbabilityShapes</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7C178AB9866FDDE5">66.12 <span class="Heading">Factorization of Polynomials over the Rationals</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8723075C81D2CCA6">66.12-1 BombieriNorm</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X856D769D878AF7AE">66.12-2 MinimizedBombieriNorm</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8139BB0F87399F2C">66.12-3 HenselBound</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X79CC9C8D7C9F6B6A">66.12-4 OneFactorBound</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X844B3C6C87A0E7E0">66.13 <span class="Heading">Laurent Polynomials</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8467263B7EFA013E">66.13-1 LaurentPolynomialByCoefficients</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X86D58AB67F86469F">66.13-2 CoefficientsOfLaurentPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8381E1B582F38C85">66.13-3 IndeterminateNumberOfLaurentPolynomial</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7C1708D27F97B05F">66.14 <span class="Heading">Univariate Rational Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X83DD411179888783">66.14-1 UnivariateRationalFunctionByCoefficients</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7B1EE4E07A9631C6">66.14-2 TaylorSeriesRationalFunction</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7C59471783C3FEDC">66.15 <span class="Heading">Polynomial Rings and Function Fields</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7D2F16E480060330">66.15-1 <span class="Heading">PolynomialRing</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X80D585E1793D4552">66.15-2 IndeterminatesOfPolynomialRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8235D10781BE8003">66.15-3 CoefficientsRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7D631ACC86C584B7">66.15-4 IsPolynomialRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X86F391237A76D804">66.15-5 IsFiniteFieldPolynomialRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X782D07F77BCF67C1">66.15-6 IsAbelianNumberFieldPolynomialRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7D45213A8642033B">66.15-7 IsRationalsPolynomialRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X812E801484E3624E">66.15-8 <span class="Heading">FunctionField</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8090C9EC85201AAC">66.15-9 IsFunctionField</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X85CA757B844F12AE">66.16 <span class="Heading">Univariate Polynomial Rings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X84DC2A59797A26DE">66.16-1 <span class="Heading">UnivariatePolynomialRing</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7A43D74B812401CA">66.16-2 IsUnivariatePolynomialRing</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X86E2ADEA784AD163">66.17 <span class="Heading">Monomial Orderings</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X79D4CBBF820EA204">66.17-1 IsMonomialOrdering</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7D052A017A73E91E">66.17-2 LeadingMonomialOfPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7B6231137BA8B95F">66.17-3 LeadingTermOfPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X798E707D86141087">66.17-4 LeadingCoefficientOfPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7EDE941781BA7F8B">66.17-5 MonomialComparisonFunction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7EDC3A457E7B591E">66.17-6 MonomialExtrepComparisonFun</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X852D7BB37ECE98E1">66.17-7 MonomialLexOrdering</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X786C866C824D2688">66.17-8 MonomialGrlexOrdering</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8094C733808D1799">66.17-9 MonomialGrevlexOrdering</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X84AC871283A74EC0">66.17-10 EliminationOrdering</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7C99593584D478D7">66.17-11 PolynomialReduction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7DE7D4467EBAD916">66.17-12 PolynomialReducedRemainder</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7C8239057FD4EC03">66.17-13 PolynomialDivisionAlgorithm</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7A30E10B820311D1">66.17-14 MonomialExtGrlexLess</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X79BAB2937E6085D6">66.18 <span class="Heading">Groebner Bases</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7A43611E876B7560">66.18-1 <span class="Heading">GroebnerBasis</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7DEF286384967C9E">66.18-2 <span class="Heading">ReducedGroebnerBasis</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7FC1EFE78498C17C">66.18-3 StoredGroebnerBasis</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7C55702786D284A7">66.18-4 InfoGroebner</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X8113DD9B781CA6C1">66.19 <span class="Heading">Rational Function Families</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X855DD73C78A90BC3">66.19-1 RationalFunctionsFamily</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X86E097307D188D3B">66.19-2 IsPolynomialFunctionsFamily</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7AADCA45826866FB">66.19-3 CoefficientsFamily</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7E360788785DE530">66.20 <span class="Heading">The Representations of Rational Functions</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X7F44CF87801DB965">66.21 <span class="Heading">The Defining Attributes of Rational Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X791E16C67A352263">66.21-1 IsRationalFunctionDefaultRep</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7DF955C87CBFC12B">66.21-2 ExtRepNumeratorRatFun</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8059E74D7DCABDBC">66.21-3 ExtRepDenominatorRatFun</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X84F546F87B5ECFE0">66.21-4 ZeroCoefficientRatFun</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X833CE16579AB26E0">66.21-5 IsPolynomialDefaultRep</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8406EE2E8775FBAB">66.21-6 ExtRepPolynomialRatFun</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7E1B98CC7BADAF56">66.21-7 IsLaurentPolynomialDefaultRep</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X791FADD278A2F32F">66.22 <span class="Heading">Creation of Rational Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X81297E4587A9F2A6">66.22-1 RationalFunctionByExtRep</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X79E445AF7849F48A">66.22-2 PolynomialByExtRep</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7E2A46D68472F492">66.22-3 LaurentPolynomialByExtRep</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X809028CD7C0EA7CE">66.23 <span class="Heading">Arithmetic for External Representations of Polynomials</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X855094857A78ABF9">66.23-1 ZippedSum</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7B911136782F0F6D">66.23-2 ZippedProduct</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X87E5EB8985AF04CD">66.23-3 QuotientPolynomialsExtRep</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap66.html#X811B7D8E79E4BD46">66.24 <span class="Heading">Cancellation Tests for Rational Functions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X878A1AC87B492E3D">66.24-1 RationalFunctionByExtRepWithCancellation</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X7BFB55887A153003">66.24-2 TryGcdCancelExtRepPolynomials</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap66.html#X8477D7337C4A98AB">66.24-3 HeuristicCancelPolynomialsExtRep</a></span>
</div></div>
</div>
<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, ...</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 + ⋯</span> with <span class="SimpleMath">r_{i,j} ∈ 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.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><a id="X7A8FADCD875826DA" name="X7A8FADCD875826DA"></a></p>
<h4>66.1 <span class="Heading">Indeterminates</span></h4>
<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_<var class="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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=PolynomialRing(GF(3),["x","y","z"]);</span>
GF(3)[x,y,z]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(IndeterminatesOfPolynomialRing(R),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> IndeterminateNumberOfLaurentPolynomial);</span>
[ 1, 2, 3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=PolynomialRing(GF(3),["z"]);</span>
GF(3)[z]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(IndeterminatesOfPolynomialRing(R),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> IndeterminateNumberOfLaurentPolynomial);</span>
[ 3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=PolynomialRing(GF(3),["x","y","z"]:new);</span>
GF(3)[x,y,z]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(IndeterminatesOfPolynomialRing(R),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> IndeterminateNumberOfLaurentPolynomial);</span>
[ 4, 5, 6 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">R:=PolynomialRing(GF(3),["z"]);</span>
GF(3)[z]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(IndeterminatesOfPolynomialRing(R),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> IndeterminateNumberOfLaurentPolynomial);</span>
[ 3 ]
</pre></div>
<p><a id="X79D0380D7FA39F7D" name="X79D0380D7FA39F7D"></a></p>
<h5>66.1-1 <span class="Heading">Indeterminate</span></h5>
<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><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">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>
<p><a id="X816C8D797C804380" name="X816C8D797C804380"></a></p>
<h5>66.1-2 IndeterminateNumberOfUnivariateRationalFunction</h5>
<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 <code class="func">CIUnivPols</code> (<a href="chap66.html#X791A06E67F784328"><span class="RefLink">66.1-5</span></a>) and <code class="func">IsLaurentPolynomialDefaultRep</code> (<a href="chap66.html#X7E1B98CC7BADAF56"><span class="RefLink">66.21-7</span></a>)).</p>
<p><a id="X7A2FA46885EF403D" name="X7A2FA46885EF403D"></a></p>
<h5>66.1-3 IndeterminateOfUnivariateRationalFunction</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IndeterminateOfUnivariateRationalFunction</code>( <var class="Arg">rfun</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the indeterminate in which the univariate rational function <var class="Arg">rfun</var> is expressed. (cf. <code class="func">IndeterminateNumberOfUnivariateRationalFunction</code> (<a href="chap66.html#X816C8D797C804380"><span class="RefLink">66.1-2</span></a>).)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IndeterminateNumberOfUnivariateRationalFunction(z);</span>
3
<span class="GAPprompt">gap></span> <span class="GAPinput">IndeterminateOfUnivariateRationalFunction(z^5+z);</span>
X
</pre></div>
<p><a id="X7FD4AC807A1C8E27" name="X7FD4AC807A1C8E27"></a></p>
<h5>66.1-4 IndeterminateName</h5>
<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="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IndeterminateName(FamilyObj(x),2);</span>
"y"
<span class="GAPprompt">gap></span> <span class="GAPinput">HasIndeterminateName(FamilyObj(x),4);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">SetIndeterminateName(FamilyObj(x),10,"bla");</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Indeterminate(GF(3),10);</span>
bla
</pre></div>
<p>As a convenience there is a special method installed for <code class="code">SetName</code> that will assign a name to an indeterminate.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">a:=Indeterminate(GF(3),5);</span>
x_5
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName(a,"ah");</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">a^5+a;</span>
ah^5+ah
</pre></div>
<p><a id="X791A06E67F784328" name="X791A06E67F784328"></a></p>
<h5>66.1-5 CIUnivPols</h5>
<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><a id="X86A68FD582F4F757" name="X86A68FD582F4F757"></a></p>
<h4>66.2 <span class="Heading">Operations for Rational Functions</span></h4>
<p>The rational functions form a field, therefore all arithmetic operations are applicable to rational functions.</p>
<p><code class="code"><var class="Arg">f</var> + <var class="Arg">g</var></code></p>
<p><code class="code"><var class="Arg">f</var> - <var class="Arg">g</var></code></p>
<p><code class="code"><var class="Arg">f</var> * <var class="Arg">g</var></code></p>
<p><code class="code"><var class="Arg">f</var> / <var class="Arg">g</var></code></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,1);;y:=Indeterminate(Rationals,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=3+x*y+x^5;;g:=5+x^2*y+x*y^2;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">a:=g/f;</span>
(x_1^2*x_2+x_1*x_2^2+5)/(x_1^5+x_1*x_2+3)
</pre></div>
<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.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.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.html#X7DE207718456F98F"><span class="RefLink">56.7-1</span></a>) on the <code class="func">NumeratorOfRationalFunction</code> (<a href="chap66.html#X7D7D2667803D8D8A"><span class="RefLink">66.4-2</span></a>) and <code class="func">DenominatorOfRationalFunction</code> (<a href="chap66.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><a id="X824B6D328643CE04" name="X824B6D328643CE04"></a></p>
<h4>66.3 <span class="Heading">Comparison of Rational Functions</span></h4>
<p><code class="code"><var class="Arg">f</var> = <var class="Arg">g</var></code></p>
<p>Two rational functions <var class="Arg">f</var> and <var class="Arg">g</var> are equal if the product <code class="code">Numerator(<var class="Arg">f</var>) * Denominator(<var class="Arg">g</var>)</code> equals <code class="code">Numerator(<var class="Arg">g</var>) * Denominator(<var class="Arg">f</var>)</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,"x");;y:=Indeterminate(Rationals,"y");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:=3+x*y+x^5;;g:=5+x^2*y+x*y^2;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">a:=g/f;</span>
(x^2*y+x*y^2+5)/(x^5+x*y+3)
<span class="GAPprompt">gap></span> <span class="GAPinput">b:=(g*f)/(f^2);</span>
(x^7*y+x^6*y^2+5*x^5+x^3*y^2+x^2*y^3+3*x^2*y+3*x*y^2+5*x*y+15)/(x^10+2\
*x^6*y+6*x^5+x^2*y^2+6*x*y+9)
<span class="GAPprompt">gap></span> <span class="GAPinput">a=b;</span>
true
</pre></div>
<p><code class="code"><var class="Arg">f</var> < <var class="Arg">g</var></code></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.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>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x>y;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">x^2*y<x*y^2;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">x*y<x^2*y;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">x^2*y < 5* y*x^2;</span>
true
</pre></div>
<p>Polynomials are compared by comparing the largest terms in turn until they differ.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x+y<y;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">x<x+1;</span>
true
</pre></div>
<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>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">f/g<g/f;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">f/g<(g*g)/(f*g);</span>
false
</pre></div>
<p>For univariate polynomials this reduces to an ordering first by total degree and then lexicographically on the coefficients.</p>
<p><a id="X7D871EA180E9486C" name="X7D871EA180E9486C"></a></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.html#X7E360788785DE530"><span class="RefLink">66.20</span></a> for details.</p>
<p><a id="X86C92F677DA9347F" name="X86C92F677DA9347F"></a></p>
<h5>66.4-1 IsPolynomialFunction</h5>
<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.html#X7D7D2667803D8D8A"><span class="RefLink">66.4-2</span></a>)) and its denominator (see <code class="func">DenominatorOfRationalFunction</code> (<a href="chap66.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>
<p><a id="X7D7D2667803D8D8A" name="X7D7D2667803D8D8A"></a></p>
<h5>66.4-2 NumeratorOfRationalFunction</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumeratorOfRationalFunction</code>( <var class="Arg">ratfun</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the numerator of the rational function <var class="Arg">ratfun</var>.</p>
<p>As no proper multivariate gcd has been implemented yet, numerators and denominators are not guaranteed to be reduced!</p>
<p><a id="X78DC1B5B866ADB6C" name="X78DC1B5B866ADB6C"></a></p>
<h5>66.4-3 DenominatorOfRationalFunction</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DenominatorOfRationalFunction</code>( <var class="Arg">ratfun</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the denominator of the rational function <var class="Arg">ratfun</var>.</p>
<p>As no proper multivariate gcd has been implemented yet, numerators and denominators are not guaranteed to be reduced!</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Indeterminate(Rationals,1);;y:=Indeterminate(Rationals,2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">DenominatorOfRationalFunction((x*y+x^2)/y);</ | |