summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/polexpr/polexpr-ref.html
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/polexpr/polexpr-ref.html')
-rw-r--r--Master/texmf-dist/doc/generic/polexpr/polexpr-ref.html406
1 files changed, 208 insertions, 198 deletions
diff --git a/Master/texmf-dist/doc/generic/polexpr/polexpr-ref.html b/Master/texmf-dist/doc/generic/polexpr/polexpr-ref.html
index 9f3767c48de..7f1b54b7490 100644
--- a/Master/texmf-dist/doc/generic/polexpr/polexpr-ref.html
+++ b/Master/texmf-dist/doc/generic/polexpr/polexpr-ref.html
@@ -6,7 +6,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
- <title>polexpr reference &#8212; polexpr 0.8.7 documentation</title>
+ <title>polexpr reference &#8212; polexpr 0.8.7a documentation</title>
<link rel="stylesheet" type="text/css" href="polexpr.css" />
<link rel="next" title="CHANGES" href="polexpr-changes.html" />
<link rel="prev" title="Introduction to polexpr" href="polexpr.html" />
@@ -20,7 +20,7 @@
<li class="right" >
<a href="polexpr.html" title="Introduction to polexpr"
accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="polexpr.html">polexpr 0.8.7 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-0"><a href="polexpr.html">polexpr 0.8.7a documentation</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">polexpr reference</a></li>
</ul>
</div>
@@ -49,18 +49,15 @@ and, so far (but this may change in future) neither does <a class="reference int
See <a class="reference internal" href="#rdcoeffs"><span class="std std-ref">rdcoeffs()</span></a> and the macro
<a class="reference internal" href="#polreducecoeffs"><span class="std std-ref">\PolReduceCoeffs</span></a>.</p>
</div>
-<ul class="simple">
+<ul>
<li><p>In place of <code class="docutils literal notranslate"><span class="pre">x</span></code> an arbitrary <em>dummy variable</em> is authorized,
i.e. per default one <code class="docutils literal notranslate"><span class="pre">a,</span> <span class="pre">..,</span> <span class="pre">z,</span> <span class="pre">A,</span> <span class="pre">..,</span> <span class="pre">Z</span></code> (more letters can be declared
under Unicode engines).</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">polname</span></code> consists of <em>letters</em>, <em>digits</em>, and also the <code class="docutils literal notranslate"><span class="pre">_</span></code> and
-<code class="docutils literal notranslate"><span class="pre">'</span></code> characters are allowed. The polynomial name <strong>must</strong> start with
-a letter: do not use the underscore <code class="docutils literal notranslate"><span class="pre">_</span></code> as <em>first character</em> of a
-polynomial name (even if of catcode letter). No warning is emitted
-but dire consequences will ensue. The <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> is also allowed
-(independently of its catcode “letter” or “other”, which does not
-matter). It is recommended to avoid using it as first character,
-except for temporary polynomial variables.</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">polname</span></code> is a word (no space) built with <em>letters</em>, <em>digits</em>, and
+the <code class="docutils literal notranslate"><span class="pre">&#64;</span></code>, <code class="docutils literal notranslate"><span class="pre">_</span></code> and <code class="docutils literal notranslate"><span class="pre">'</span></code> characters are allowed. The polynomial
+name <strong>must</strong> start with a letter.</p>
+<p>For guidelines regarding <code class="docutils literal notranslate"><span class="pre">_</span></code> and <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> see <a class="reference internal" href="#technicalities">Technicalities</a>.</p>
+</li>
<li><p>The colon before the equality sign is optional and its (reasonable)
catcode does not matter.</p></li>
<li><p>The semi-colon at the end of the expression is mandatory. It is not
@@ -248,7 +245,7 @@ coefficients.</p>
<p>This is useful for console or file output. This syntax is Maple and
PSTricks <code class="docutils literal notranslate"><span class="pre">\psplot[algebraic]</span></code> compatible; and also it is
compatible with <code class="docutils literal notranslate"><span class="pre">\poldef</span></code> input syntax, of course. See
-<a class="reference internal" href="#id69">\PolToExprCaret</a> for configuration of the <code class="docutils literal notranslate"><span class="pre">^</span></code>, for example to
+<a class="reference internal" href="#id70">\PolToExprCaret</a> for configuration of the <code class="docutils literal notranslate"><span class="pre">^</span></code>, for example to
use rather <code class="docutils literal notranslate"><span class="pre">**</span></code> for Python syntax compliance.</p>
<p>Changed at <code class="docutils literal notranslate"><span class="pre">0.8</span></code>: the <code class="docutils literal notranslate"><span class="pre">^</span></code> in output is by default of catcode 12
so in a draft document one can use <code class="docutils literal notranslate"><span class="pre">\PolToExpr{P}</span></code> inside the
@@ -966,7 +963,8 @@ coefficients in a private structure accessible later via other
package macros, used with argument <code class="docutils literal notranslate"><span class="pre">polname</span></code>. Of course the
<em>expression</em> can make use of previously defined polynomials.</p>
<p>Polynomial names must start with a letter and are constituted of
-letters, digits, underscores and the right tick <code class="docutils literal notranslate"><span class="pre">'</span></code>.</p>
+letters, digits, underscores, the <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> (see <a class="reference internal" href="#technicalities">Technicalities</a>) and
+the right tick <code class="docutils literal notranslate"><span class="pre">'</span></code>.</p>
<p>The whole <a class="reference external" href="https://www.ctan.org/pkg/xintexpr">xintexpr</a> syntax is authorized, as long as the final
result is of polynomial type:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\poldef</span> polname(z) := add((-1)<span class="nb">^</span>i z<span class="nb">^</span>(2i+1)/(2i+1)!, i = 0..10);
@@ -983,16 +981,16 @@ as well as in <code class="docutils literal notranslate"><span class="pre">\xint
and also other polynomials (via their names, thanks to previous
item).</p></li>
</ul>
-<p>Notice that any function defined via <code class="docutils literal notranslate"><span class="pre">\xintdeffunc</span></code> and using
-only algebraic operations (and ople indexing or slicing operations)
-should work fine in <code class="docutils literal notranslate"><span class="pre">\xintexpr/\xinteval</span></code> with such polynomial
-names as argument.</p>
-<p>In the case of a constant polynomial, the <a class="reference external" href="https://www.ctan.org/pkg/xintexpr">xintexpr</a> variable (not the
-internal data structure on which the package macros operate)
+<p>Any function defined via <code class="docutils literal notranslate"><span class="pre">\xintdeffunc</span></code> and only algebraic
+operations, as well as ople indexing or slicing operations, should
+work fine in <code class="docutils literal notranslate"><span class="pre">\xintexpr/\xinteval</span></code> with such polynomial names as
+argument.</p>
+<p>In the case of a constant polynomial, the <a class="reference external" href="https://www.ctan.org/pkg/xintexpr">xintexpr</a> <em>variable</em> (not
+the internal data structure on which the package macros operate)
associated to it is indistinguishable from a scalar, it is actually
a scalar and has lost all traces from its origins as a polynomial
-(so for example can be used as argument to the <code class="docutils literal notranslate"><span class="pre">cos()</span></code> function).</p>
-<p>The <em>function</em> on the other hand remains a one-argument function,
+(so for example can be used as argument to the <code class="docutils literal notranslate"><span class="pre">cos()</span></code> function).
+The <em>function</em> on the other hand remains a one-argument function,
which simply has a constant value.</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
@@ -1001,7 +999,7 @@ which simply has a constant value.</p>
context. It will be unknown to <code class="docutils literal notranslate"><span class="pre">\xintfloateval</span></code>.</p>
<p>Worse, a
previously existing floating point function of the same name will
-be let undefined again, to avoid hard to debug mismatches between
+be made undefined again, to avoid hard to debug mismatches between
exact and floating point polynomials. This also applies when the
polynomial is produced not via <code class="docutils literal notranslate"><span class="pre">\poldef</span></code> or <code class="docutils literal notranslate"><span class="pre">\PolDef</span></code> but
as result of usage of the other package macros.</p>
@@ -1058,18 +1056,18 @@ the new polynomial is to be used in <code class="docutils literal notranslate"><
</div></blockquote>
</section>
<section id="poltypeset">
-<span id="id7"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolTypeset{}</span></code></h3>
-<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolTypeset{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
+<span id="id7"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolTypeset[]{}</span></code></h3>
+<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolTypeset[&lt;letter&gt;]{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
<blockquote>
<div><p>Typesets in descending powers, switching to math mode if in text
mode, after evaluating the polynomial expression:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\PolTypeset</span><span class="nb">{</span>mul(x-i,i=1..5)<span class="nb">}</span><span class="c">% possible since polexpr 0.8</span>
</pre></div>
</div>
-<p>The letter used in the input expression is by default <code class="docutils literal notranslate"><span class="pre">x</span></code>,
-but can be modified by a redefinition of <a class="reference internal" href="#id67">\PolToExprInVar</a>.</p>
-<p>It uses also by default the letter <code class="docutils literal notranslate"><span class="pre">x</span></code> on output but this one can
-be changed via an optional argument:</p>
+<p>The letter used in the input is by default assumed to be <code class="docutils literal notranslate"><span class="pre">x</span></code>,
+but can be modified by a redefinition of <a class="reference internal" href="#id68">\PolToExprInVar</a>.</p>
+<p>The letter used in the output is also by default <code class="docutils literal notranslate"><span class="pre">x</span></code>. This one
+can be changed on-the-fly via the optional <code class="docutils literal notranslate"><span class="pre">&lt;letter&gt;</span></code>:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\PolTypeset</span><span class="na">[z]</span><span class="nb">{</span>polname or polynomial expression<span class="nb">}</span>
</pre></div>
</div>
@@ -1148,18 +1146,19 @@ separator in the typeset formula. Not used for the first term.</p>
</section>
</section>
<section id="id13">
-<span id="id14"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolTypeset*{}</span></code></h3>
-<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolTypeset*{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
+<span id="id14"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolTypeset*[]{}</span></code></h3>
+<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolTypeset*[&lt;letter&gt;]{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
<blockquote>
-<div><p>Typesets in ascending powers. Use <code class="docutils literal notranslate"><span class="pre">[&lt;letter&gt;]</span></code> optional argument
-(after the <code class="docutils literal notranslate"><span class="pre">*</span></code>) to use another letter than <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p>
+<div><p>Typesets in ascending powers. The <code class="docutils literal notranslate"><span class="pre">&lt;letter&gt;</span></code> optional argument
+(after the <code class="docutils literal notranslate"><span class="pre">*</span></code>) declares the letter to use in the <em>output</em>.
+As for <a class="reference external" href="PolTypeset">\PolTypeset</a>, it defaults to <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p>
+<p>To modify the expected <code class="docutils literal notranslate"><span class="pre">x</span></code> in the <em>input</em>, see <a class="reference internal" href="#id68">\PolToExprInVar</a>.</p>
<p>Extended at <code class="docutils literal notranslate"><span class="pre">0.8</span></code> to accept general expressions and not only
-polynomial names. Redefine <a class="reference internal" href="#id67">\PolToExprInVar</a> to use in the
-expression another letter than default <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p>
+polynomial names.</p>
</div></blockquote>
</section>
<section id="pollet">
-<span id="id15"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolLet{}={}</span></code></h3>
+<span id="id16"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolLet{}={}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolLet{&lt;polname_2&gt;}={&lt;polname_1&gt;}</span></code></p>
<blockquote>
<div><p>Makes a copy of the already defined polynomial <code class="docutils literal notranslate"><span class="pre">polname_1</span></code> to a
@@ -1170,7 +1169,7 @@ new one <code class="docutils literal notranslate"><span class="pre">polname_2</
</div></blockquote>
</section>
<section id="polgloballet">
-<span id="id16"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolGlobalLet{}={}</span></code></h3>
+<span id="id17"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolGlobalLet{}={}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolGlobalLet{&lt;polname_2&gt;}={&lt;polname_1&gt;}</span></code></p>
<blockquote>
<div><p>Acts globally.</p>
@@ -1212,7 +1211,7 @@ via <a class="reference external" href="https://www.ctan.org/pkg/xint">xintfrac<
</div></blockquote>
</section>
<section id="polfromcsv">
-<span id="id17"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolFromCSV{}{}</span></code></h3>
+<span id="id18"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolFromCSV{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolFromCSV{&lt;polname&gt;}{&lt;csv&gt;}</span></code></p>
<blockquote>
<div><p>Defines a polynomial directly from the comma separated list of values
@@ -1230,7 +1229,7 @@ form via <a class="reference external" href="https://www.ctan.org/pkg/xint">xint
</div></blockquote>
</section>
<section id="polmapcoeffs">
-<span id="id18"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolMapCoeffs{}{}</span></code></h3>
+<span id="id19"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolMapCoeffs{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolMapCoeffs{\macro}{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>It modifies (‘in-place’: original coefficients get lost) each
@@ -1251,15 +1250,15 @@ expressed in terms of macros from the <a class="reference external" href="https:
</div></blockquote>
</section>
<section id="polreducecoeffs">
-<span id="id19"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs{}</span></code></h3>
+<span id="id20"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>Reduces the internal representations of the coefficients to
their lowest terms.</p>
</div></blockquote>
</section>
-<section id="id20">
-<span id="id21"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs*{}</span></code></h3>
+<section id="id21">
+<span id="id22"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs*{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs*{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>Reduces the internal representations of the coefficients to their
@@ -1275,18 +1274,18 @@ remain generally smaller.</p>
</div></blockquote>
</section>
<section id="polmakemonic">
-<span id="id22"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolMakeMonic{}</span></code></h3>
+<span id="id23"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolMakeMonic{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolMakeMonic{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>Divides by the leading coefficient. It is recommended to execute
-<a class="reference internal" href="#id20"><span class="std std-ref">\PolReduceCoeffs*{&lt;polname&gt;}</span></a> immediately afterwards. This is not
+<a class="reference internal" href="#id21"><span class="std std-ref">\PolReduceCoeffs*{&lt;polname&gt;}</span></a> immediately afterwards. This is not
done automatically, in case the original polynomial had integer
coefficients and the user wants to keep the leading one as common
denominator for typesetting purposes.</p>
</div></blockquote>
</section>
<section id="polmakeprimitive">
-<span id="id23"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolMakePrimitive{}</span></code></h3>
+<span id="id24"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolMakePrimitive{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolMakePrimitive{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>Divides by the integer content see (<a class="reference internal" href="#policontent">\PolIContent</a>).
@@ -1296,7 +1295,7 @@ coefficient is not modified.</p>
</div></blockquote>
</section>
<section id="poldiff">
-<span id="id24"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDiff{}{}</span></code></h3>
+<span id="id25"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDiff{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolDiff{&lt;polname_1&gt;}{&lt;polname_2&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_2</span></code> to the first derivative of <code class="docutils literal notranslate"><span class="pre">polname_1</span></code>. It
@@ -1306,8 +1305,8 @@ by <code class="docutils literal notranslate"><span class="pre">f'</span></code>
(see <a class="reference internal" href="#technicalities">Technicalities</a> for the whole story.)</p>
</div></blockquote>
</section>
-<section id="id25">
-<span id="id26"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDiff[]{}{}</span></code></h3>
+<section id="id26">
+<span id="id27"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDiff[]{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolDiff[N]{&lt;polname_1&gt;}{&lt;polname_2&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_2</span></code> to the <code class="docutils literal notranslate"><span class="pre">N</span></code>-th derivative of <code class="docutils literal notranslate"><span class="pre">polname_1</span></code>.
@@ -1317,7 +1316,7 @@ using <code class="docutils literal notranslate"><span class="pre">\PolAntiDiff<
</div></blockquote>
</section>
<section id="polantidiff">
-<span id="id27"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolAntiDiff{}{}</span></code></h3>
+<span id="id28"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolAntiDiff{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolAntiDiff{&lt;polname_1&gt;}{&lt;polname_2&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_2</span></code> to the primitive of <code class="docutils literal notranslate"><span class="pre">polname_1</span></code> vanishing
@@ -1326,8 +1325,8 @@ at zero.</p>
(see <a class="reference internal" href="#technicalities">Technicalities</a> for the whole story.)</p>
</div></blockquote>
</section>
-<section id="id28">
-<span id="id29"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolAntiDiff[]{}{}</span></code></h3>
+<section id="id29">
+<span id="id30"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolAntiDiff[]{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolAntiDiff[N]{&lt;polname_1&gt;}{&lt;polname_2&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_2</span></code> to the result of <code class="docutils literal notranslate"><span class="pre">N</span></code> successive integrations on
@@ -1335,7 +1334,7 @@ at zero.</p>
</div></blockquote>
</section>
<section id="poldivide">
-<span id="id30"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDivide{}{}{}{}</span></code></h3>
+<span id="id31"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDivide{}{}{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolDivide{&lt;polname_1&gt;}{&lt;polname_2&gt;}{&lt;polname_Q&gt;}{&lt;polname_R&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_Q</span></code> and <code class="docutils literal notranslate"><span class="pre">polname_R</span></code> to be the quotient and
@@ -1344,7 +1343,7 @@ remainder in the Euclidean division of <code class="docutils literal notranslate
</div></blockquote>
</section>
<section id="polquo">
-<span id="id31"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolQuo{}{}{}</span></code></h3>
+<span id="id32"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolQuo{}{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolQuo{&lt;polname_1&gt;}{&lt;polname_2&gt;}{&lt;polname_Q&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_Q</span></code> to be the quotient in the Euclidean division
@@ -1352,7 +1351,7 @@ of <code class="docutils literal notranslate"><span class="pre">polname_1</span>
</div></blockquote>
</section>
<section id="polrem">
-<span id="id32"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolRem{}{}{}</span></code></h3>
+<span id="id33"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolRem{}{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolRem{&lt;polname_1&gt;}{&lt;polname_2&gt;}{&lt;polname_R&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_R</span></code> to be the remainder in the Euclidean division
@@ -1360,7 +1359,7 @@ of <code class="docutils literal notranslate"><span class="pre">polname_1</span>
</div></blockquote>
</section>
<section id="polgcd">
-<span id="id33"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolGCD{}{}{}</span></code></h3>
+<span id="id34"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolGCD{}{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolGCD{&lt;polname_1&gt;}{&lt;polname_2&gt;}{&lt;polname_GCD&gt;}</span></code></p>
<blockquote>
<div><p>This sets <code class="docutils literal notranslate"><span class="pre">polname_GCD</span></code> to be the (monic) GCD of <code class="docutils literal notranslate"><span class="pre">polname_1</span></code>
@@ -1377,7 +1376,7 @@ additional polynomial or scalar variables with names based on <code class="docut
prefix, it is advisable to keep the <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code> namespace separate from
the one applying to <code class="docutils literal notranslate"><span class="pre">\xintexpr</span></code> variables generally, or to polynomials.</p>
<section id="poltosturm">
-<span id="id34"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToSturm{}{}</span></code></h4>
+<span id="id35"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToSturm{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToSturm{&lt;polname&gt;}{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>With <code class="docutils literal notranslate"><span class="pre">&lt;polname&gt;</span></code> being for example <code class="docutils literal notranslate"><span class="pre">P</span></code>, and <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code> being
@@ -1433,15 +1432,18 @@ other polynomials after having done
latter will behave erroneously.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
-<p>The declaration of the <code class="docutils literal notranslate"><span class="pre">S_k</span></code>‘s will overwrite
-with no warning previously declared polynomials with identical
-names <code class="docutils literal notranslate"><span class="pre">S_k</span></code>. This is original reason why the macro expects two
-names: <code class="docutils literal notranslate"><span class="pre">&lt;polname&gt;</span></code> and <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code>.</p>
+<p>The declaration of the <code class="docutils literal notranslate"><span class="pre">S_k</span></code>‘s will overwrite with no warning
+previously declared polynomials with identical names <code class="docutils literal notranslate"><span class="pre">S_k</span></code>,
+i.e. <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;_k</span></code>. This is why the macro was designed
+to expect two names: <code class="docutils literal notranslate"><span class="pre">&lt;polname&gt;</span></code> and <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code>.</p>
<p>It is allowed to use the polynomial name <code class="docutils literal notranslate"><span class="pre">P</span></code> as Sturm chain
-name <code class="docutils literal notranslate"><span class="pre">S</span></code>: <code class="docutils literal notranslate"><span class="pre">\PolToSturm{f}(f}</span></code>, but of course fusing the
-namespaces is slightly dangerous. And, also <a class="reference internal" href="#polsturmisolatezeros">\PolSturmIsolateZeros</a> creates variables sharing
-the <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code> prefix, which must be taken into account to
-avoid name clashes.</p>
+name <code class="docutils literal notranslate"><span class="pre">S</span></code>: <code class="docutils literal notranslate"><span class="pre">\PolToSturm{P}{P}</span></code>, but this is considered bad
+practice for the reason mentioned in the previous paragraph.</p>
+<p>Furthermore, <a class="reference internal" href="#polsturmisolatezeros">\PolSturmIsolateZeros</a>
+creates <a class="reference external" href="https://www.ctan.org/pkg/xintexpr">xintexpr</a> variables whose names start with
+<code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;L_</span></code>, <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;R_</span></code>, and <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;Z_</span></code>, also
+<code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;M_</span></code> for holding the multiplicities, and this may
+overwrite pre-existing user-defined <a class="reference external" href="https://www.ctan.org/pkg/xintexpr">xintexpr</a> variables.</p>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
@@ -1462,8 +1464,8 @@ the number of distinct real roots is at most <code class="docutils literal notra
most the degree of <code class="docutils literal notranslate"><span class="pre">S_0</span></code>.</p>
</div></blockquote>
</section>
-<section id="id35">
-<span id="id36"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToSturm*{}{}</span></code></h4>
+<section id="id36">
+<span id="id37"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToSturm*{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToSturm*{&lt;polname&gt;}{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>Does the same as <a class="reference internal" href="#poltosturm">un-starred version</a> and additionally it
@@ -1474,7 +1476,7 @@ polynomials <code class="docutils literal notranslate"><span class="pre">sturmna
</div></blockquote>
</section>
<section id="polsturmisolatezeros">
-<span id="id37"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros{}</span></code></h4>
+<span id="id38"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>The macro locates, using the <a class="reference external" href="https://en.wikipedia.org/wiki/Sturm%27s_theorem">Sturm Theorem</a>, as many disjoint
@@ -1574,8 +1576,8 @@ are studied in numerical mathematics.</p>
</div>
</div></blockquote>
</section>
-<section id="id38">
-<span id="id39"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros*{}</span></code></h4>
+<section id="id39">
+<span id="id40"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros*{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>The macro does the same as <a class="reference internal" href="#polsturmisolatezeros"><span class="std std-ref">\PolSturmIsolateZeros{&lt;sturmname&gt;}</span></a> and
@@ -1592,7 +1594,7 @@ computed.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Somewhat counter-intuitively, it is not necessary to have
-executed the <a class="reference internal" href="#id35"><span class="std std-ref">\PolToSturm*</span></a>
+executed the <a class="reference internal" href="#id36"><span class="std std-ref">\PolToSturm*</span></a>
starred variant: during its
execution, <a class="reference internal" href="#poltosturm"><span class="std std-ref">\PolToSturm</span></a>,
even though it does not declare the
@@ -1603,18 +1605,18 @@ polynomials, stores their data in private macros.</p>
<span class="pre">roots</span></code> example in <code class="docutils literal notranslate"><span class="pre">polexpr-examples.pdf</span></code>.</p>
</div></blockquote>
<section id="polsturmisolatezerosandgetmultiplicities">
-<span id="id40"></span><h5><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndGetMultiplicities{}</span></code></h5>
+<span id="id41"></span><h5><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndGetMultiplicities{}</span></code></h5>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndGetMultiplicities{&lt;sturmname&gt;}</span></code></p>
<blockquote>
-<div><p>This is another name for <a class="reference internal" href="#id38"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a>.</p>
+<div><p>This is another name for <a class="reference internal" href="#id39"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a>.</p>
</div></blockquote>
</section>
</section>
-<section id="id41">
-<span id="id42"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros**{}</span></code></h4>
+<section id="id42">
+<span id="id43"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros**{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></code></p>
<blockquote>
-<div><p>The macro does the same as <a class="reference internal" href="#id38"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> and
+<div><p>The macro does the same as <a class="reference internal" href="#id39"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> and
in addition it does the extra work to determine all the <em>rational</em>
roots.</p>
<div class="admonition note">
@@ -1634,18 +1636,18 @@ the original polynomial, with the same multiplicities.</p>
<span class="pre">roots</span></code> in <code class="docutils literal notranslate"><span class="pre">polexpr-examples.pdf</span></code>.</p>
</div></blockquote>
<section id="polsturmisolatezerosgetmultiplicitiesandrationalroots">
-<span id="id43"></span><h5><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosGetMultiplicitiesAndRationalRoots</span></code></h5>
+<span id="id44"></span><h5><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosGetMultiplicitiesAndRationalRoots</span></code></h5>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosGetMultiplicitiesAndRationalRoots</span></code></p>
<blockquote>
-<div><p>This is another name for <a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>.</p>
+<div><p>This is another name for <a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>.</p>
</div></blockquote>
</section>
</section>
<section id="polsturmisolatezerosandfindrationalroots">
-<span id="id44"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndFindRationalRoots{}</span></code></h4>
+<span id="id45"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndFindRationalRoots{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndFindRationalRoots{&lt;sturmname&gt;}</span></code></p>
<blockquote>
-<div><p>This works exactly like <a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>
+<div><p>This works exactly like <a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>
(inclusive of declaring the polynomials <code class="docutils literal notranslate"><span class="pre">sturmname_sqf_norr</span></code> and
<code class="docutils literal notranslate"><span class="pre">sturmname_norr</span></code> with no rational roots) except that it does <em>not</em>
compute the multiplicities of the <em>non-rational</em> roots.</p>
@@ -1662,7 +1664,7 @@ multiplicities and it leaves the multiplicity array (whose accessor
is <a class="reference internal" href="#polsturmisolatedzeromultiplicity"><span class="std std-ref">\PolSturmIsolatedZeroMultiplicity{&lt;sturmname&gt;}{&lt;index&gt;}</span></a>) into
a broken state, as all non-rational roots will supposedly have
multiplicity one. This means that the output of
-<a class="reference internal" href="#id61">\PolPrintIntervals*</a> will be
+<a class="reference internal" href="#id62">\PolPrintIntervals*</a> will be
erroneous regarding the multiplicities of irrational roots.</p>
<p>I decided to document it because finding multiplicities of the
non rational roots is somewhat costly, and one may be interested
@@ -1673,7 +1675,7 @@ rational root anyhow).</p>
</div></blockquote>
</section>
<section id="polrefineinterval">
-<span id="id45"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolRefineInterval*{}{}</span></code></h4>
+<span id="id46"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolRefineInterval*{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolRefineInterval*{&lt;sturmname&gt;}{&lt;index&gt;}</span></code></p>
<blockquote>
<div><p>The <code class="docutils literal notranslate"><span class="pre">index</span></code>-th interval (starting indexing at one) is further
@@ -1683,8 +1685,8 @@ the original interval. As a consequence, the <code class="docutils literal notr
strictly separated from the other roots.</p>
</div></blockquote>
</section>
-<section id="id46">
-<span id="id47"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolRefineInterval[]{}{}</span></code></h4>
+<section id="id47">
+<span id="id48"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolRefineInterval[]{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolRefineInterval[N]{&lt;sturmname&gt;}{&lt;index&gt;}</span></code></p>
<blockquote>
<div><p>The <code class="docutils literal notranslate"><span class="pre">index</span></code>-th interval (starting count at one) is further
@@ -1693,7 +1695,7 @@ subdivided once, reducing its length by a factor of 10. This is done
</div></blockquote>
</section>
<section id="polensureintervallength">
-<span id="id48"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLength{}{}{}</span></code></h4>
+<span id="id49"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLength{}{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLength{&lt;sturmname&gt;}{&lt;index&gt;}{&lt;exponent&gt;}</span></code></p>
<blockquote>
<div><p>The <code class="docutils literal notranslate"><span class="pre">index</span></code>-th interval is subdivided until its length becomes at
@@ -1702,7 +1704,7 @@ after decimal mark of the <code class="docutils literal notranslate"><span class
</div></blockquote>
</section>
<section id="polensureintervallengths">
-<span id="id49"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLengths{}{}</span></code></h4>
+<span id="id50"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLengths{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLengths{&lt;sturmname&gt;}{&lt;exponent&gt;}</span></code></p>
<blockquote>
<div><p>The intervals as obtained from <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros</span></code> are (if
@@ -1713,7 +1715,7 @@ each of them to have length at most <code class="docutils literal notranslate"><
</div></blockquote>
</section>
<section id="polsettosturmchainsignchangesat">
-<span id="id50"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSetToSturmChainSignChangesAt{}{}{}</span></code></h4>
+<span id="id51"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSetToSturmChainSignChangesAt{}{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSetToSturmChainSignChangesAt{\foo}{&lt;sturmname&gt;}{&lt;value&gt;}</span></code></p>
<blockquote>
<div><p>Sets macro <code class="docutils literal notranslate"><span class="pre">\foo</span></code> to store the number of sign changes in the
@@ -1726,7 +1728,7 @@ acceptable by the <a class="reference external" href="https://www.ctan.org/pkg/x
</div></blockquote>
</section>
<section id="polsettonbofzeroswithin">
-<span id="id51"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSetToNbOfZerosWithin{}{}{}{}</span></code></h4>
+<span id="id52"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSetToNbOfZerosWithin{}{}{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSetToNbOfZerosWithin{\foo}{&lt;sturmname&gt;}{&lt;value_left&gt;}{&lt;value_right&gt;}</span></code></p>
<blockquote>
<div><p>Sets, assuming the normalized Sturm chain has been already computed,
@@ -1746,7 +1748,7 @@ which however requires prior execution of <a class="reference internal" href="#p
<p>See also the expandable
<a class="reference internal" href="#polsturmnbwithmultofrootsoflessthanorequalto"><span class="std std-ref">\PolSturmNbWithMultOfRootsOf{&lt;sturmname&gt;}\LessThanOrEqualTo{value}</span></a>
which requires prior execution of
-<a class="reference internal" href="#id38">\PolSturmIsolateZeros*</a>.</p>
+<a class="reference internal" href="#id39">\PolSturmIsolateZeros*</a>.</p>
</div></blockquote>
</section>
</section>
@@ -1773,7 +1775,7 @@ primitives.</p>
<p>The next macros which govern its output.</p>
</div></blockquote>
<section id="polprintintervalsnorealroots">
-<span id="id52"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsNoRealRoots</span></code></h4>
+<span id="id53"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsNoRealRoots</span></code></h4>
<blockquote>
<div><p>Executed in place of an <code class="docutils literal notranslate"><span class="pre">array</span></code> environment, when there are no
real roots. Default definition:</p>
@@ -1783,7 +1785,7 @@ real roots. Default definition:</p>
</div></blockquote>
</section>
<section id="polprintintervalsbeginenv">
-<span id="id53"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsBeginEnv</span></code></h4>
+<span id="id54"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsBeginEnv</span></code></h4>
<blockquote>
<div><p>Default definition (given here for LaTeX, Plain has a variant):</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsBeginEnv</span><span class="nb">{</span><span class="sb">\[</span><span class="nv">\begin</span><span class="nb">{array}{rcccl}}</span>
@@ -1791,14 +1793,14 @@ real roots. Default definition:</p>
</div>
<p>A simpler <code class="docutils literal notranslate"><span class="pre">center</span></code> environment provides a straightforward way to
obtain a display allowing pagebreaks. Of course redefinitions must
-at any rate be kept in sync with <a class="reference internal" href="#id56">\PolPrintIntervalsKnownRoot</a> and
-<a class="reference internal" href="#id57">\PolPrintIntervalsUnknownRoot</a>.</p>
+at any rate be kept in sync with <a class="reference internal" href="#id57">\PolPrintIntervalsKnownRoot</a> and
+<a class="reference internal" href="#id58">\PolPrintIntervalsUnknownRoot</a>.</p>
<p>Prior to <code class="docutils literal notranslate"><span class="pre">0.8.6</span></code> it was not possible to use here for example
<code class="docutils literal notranslate"><span class="pre">\begin{align}</span></code> due to the latter executing twice in contents.</p>
</div></blockquote>
</section>
<section id="polprintintervalsendenv">
-<span id="id54"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsEndEnv</span></code></h4>
+<span id="id55"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsEndEnv</span></code></h4>
<blockquote>
<div><p>Default definition:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsEndEnv</span><span class="nb">{</span><span class="k">\end</span><span class="nb">{</span>array<span class="nb">}</span><span class="k">\]</span><span class="nb">}</span>
@@ -1807,14 +1809,14 @@ at any rate be kept in sync with <a class="reference internal" href="#id56">\Pol
</div></blockquote>
</section>
<section id="polprintintervalsrowseparator">
-<span id="id55"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsRowSeparator</span></code></h4>
+<span id="id56"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsRowSeparator</span></code></h4>
<blockquote>
<div><p>Expands by default to <code class="docutils literal notranslate"><span class="pre">\\</span></code> with LaTeX and to <code class="docutils literal notranslate"><span class="pre">\cr</span></code> with Plain</p>
<p>Added at <code class="docutils literal notranslate"><span class="pre">0.8.6</span></code>.</p>
</div></blockquote>
</section>
<section id="polprintintervalsknownroot">
-<span id="id56"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsKnownRoot</span></code></h4>
+<span id="id57"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsKnownRoot</span></code></h4>
<blockquote>
<div><p>Default definition:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsKnownRoot</span><span class="nb">{</span><span class="c">%</span>
@@ -1826,7 +1828,7 @@ at any rate be kept in sync with <a class="reference internal" href="#id56">\Pol
</div></blockquote>
</section>
<section id="polprintintervalsunknownroot">
-<span id="id57"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsUnknownRoot</span></code></h4>
+<span id="id58"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsUnknownRoot</span></code></h4>
<blockquote>
<div><p>Default definition:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsUnknownRoot</span><span class="nb">{</span><span class="c">%</span>
@@ -1839,7 +1841,7 @@ at any rate be kept in sync with <a class="reference internal" href="#id56">\Pol
</div></blockquote>
</section>
<section id="polprintintervalsprintexactzero">
-<span id="id58"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintExactZero</span></code></h4>
+<span id="id59"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintExactZero</span></code></h4>
<blockquote>
<div><p>Default definition:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsPrintExactZero</span><span class="nb">{</span><span class="k">\PolPrintIntervalsTheLeftEndPoint</span><span class="nb">}</span>
@@ -1848,7 +1850,7 @@ at any rate be kept in sync with <a class="reference internal" href="#id56">\Pol
</div></blockquote>
</section>
<section id="polprintintervalsprintleftendpoint">
-<span id="id59"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintLeftEndPoint</span></code></h4>
+<span id="id60"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintLeftEndPoint</span></code></h4>
<blockquote>
<div><p>Default definition:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsPrintLeftEndPoint</span><span class="nb">{</span><span class="k">\PolPrintIntervalsTheLeftEndPoint</span><span class="nb">}</span>
@@ -1857,7 +1859,7 @@ at any rate be kept in sync with <a class="reference internal" href="#id56">\Pol
</div></blockquote>
</section>
<section id="polprintintervalsprintrightendpoint">
-<span id="id60"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintRightEndPoint</span></code></h4>
+<span id="id61"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintRightEndPoint</span></code></h4>
<blockquote>
<div><p>Default definition is:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsPrintRightEndPoint</span><span class="nb">{</span><span class="k">\PolPrintIntervalsTheRightEndPoint</span><span class="nb">}</span>
@@ -1866,15 +1868,15 @@ at any rate be kept in sync with <a class="reference internal" href="#id56">\Pol
</div></blockquote>
</section>
<section id="polprintintervals-varname">
-<span id="id61"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervals*[&lt;varname&gt;]{}</span></code></h4>
+<span id="id62"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervals*[&lt;varname&gt;]{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolPrintIntervals*[&lt;varname&gt;]{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>This starred variant produces an alternative output (which
displays the root multiplicity), and is provided as an
example of customization.</p>
-<p>As replacement for <a class="reference internal" href="#id56">\PolPrintIntervalsKnownRoot</a>,
-<a class="reference internal" href="#id58">\PolPrintIntervalsPrintExactZero</a>,
-<a class="reference internal" href="#id57">\PolPrintIntervalsUnknownRoot</a> it uses its own
+<p>As replacement for <a class="reference internal" href="#id57">\PolPrintIntervalsKnownRoot</a>,
+<a class="reference internal" href="#id59">\PolPrintIntervalsPrintExactZero</a>,
+<a class="reference internal" href="#id58">\PolPrintIntervalsUnknownRoot</a> it uses its own
<code class="docutils literal notranslate"><span class="pre">\POL&#64;&#64;PrintIntervals...</span></code> macros. We only reproduce here one
definition:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\POL</span>@@PrintIntervalsPrintExactZero<span class="nb">{</span><span class="c">%</span>
@@ -1886,7 +1888,7 @@ definition:</p>
<p>Multiplicities are printed using this auxiliary macro:</p>
</div></blockquote>
<section id="polprintintervalsprintmultiplicity">
-<span id="id62"></span><h5><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintMultiplicity</span></code></h5>
+<span id="id63"></span><h5><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsPrintMultiplicity</span></code></h5>
<blockquote>
<div><p>whose default definition is:</p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\newcommand\PolPrintIntervalsPrintMultiplicity</span><span class="nb">{</span>(<span class="k">\mbox</span><span class="nb">{</span>mult. <span class="nb">}</span><span class="k">\PolPrintIntervalsTheMultiplicity</span>)<span class="nb">}</span>
@@ -1910,19 +1912,19 @@ if testing with a non LaTeX macro format.</p>
<code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr</span></code> which need a <code class="docutils literal notranslate"><span class="pre">\write</span></code>, <code class="docutils literal notranslate"><span class="pre">\edef</span></code> or a
<code class="docutils literal notranslate"><span class="pre">\csname...\endcsname</span></code> context.</p>
<section id="poltoexpr">
-<span id="id63"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToExpr{}</span></code></h3>
+<span id="id64"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToExpr{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToExpr{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
<blockquote>
-<div><p>Produces expandably <a class="footnote-reference brackets" href="#id65" id="id64" role="doc-noteref"><span class="fn-bracket">[</span>3<span class="fn-bracket">]</span></a> the string <code class="docutils literal notranslate"><span class="pre">coeff_N*x^N+...</span></code>, i.e. the
+<div><p>Produces expandably <a class="footnote-reference brackets" href="#id66" id="id65" role="doc-noteref"><span class="fn-bracket">[</span>3<span class="fn-bracket">]</span></a> the string <code class="docutils literal notranslate"><span class="pre">coeff_N*x^N+...</span></code>, i.e. the
polynomial is using descending powers.</p>
-<aside class="footnote brackets" id="id65" role="note">
-<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id64">3</a><span class="fn-bracket">]</span></span>
+<aside class="footnote brackets" id="id66" role="note">
+<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id65">3</a><span class="fn-bracket">]</span></span>
<p>requires exhaustive expansion, for example as triggered by
<code class="docutils literal notranslate"><span class="pre">\write</span></code> or <code class="docutils literal notranslate"><span class="pre">\edef</span></code>.</p>
</aside>
<p>Since <code class="docutils literal notranslate"><span class="pre">0.8</span></code> the input is not restricted to be a polynomial name but
is allowed to be an arbitrary expression. Then <code class="docutils literal notranslate"><span class="pre">x</span></code> is expected as
-indeterminate but this can be customized via <a class="reference internal" href="#id67">\PolToExprInVar</a>.</p>
+indeterminate but this can be customized via <a class="reference internal" href="#id68">\PolToExprInVar</a>.</p>
<p>The output uses the letter <code class="docutils literal notranslate"><span class="pre">x</span></code> by default, this is customizable
via <a class="reference internal" href="#poltoexprvar">\PolToExprVar</a>. The default output is compatible both with</p>
<ul class="simple">
@@ -1930,7 +1932,7 @@ via <a class="reference internal" href="#poltoexprvar">\PolToExprVar</a>. The d
<li><p>and the PSTricks <code class="docutils literal notranslate"><span class="pre">\psplot[algebraic]</span></code> input format.</p></li>
</ul>
<p>Attention that it is not compatible with Python, see further
-<a class="reference internal" href="#id69">\PolToExprCaret</a> in this context.</p>
+<a class="reference internal" href="#id70">\PolToExprCaret</a> in this context.</p>
<p>The following applies:</p>
<ul class="simple">
<li><p>vanishing coefficients are skipped (issue <code class="docutils literal notranslate"><span class="pre">\poltoexpralltrue</span></code> to
@@ -1953,16 +1955,19 @@ is not supposed to be a typesetting macro.</p></li>
redefinition must maintain the expandability property.</p>
</div></blockquote>
<section id="poltoexprvar">
-<span id="id66"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprVar</span></code></h4>
+<span id="id67"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprVar</span></code></h4>
<blockquote>
<div><p>Defaults to <code class="docutils literal notranslate"><span class="pre">x</span></code>. The letter used in the macro output.</p>
</div></blockquote>
</section>
<section id="poltoexprinvar">
-<span id="id67"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprInVar</span></code></h4>
+<span id="id68"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprInVar</span></code></h4>
<blockquote>
<div><p>Defaults to <code class="docutils literal notranslate"><span class="pre">x</span></code>: the letter used as the polynomial indeterminate
-in the macro input.</p>
+in the macro input:</p>
+<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\def\PolToExprInVar</span><span class="nb">{</span>x<span class="nb">}</span><span class="c">% (default)</span>
+</pre></div>
+</div>
<p>Recall that declared polynomials are more efficiently used in
algebraic expressions without the <code class="docutils literal notranslate"><span class="pre">(x)</span></code>, i.e. <code class="docutils literal notranslate"><span class="pre">P*Q</span></code> is better
than <code class="docutils literal notranslate"><span class="pre">P(x)*Q(x)</span></code>. Thus the input, even if an expression, does not
@@ -1971,13 +1976,13 @@ have to contain any <code class="docutils literal notranslate"><span class="pre"
</div></blockquote>
</section>
<section id="poltoexprtimes">
-<span id="id68"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprTimes</span></code></h4>
+<span id="id69"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprTimes</span></code></h4>
<blockquote>
<div><p>Defaults to <code class="docutils literal notranslate"><span class="pre">*</span></code>.</p>
</div></blockquote>
</section>
<section id="poltoexprcaret">
-<span id="id69"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprCaret</span></code></h4>
+<span id="id70"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprCaret</span></code></h4>
<blockquote>
<div><p>Defaults to <code class="docutils literal notranslate"><span class="pre">^</span></code> of catcode 12. Set it to
expand to <code class="docutils literal notranslate"><span class="pre">**</span></code> for Python compatible output.</p>
@@ -1985,7 +1990,7 @@ expand to <code class="docutils literal notranslate"><span class="pre">**</span
</div></blockquote>
</section>
<section id="poltoexprcmd">
-<span id="id70"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprCmd{}</span></code></h4>
+<span id="id71"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprCmd{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToExprCmd{&lt;raw_coeff&gt;}</span></code></p>
<blockquote>
<div><p>Defaults to <code class="docutils literal notranslate"><span class="pre">\xintPRaw{\xintRawWithZeros{#1}}</span></code>.</p>
@@ -2005,25 +2010,25 @@ and not their finite decimal expansion with no denominator.</p>
</div></blockquote>
</section>
<section id="poltoexproneterm">
-<span id="id71"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprOneTerm{}{}</span></code></h4>
+<span id="id72"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprOneTerm{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToExprOneTerm{&lt;raw_coeff&gt;}{&lt;exponent&gt;}</span></code></p>
<blockquote>
<div><p>This is the macro which from the coefficient and the exponent
produces the corresponding term in output, such as <code class="docutils literal notranslate"><span class="pre">2/3*x^7</span></code>.</p>
<p>For its default definition, see the source code. It uses
<a class="reference internal" href="#poltoexprcmd">\PolToExprCmd</a>, <a class="reference internal" href="#poltoexprtimes">\PolToExprTimes</a>, <a class="reference internal" href="#poltoexprvar">\PolToExprVar</a> and
-<a class="reference internal" href="#id69">\PolToExprCaret</a>.</p>
+<a class="reference internal" href="#id70">\PolToExprCaret</a>.</p>
</div></blockquote>
</section>
<section id="poltoexpronetermstylea">
-<span id="id72"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprOneTermStyleA{}{}</span></code></h4>
+<span id="id73"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprOneTermStyleA{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToExprOneTermStyleA{&lt;raw_coeff&gt;}{&lt;exponent&gt;}</span></code></p>
<blockquote>
<div><p>This holds the default package meaning of <code class="docutils literal notranslate"><span class="pre">\PolToExprOneTerm</span></code>.</p>
</div></blockquote>
</section>
<section id="poltoexpronetermstyleb">
-<span id="id73"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprOneTermStyleB{}{}</span></code></h4>
+<span id="id74"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprOneTermStyleB{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToExprOneTermStyleB{&lt;raw_coeff&gt;}{&lt;exponent&gt;}</span></code></p>
<blockquote>
<div><p>This holds an alternative meaning, which puts the fractional part of
@@ -2032,14 +2037,14 @@ a coefficient after the monomial, i.e. like this:</p>
</pre></div>
</div>
<p><a class="reference internal" href="#poltoexprcmd">\PolToExprCmd</a> isn’t used at all in this style. But
-<a class="reference internal" href="#poltoexprtimes">\PolToExprTimes</a>, <a class="reference internal" href="#poltoexprvar">\PolToExprVar</a> and <a class="reference internal" href="#id69">\PolToExprCaret</a> are obeyed.</p>
+<a class="reference internal" href="#poltoexprtimes">\PolToExprTimes</a>, <a class="reference internal" href="#poltoexprvar">\PolToExprVar</a> and <a class="reference internal" href="#id70">\PolToExprCaret</a> are obeyed.</p>
<p>To activate it use <code class="docutils literal notranslate"><span class="pre">\let\PolToExprOneTerm\PolToExprOneTermStyleB</span></code>.
To revert to the package default behaviour, issue
<code class="docutils literal notranslate"><span class="pre">\let\PolToExprOneTerm\PolToExprOneTermStyleA</span></code>.</p>
</div></blockquote>
</section>
<section id="poltoexprtermprefix">
-<span id="id74"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprTermPrefix{}</span></code></h4>
+<span id="id75"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToExprTermPrefix{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToExprTermPrefix{&lt;raw_coeff&gt;}</span></code></p>
<blockquote>
<div><p>It receives as argument the coefficient. Its default behaviour is
@@ -2051,7 +2056,7 @@ positive coefficient does not output an explicit <code class="docutils literal n
</section>
</section>
<section id="poltofloatexpr">
-<span id="id75"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr{}</span></code></h3>
+<span id="id76"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
<blockquote>
<div><p>Similar to <a class="reference internal" href="#poltoexpr"><span class="std std-ref">\PolToExpr{&lt;pol. expr.&gt;}</span></a> but using
@@ -2069,7 +2074,7 @@ in between).</p>
<p>Extended at <code class="docutils literal notranslate"><span class="pre">0.8</span></code> to accept general expressions as input.</p>
</div></blockquote>
<section id="poltofloatexproneterm">
-<span id="id76"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToFloatExprOneTerm{}{}</span></code></h4>
+<span id="id77"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToFloatExprOneTerm{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToFloatExprOneTerm{&lt;raw_coeff&gt;}{&lt;exponent&gt;}</span></code></p>
<blockquote>
<div><p>Similar to <a class="reference internal" href="#poltoexproneterm"><span class="std std-ref">\PolToExprOneTerm{&lt;raw_coeff&gt;}{&lt;exponent&gt;}</span></a>. But does not treat
@@ -2077,7 +2082,7 @@ especially coefficients equal to plus or minus one.</p>
</div></blockquote>
</section>
<section id="poltofloatexprcmd">
-<span id="id77"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToFloatExprCmd{}</span></code></h4>
+<span id="id78"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolToFloatExprCmd{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToFloatExprCmd{&lt;raw_coeff&gt;}</span></code></p>
<blockquote>
<div><p>The one-argument macro used by <code class="docutils literal notranslate"><span class="pre">\PolToFloatExprOneTerm</span></code>.
@@ -2087,8 +2092,8 @@ zeroes.</p>
</div></blockquote>
</section>
</section>
-<section id="id78">
-<span id="id79"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToExpr*{}</span></code></h3>
+<section id="id79">
+<span id="id80"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToExpr*{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToExpr*{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
<blockquote>
<div><p>Ascending powers: <code class="docutils literal notranslate"><span class="pre">coeff_0+coeff_1*x+coeff_2*x^2+...</span></code>.</p>
@@ -2097,8 +2102,8 @@ zeroes.</p>
<a class="reference internal" href="#poltoexpr"><span class="std std-ref">\PolToExpr{&lt;pol. expr.&gt;}</span></a>.</p>
</div></blockquote>
</section>
-<section id="id80">
-<span id="id81"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr*{}</span></code></h3>
+<section id="id81">
+<span id="id82"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr*{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr*{&lt;pol.</span> <span class="pre">expr.&gt;}</span></code></p>
<blockquote>
<div><p>Ascending powers.</p>
@@ -2106,7 +2111,7 @@ zeroes.</p>
</div></blockquote>
</section>
<section id="polnthcoeff">
-<span id="id82"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolNthCoeff{}{}</span></code></h3>
+<span id="id83"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolNthCoeff{}{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolNthCoeff{&lt;polname&gt;}{&lt;index&gt;}</span></code></p>
<blockquote>
<div><p>It expands to the raw <code class="docutils literal notranslate"><span class="pre">N</span></code>-th coefficient (<code class="docutils literal notranslate"><span class="pre">N=0</span></code> corresponds to
@@ -2118,14 +2123,14 @@ for <code class="docutils literal notranslate"><span class="pre">N&lt;-1-degree<
</div></blockquote>
</section>
<section id="polleadingcoeff">
-<span id="id83"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolLeadingCoeff{}</span></code></h3>
+<span id="id84"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolLeadingCoeff{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolLeadingCoeff{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the leading coefficient.</p>
</div></blockquote>
</section>
<section id="poldegree">
-<span id="id84"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDegree{}</span></code></h3>
+<span id="id85"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDegree{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolDegree{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>It expands to the degree. This is <code class="docutils literal notranslate"><span class="pre">-1</span></code> if zero polynomial but this
@@ -2133,7 +2138,7 @@ may change in future. Should it then expand to <code class="docutils literal not
</div></blockquote>
</section>
<section id="policontent">
-<span id="id85"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolIContent{}</span></code></h3>
+<span id="id86"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolIContent{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolIContent{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>It expands to the contents of the polynomial, i.e. to the positive
@@ -2143,7 +2148,7 @@ with integer coefficients having no common prime divisor.</p>
</div></blockquote>
</section>
<section id="poltolist">
-<span id="id86"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToList{}</span></code></h3>
+<span id="id87"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToList{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToList{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>Expands to <code class="docutils literal notranslate"><span class="pre">{coeff_0}{coeff_1}...{coeff_N}</span></code> with <code class="docutils literal notranslate"><span class="pre">N</span></code> = degree, and
@@ -2153,7 +2158,7 @@ empty output.)</p>
</div></blockquote>
</section>
<section id="poltocsv">
-<span id="id87"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToCSV{}</span></code></h3>
+<span id="id88"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolToCSV{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolToCSV{&lt;polname&gt;}</span></code></p>
<blockquote>
<div><p>Expands to <code class="docutils literal notranslate"><span class="pre">coeff_0,</span> <span class="pre">coeff_1,</span> <span class="pre">coeff_2,</span> <span class="pre">.....,</span> <span class="pre">coeff_N</span></code>, starting
@@ -2205,12 +2210,12 @@ been issued before.</p>
</div>
<p>To use the <em>exact coefficients</em> with <em>exactly executed</em> additions
and multiplications and do the rounding only as the final last step,
-the following syntax can be used: <a class="footnote-reference brackets" href="#id89" id="id88" role="doc-noteref"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></a></p>
+the following syntax can be used: <a class="footnote-reference brackets" href="#id90" id="id89" role="doc-noteref"><span class="fn-bracket">[</span>4<span class="fn-bracket">]</span></a></p>
<div class="highlight-latex notranslate"><div class="highlight"><pre><span></span><span class="k">\xintfloateval</span><span class="nb">{</span>3.27*<span class="k">\xintexpr</span> f(2.53)<span class="k">\relax</span><span class="nb">^</span>2<span class="nb">}</span>
</pre></div>
</div>
-<aside class="footnote brackets" id="id89" role="note">
-<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id88">4</a><span class="fn-bracket">]</span></span>
+<aside class="footnote brackets" id="id90" role="note">
+<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id89">4</a><span class="fn-bracket">]</span></span>
<p>Cf. <a class="reference external" href="https://www.ctan.org/pkg/xintexpr">xintexpr</a> documentation about nested expressions.</p>
</aside>
</div></blockquote>
@@ -2226,7 +2231,7 @@ to) a format acceptable to the <a class="reference external" href="https://www.c
<section id="expandable-macros-in-relation-to-root-localization-via-sturm-theorem">
<h3>Expandable macros in relation to root localization via <a class="reference external" href="https://en.wikipedia.org/wiki/Sturm%27s_theorem">Sturm Theorem</a></h3>
<section id="polsturmchainlength">
-<span id="id90"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmChainLength{}</span></code></h4>
+<span id="id91"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmChainLength{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmChainLength{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>Returns the integer <code class="docutils literal notranslate"><span class="pre">N</span></code> such that <code class="docutils literal notranslate"><span class="pre">sturmname_N</span></code> is the last one
@@ -2235,7 +2240,7 @@ in the Sturm chain <code class="docutils literal notranslate"><span class="pre">
</div></blockquote>
</section>
<section id="polsturmifzeroexactlyknown">
-<span id="id91"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIfZeroExactlyKnown{}{}{}{}</span></code></h4>
+<span id="id92"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIfZeroExactlyKnown{}{}{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIfZeroExactlyKnown{&lt;sturmname&gt;}{&lt;index&gt;}{T}{F}</span></code></p>
<blockquote>
<div><p>Executes <code class="docutils literal notranslate"><span class="pre">T</span></code> if the <code class="docutils literal notranslate"><span class="pre">index</span></code>-th interval reduces to a singleton,
@@ -2243,7 +2248,7 @@ i.e. the root is known exactly, else <code class="docutils literal notranslate">
</div></blockquote>
</section>
<section id="polsturmisolatedzeroleft">
-<span id="id92"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroLeft{}{}</span></code></h4>
+<span id="id93"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroLeft{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroLeft{&lt;sturmname&gt;}{&lt;index&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the left end-point for the <code class="docutils literal notranslate"><span class="pre">index</span></code>-th interval, as
@@ -2251,14 +2256,14 @@ computed by some earlier <a class="reference internal" href="#polsturmisolatezer
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Execution of this macro after some
-<a class="reference internal" href="#id46">\PolRefineInterval{&lt;sturmname&gt;}{&lt;index&gt;}</a>
+<a class="reference internal" href="#id47">\PolRefineInterval{&lt;sturmname&gt;}{&lt;index&gt;}</a>
will take into account the now known tighter bounds.</p>
</div>
<p>The value is pre-formatted using <a class="reference internal" href="#poldectostring">\PolDecTostring</a>.</p>
</div></blockquote>
</section>
<section id="polsturmisolatedzeroright">
-<span id="id93"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroRight{}{}</span></code></h4>
+<span id="id94"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroRight{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroRight{&lt;sturmname&gt;}{&lt;index&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the right end-point for the <code class="docutils literal notranslate"><span class="pre">index</span></code>-th interval as
@@ -2268,21 +2273,21 @@ possibly refined afterwards.</p>
</div></blockquote>
</section>
<section id="polsturmisolatedzeromultiplicity">
-<span id="id94"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroMultiplicity{}{}</span></code></h4>
+<span id="id95"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroMultiplicity{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmIsolatedZeroMultiplicity{&lt;sturmname&gt;}{&lt;index&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the multiplicity of the unique root contained in the
<code class="docutils literal notranslate"><span class="pre">index</span></code>-th interval.</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p>A prior execution of <a class="reference internal" href="#id38"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> is mandatory.</p>
+<p>A prior execution of <a class="reference internal" href="#id39"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> is mandatory.</p>
</div>
<p>See <code class="docutils literal notranslate"><span class="pre">The</span> <span class="pre">degree</span> <span class="pre">nine</span> <span class="pre">polynomial</span> <span class="pre">with</span> <span class="pre">0.99,</span> <span class="pre">0.999,</span> <span class="pre">0.9999</span> <span class="pre">as</span> <span class="pre">triple</span>
<span class="pre">roots</span></code> in <code class="docutils literal notranslate"><span class="pre">polexpr-examples.pdf</span></code>.</p>
</div></blockquote>
</section>
<section id="polsturmnbofisolatedzeros">
-<span id="id95"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfIsolatedZeros{}</span></code></h4>
+<span id="id96"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfIsolatedZeros{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfIsolatedZeros{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the number of real roots of the polynomial
@@ -2339,7 +2344,7 @@ the polynomial used to create the Sturm chain) which are less than
or equal to the given <code class="docutils literal notranslate"><span class="pre">value</span></code>.</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p><a class="reference internal" href="#id38"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> (or the double starred
+<p><a class="reference internal" href="#id39"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> (or the double starred
variant) must have been executed beforehand.</p>
</div>
</div></blockquote>
@@ -2352,50 +2357,50 @@ variant) must have been executed beforehand.</p>
which are less than or equal to the given <code class="docutils literal notranslate"><span class="pre">expression</span></code>.</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p><a class="reference internal" href="#id38"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> (or the double starred
+<p><a class="reference internal" href="#id39"><span class="std std-ref">\PolSturmIsolateZeros*{&lt;sturmname&gt;}</span></a> (or the double starred
variant) must have been executed beforehand.</p>
</div>
</div></blockquote>
</section>
<section id="polsturmnbofrationalroots">
-<span id="id96"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfRationalRoots{}</span></code></h4>
+<span id="id97"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfRationalRoots{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfRationalRoots{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the number of rational roots (without multiplicities).</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p><a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
+<p><a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
beforehand.</p>
</div>
</div></blockquote>
</section>
<section id="polsturmnbofrationalrootswithmultiplicities">
-<span id="id97"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfRationalRootsWithMultiplicities{}</span></code></h4>
+<span id="id98"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfRationalRootsWithMultiplicities{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmNbOfRationalRootsWithMultiplicities{&lt;sturmname&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the number of rational roots (counted with multiplicities).</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p><a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
+<p><a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
beforehand.</p>
</div>
</div></blockquote>
</section>
<section id="polsturmrationalroot">
-<span id="id98"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRoot{}{}</span></code></h4>
+<span id="id99"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRoot{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRoot{&lt;sturmname&gt;}{&lt;k&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the k-th rational root. They are enumerated from left to
right starting at index value <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p><a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
+<p><a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
beforehand.</p>
</div>
</div></blockquote>
</section>
<section id="polsturmrationalrootindex">
-<span id="id99"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRootIndex{}{}</span></code></h4>
+<span id="id100"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRootIndex{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRootIndex{&lt;sturmname&gt;}{&lt;k&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the index of the <code class="docutils literal notranslate"><span class="pre">k</span></code>th rational root as part of the
@@ -2407,25 +2412,25 @@ this nested call:</p>
</div>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p><a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
+<p><a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
beforehand.</p>
</div>
</div></blockquote>
</section>
<section id="polsturmrationalrootmultiplicity">
-<span id="id100"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRootMultiplicity{}{}</span></code></h4>
+<span id="id101"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRootMultiplicity{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolSturmRationalRootMultiplicity{&lt;sturmname&gt;}{&lt;k&gt;}</span></code></p>
<blockquote>
<div><p>Expands to the multiplicity of the <code class="docutils literal notranslate"><span class="pre">k</span></code>th rational root.</p>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
-<p><a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
+<p><a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a> must have been executed
beforehand.</p>
</div>
</div></blockquote>
</section>
<section id="polintervalwidth">
-<span id="id101"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolIntervalWidth{}{}</span></code></h4>
+<span id="id102"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolIntervalWidth{}{}</span></code></h4>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolIntervalWidth{&lt;sturmname&gt;}{&lt;index&gt;}</span></code></p>
<blockquote>
<div><p>The <code class="docutils literal notranslate"><span class="pre">10^E</span></code> width of the current <code class="docutils literal notranslate"><span class="pre">index</span></code>-th root localization
@@ -2436,13 +2441,13 @@ interval. Output is in <a class="reference external" href="https://www.ctan.org/
<section id="expandable-macros-for-use-within-execution-of-polprintintervals">
<h3>Expandable macros for use within execution of <code class="docutils literal notranslate"><span class="pre">\PolPrintIntervals</span></code></h3>
<p>These macros are for usage within custom user redefinitions of
-<a class="reference internal" href="#id56">\PolPrintIntervalsKnownRoot</a>, <a class="reference internal" href="#id57">\PolPrintIntervalsUnknownRoot</a>, or
+<a class="reference internal" href="#id57">\PolPrintIntervalsKnownRoot</a>, <a class="reference internal" href="#id58">\PolPrintIntervalsUnknownRoot</a>, or
in redefinitions of <a class="reference internal" href="#polprintintervalsprintexactzero">PolPrintIntervalsPrintExactZero</a> (used in the
-default for the former) and of <a class="reference internal" href="#id59">\PolPrintIntervalsPrintLeftEndPoint</a>,
-<a class="reference internal" href="#id60">\PolPrintIntervalsPrintRightEndPoint</a> (used in the default for the
+default for the former) and of <a class="reference internal" href="#id60">\PolPrintIntervalsPrintLeftEndPoint</a>,
+<a class="reference internal" href="#id61">\PolPrintIntervalsPrintRightEndPoint</a> (used in the default for the
latter).</p>
<section id="polprintintervalsthevar">
-<span id="id102"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheVar</span></code></h4>
+<span id="id103"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheVar</span></code></h4>
<blockquote>
<div><p>Expands to the name (default <code class="docutils literal notranslate"><span class="pre">Z</span></code>) used for representing the roots,
which was passed as optional argument <code class="docutils literal notranslate"><span class="pre">varname</span></code> to
@@ -2450,31 +2455,31 @@ which was passed as optional argument <code class="docutils literal notranslate"
</div></blockquote>
</section>
<section id="polprintintervalstheindex">
-<span id="id103"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheIndex</span></code></h4>
+<span id="id104"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheIndex</span></code></h4>
<blockquote>
<div><p>Expands to the index of the considered interval (indexing starting
at 1 for the leftmost interval).</p>
</div></blockquote>
</section>
<section id="polprintintervalsthesturmname">
-<span id="id104"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheSturmName</span></code></h4>
+<span id="id105"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheSturmName</span></code></h4>
<blockquote>
<div><p>Expands to the argument which was passed as <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code> to
<a class="reference internal" href="#polprintintervals"><span class="std std-ref">\PolPrintIntervals[varname]{&lt;sturmname&gt;}</span></a>.</p>
</div></blockquote>
</section>
<section id="polprintintervalstheleftendpoint">
-<span id="id105"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheLeftEndPoint</span></code></h4>
+<span id="id106"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheLeftEndPoint</span></code></h4>
<blockquote>
<div><p>The left end point of the interval, as would be produced by
<a class="reference internal" href="#polsturmisolatedzeroleft">\PolSturmIsolatedZeroLeft</a> if it was
used with arguments the Sturm chain name and interval index returned
-by <a class="reference internal" href="#id104">\PolPrintIntervalsTheSturmName</a> and
-<a class="reference internal" href="#id103">\PolPrintIntervalsTheIndex</a>.</p>
+by <a class="reference internal" href="#id105">\PolPrintIntervalsTheSturmName</a> and
+<a class="reference internal" href="#id104">\PolPrintIntervalsTheIndex</a>.</p>
</div></blockquote>
</section>
<section id="polprintintervalstherightendpoint">
-<span id="id106"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheRightEndPoint</span></code></h4>
+<span id="id107"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheRightEndPoint</span></code></h4>
<blockquote>
<div><p>The right end point of the interval, as would be produced by
<a class="reference internal" href="#polsturmisolatedzeroright">\PolSturmIsolatedZeroRight</a> for
@@ -2482,10 +2487,10 @@ this Sturm chain name and index.</p>
</div></blockquote>
</section>
<section id="polprintintervalsthemultiplicity">
-<span id="id107"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheMultiplicity</span></code></h4>
+<span id="id108"></span><h4><code class="docutils literal notranslate"><span class="pre">\PolPrintIntervalsTheMultiplicity</span></code></h4>
<blockquote>
<div><p>The multiplicity of the unique root within the interval of index
-<a class="reference internal" href="#id103">\PolPrintIntervalsTheIndex</a>. Makes sense only if the starred (or
+<a class="reference internal" href="#id104">\PolPrintIntervalsTheIndex</a>. Makes sense only if the starred (or
double-starred) variant of <a class="reference internal" href="#polsturmisolatezeros">\PolSturmIsolateZeros</a> was used earlier.</p>
</div></blockquote>
</section>
@@ -2494,7 +2499,7 @@ double-starred) variant of <a class="reference internal" href="#polsturmisolatez
<section id="tex-booleans-with-names-enacting-their-defaults">
<h2>TeX Booleans (with names enacting their defaults)</h2>
<section id="xintverbosefalse">
-<span id="id108"></span><h3><code class="docutils literal notranslate"><span class="pre">\xintverbosefalse</span></code></h3>
+<span id="id109"></span><h3><code class="docutils literal notranslate"><span class="pre">\xintverbosefalse</span></code></h3>
<blockquote>
<div><p>This is actually an <a class="reference external" href="https://www.ctan.org/pkg/xintexpr">xintexpr</a> configuration. Setting it to
<code class="docutils literal notranslate"><span class="pre">true</span></code> triggers the writing of information to the log when new
@@ -2507,7 +2512,7 @@ considered unstable and undocumented internal structures.</p>
</div></blockquote>
</section>
<section id="polnewpolverbosefalse">
-<span id="id109"></span><h3><code class="docutils literal notranslate"><span class="pre">\polnewpolverbosefalse</span></code></h3>
+<span id="id110"></span><h3><code class="docutils literal notranslate"><span class="pre">\polnewpolverbosefalse</span></code></h3>
<blockquote>
<div><p>When <code class="docutils literal notranslate"><span class="pre">\poldef</span></code> is used, both a variable and a function are
defined. The default <code class="docutils literal notranslate"><span class="pre">\polnewpolverbosefalse</span></code> setting suppresses
@@ -2528,14 +2533,14 @@ roots obey only the <code class="docutils literal notranslate"><span class="pre"
</div></blockquote>
</section>
<section id="poltypesetallfalse">
-<span id="id110"></span><h3><code class="docutils literal notranslate"><span class="pre">\poltypesetallfalse</span></code></h3>
+<span id="id111"></span><h3><code class="docutils literal notranslate"><span class="pre">\poltypesetallfalse</span></code></h3>
<blockquote>
<div><p>If <code class="docutils literal notranslate"><span class="pre">true</span></code>, <a class="reference internal" href="#poltypeset">\PolTypeset</a> will also typeset the vanishing
coefficients.</p>
</div></blockquote>
</section>
<section id="poltoexprallfalse">
-<span id="id111"></span><h3><code class="docutils literal notranslate"><span class="pre">\poltoexprallfalse</span></code></h3>
+<span id="id112"></span><h3><code class="docutils literal notranslate"><span class="pre">\poltoexprallfalse</span></code></h3>
<blockquote>
<div><p>If <code class="docutils literal notranslate"><span class="pre">true</span></code>, <a class="reference internal" href="#poltoexpr"><span class="std std-ref">\PolToExpr{&lt;pol. expr.&gt;}</span></a> and
<a class="reference internal" href="#poltofloatexpr"><span class="std std-ref">\PolToFloatExpr{&lt;pol. expr.&gt;}</span></a> will also
@@ -2546,7 +2551,7 @@ include the vanishing coefficients in their outputs.</p>
<section id="utilities">
<h2>Utilities</h2>
<section id="poldectostring">
-<span id="id112"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDecToString{}</span></code></h3>
+<span id="id113"></span><h3><code class="docutils literal notranslate"><span class="pre">\PolDecToString{}</span></code></h3>
<p>Syntax: <code class="docutils literal notranslate"><span class="pre">\PolDecToString{decimal</span> <span class="pre">number}</span></code></p>
<blockquote>
<div><p>This is a utility macro to print decimal numbers. It is an alias
@@ -2571,11 +2576,11 @@ documentation.</p>
<div><p>Serves to customize the package. Currently only two keys are
recognized:</p>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">norr</span></code>: the postfix that <a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>
+<li><p><code class="docutils literal notranslate"><span class="pre">norr</span></code>: the postfix that <a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>
should append to <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code> to declare the primitive polynomial
obtained from original one after removal of all rational roots.
The default value is <code class="docutils literal notranslate"><span class="pre">_norr</span></code> (standing for “no rational roots”).</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">sqfnorr</span></code>: the postfix that <a class="reference internal" href="#id41"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>
+<li><p><code class="docutils literal notranslate"><span class="pre">sqfnorr</span></code>: the postfix that <a class="reference internal" href="#id42"><span class="std std-ref">\PolSturmIsolateZeros**{&lt;sturmname&gt;}</span></a>
should append to <code class="docutils literal notranslate"><span class="pre">&lt;sturmname&gt;</span></code> to declare the primitive polynomial
obtained from original one after removal of all rational roots and
suppression of all multiplicities.
@@ -2590,15 +2595,20 @@ no rational roots”).</p></li>
<section id="technicalities">
<h2>Technicalities</h2>
<ul>
-<li><p>The <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> is allowed in the name of a polynomial (independently of
-whether it is of catcode letter or other.) This has always been the
-case, but was not documented by polexpr prior to <code class="docutils literal notranslate"><span class="pre">0.8</span></code>, as the
-author has never found the time to provide some official guidelines on
-how to name temporary variables and the <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> is used already as such
-internally; time has still not yet been found to review the situation
-but it seems reasonable to recommend at any rate to restrict usage of
-<code class="docutils literal notranslate"><span class="pre">&#64;</span></code> to scratch variables of defined macros and to avoid using it to
-name document variable.</p></li>
+<li><p>Do not use the underscore <code class="docutils literal notranslate"><span class="pre">_</span></code> as the <em>first character</em> of a
+polynomial name, even if of catcode letter. This may cause an
+infinite loop.</p></li>
+<li><p>The <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> is allowed in the names of polynomials, independently of
+whether it is of catcode letter or other. In defining macros which
+will use <code class="docutils literal notranslate"><span class="pre">\poldef</span></code> to create polynomials it seems reasonable to
+adopt the convention that <code class="docutils literal notranslate"><span class="pre">&#64;</span></code> as <em>first</em> character in polynomial
+names is to be reserved to temporary auxiliary polynomials.</p>
+<div class="admonition attention">
+<p class="admonition-title">Attention</p>
+<p>Do not use <code class="docutils literal notranslate"><span class="pre">&#64;_</span></code> at start of polynomial names. This is reserved for
+internal usage by the package.</p>
+</div>
+</li>
<li><p>Catcodes are set temporarily by <a class="reference internal" href="#poldef">\poldef</a> macro to safe
values prior to grab the polynomial expression up to the terminator
<code class="docutils literal notranslate"><span class="pre">;</span></code>, and also by <a class="reference internal" href="#id5">\PolDef</a> prior to grab the
@@ -2709,7 +2719,7 @@ documented and unstable. Don’t use them.</p></li>
<li><a class="reference internal" href="#poldef-polname-letter-expression-using-the-letter-as-indeterminate"><code class="docutils literal notranslate"><span class="pre">\poldef</span> <span class="pre">polname(letter):=</span> <span class="pre">expression</span> <span class="pre">using</span> <span class="pre">the</span> <span class="pre">letter</span> <span class="pre">as</span> <span class="pre">indeterminate;</span></code></a></li>
<li><a class="reference internal" href="#poldef-letter-polname-expr-using-the-letter-as-indeterminate"><code class="docutils literal notranslate"><span class="pre">\PolDef[&lt;letter&gt;]{&lt;polname&gt;}{&lt;expr.</span> <span class="pre">using</span> <span class="pre">the</span> <span class="pre">letter</span> <span class="pre">as</span> <span class="pre">indeterminate&gt;}</span></code></a></li>
<li><a class="reference internal" href="#polgenfloatvariant"><code class="docutils literal notranslate"><span class="pre">\PolGenFloatVariant{}</span></code></a></li>
-<li><a class="reference internal" href="#poltypeset"><code class="docutils literal notranslate"><span class="pre">\PolTypeset{}</span></code></a><ul>
+<li><a class="reference internal" href="#poltypeset"><code class="docutils literal notranslate"><span class="pre">\PolTypeset[]{}</span></code></a><ul>
<li><a class="reference internal" href="#poltypesetcmd"><code class="docutils literal notranslate"><span class="pre">\PolTypesetCmd{}</span></code></a><ul>
<li><a class="reference internal" href="#polifcoeffisplusorminusone"><code class="docutils literal notranslate"><span class="pre">\PolIfCoeffIsPlusOrMinusOne{}{}</span></code></a></li>
</ul>
@@ -2719,7 +2729,7 @@ documented and unstable. Don’t use them.</p></li>
<li><a class="reference internal" href="#poltypesetcmdprefix"><code class="docutils literal notranslate"><span class="pre">\PolTypesetCmdPrefix{}</span></code></a></li>
</ul>
</li>
-<li><a class="reference internal" href="#id13"><code class="docutils literal notranslate"><span class="pre">\PolTypeset*{}</span></code></a></li>
+<li><a class="reference internal" href="#id13"><code class="docutils literal notranslate"><span class="pre">\PolTypeset*[]{}</span></code></a></li>
<li><a class="reference internal" href="#pollet"><code class="docutils literal notranslate"><span class="pre">\PolLet{}={}</span></code></a></li>
<li><a class="reference internal" href="#polgloballet"><code class="docutils literal notranslate"><span class="pre">\PolGlobalLet{}={}</span></code></a></li>
<li><a class="reference internal" href="#polassign-toarray"><code class="docutils literal notranslate"><span class="pre">\PolAssign{}\toarray{}</span></code></a></li>
@@ -2727,32 +2737,32 @@ documented and unstable. Don’t use them.</p></li>
<li><a class="reference internal" href="#polfromcsv"><code class="docutils literal notranslate"><span class="pre">\PolFromCSV{}{}</span></code></a></li>
<li><a class="reference internal" href="#polmapcoeffs"><code class="docutils literal notranslate"><span class="pre">\PolMapCoeffs{}{}</span></code></a></li>
<li><a class="reference internal" href="#polreducecoeffs"><code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs{}</span></code></a></li>
-<li><a class="reference internal" href="#id20"><code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs*{}</span></code></a></li>
+<li><a class="reference internal" href="#id21"><code class="docutils literal notranslate"><span class="pre">\PolReduceCoeffs*{}</span></code></a></li>
<li><a class="reference internal" href="#polmakemonic"><code class="docutils literal notranslate"><span class="pre">\PolMakeMonic{}</span></code></a></li>
<li><a class="reference internal" href="#polmakeprimitive"><code class="docutils literal notranslate"><span class="pre">\PolMakePrimitive{}</span></code></a></li>
<li><a class="reference internal" href="#poldiff"><code class="docutils literal notranslate"><span class="pre">\PolDiff{}{}</span></code></a></li>
-<li><a class="reference internal" href="#id25"><code class="docutils literal notranslate"><span class="pre">\PolDiff[]{}{}</span></code></a></li>
+<li><a class="reference internal" href="#id26"><code class="docutils literal notranslate"><span class="pre">\PolDiff[]{}{}</span></code></a></li>
<li><a class="reference internal" href="#polantidiff"><code class="docutils literal notranslate"><span class="pre">\PolAntiDiff{}{}</span></code></a></li>
-<li><a class="reference internal" href="#id28"><code class="docutils literal notranslate"><span class="pre">\PolAntiDiff[]{}{}</span></code></a></li>
+<li><a class="reference internal" href="#id29"><code class="docutils literal notranslate"><span class="pre">\PolAntiDiff[]{}{}</span></code></a></li>
<li><a class="reference internal" href="#poldivide"><code class="docutils literal notranslate"><span class="pre">\PolDivide{}{}{}{}</span></code></a></li>
<li><a class="reference internal" href="#polquo"><code class="docutils literal notranslate"><span class="pre">\PolQuo{}{}{}</span></code></a></li>
<li><a class="reference internal" href="#polrem"><code class="docutils literal notranslate"><span class="pre">\PolRem{}{}{}</span></code></a></li>
<li><a class="reference internal" href="#polgcd"><code class="docutils literal notranslate"><span class="pre">\PolGCD{}{}{}</span></code></a></li>
<li><a class="reference internal" href="#root-localization-routines-via-the-sturm-theorem">Root localization routines via the Sturm Theorem</a><ul>
<li><a class="reference internal" href="#poltosturm"><code class="docutils literal notranslate"><span class="pre">\PolToSturm{}{}</span></code></a></li>
-<li><a class="reference internal" href="#id35"><code class="docutils literal notranslate"><span class="pre">\PolToSturm*{}{}</span></code></a></li>
+<li><a class="reference internal" href="#id36"><code class="docutils literal notranslate"><span class="pre">\PolToSturm*{}{}</span></code></a></li>
<li><a class="reference internal" href="#polsturmisolatezeros"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros{}</span></code></a></li>
-<li><a class="reference internal" href="#id38"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros*{}</span></code></a><ul>
+<li><a class="reference internal" href="#id39"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros*{}</span></code></a><ul>
<li><a class="reference internal" href="#polsturmisolatezerosandgetmultiplicities"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndGetMultiplicities{}</span></code></a></li>
</ul>
</li>
-<li><a class="reference internal" href="#id41"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros**{}</span></code></a><ul>
+<li><a class="reference internal" href="#id42"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZeros**{}</span></code></a><ul>
<li><a class="reference internal" href="#polsturmisolatezerosgetmultiplicitiesandrationalroots"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosGetMultiplicitiesAndRationalRoots</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#polsturmisolatezerosandfindrationalroots"><code class="docutils literal notranslate"><span class="pre">\PolSturmIsolateZerosAndFindRationalRoots{}</span></code></a></li>
<li><a class="reference internal" href="#polrefineinterval"><code class="docutils literal notranslate"><span class="pre">\PolRefineInterval*{}{}</span></code></a></li>
-<li><a class="reference internal" href="#id46"><code class="docutils literal notranslate"><span class="pre">\PolRefineInterval[]{}{}</span></code></a></li>
+<li><a class="reference internal" href="#id47"><code class="docutils literal notranslate"><span class="pre">\PolRefineInterval[]{}{}</span></code></a></li>
<li><a class="reference internal" href="#polensureintervallength"><code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLength{}{}{}</span></code></a></li>
<li><a class="reference internal" href="#polensureintervallengths"><code class="docutils literal notranslate"><span class="pre">\PolEnsureIntervalLengths{}{}</span></code></a></li>
<li><a class="reference internal" href="#polsettosturmchainsignchangesat"><code class="docutils literal notranslate"><span class="pre">\PolSetToSturmChainSignChangesAt{}{}{}</span></code></a></li>
@@ -2795,8 +2805,8 @@ documented and unstable. Don’t use them.</p></li>
<li><a class="reference internal" href="#poltofloatexprcmd"><code class="docutils literal notranslate"><span class="pre">\PolToFloatExprCmd{}</span></code></a></li>
</ul>
</li>
-<li><a class="reference internal" href="#id78"><code class="docutils literal notranslate"><span class="pre">\PolToExpr*{}</span></code></a></li>
-<li><a class="reference internal" href="#id80"><code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr*{}</span></code></a></li>
+<li><a class="reference internal" href="#id79"><code class="docutils literal notranslate"><span class="pre">\PolToExpr*{}</span></code></a></li>
+<li><a class="reference internal" href="#id81"><code class="docutils literal notranslate"><span class="pre">\PolToFloatExpr*{}</span></code></a></li>
<li><a class="reference internal" href="#polnthcoeff"><code class="docutils literal notranslate"><span class="pre">\PolNthCoeff{}{}</span></code></a></li>
<li><a class="reference internal" href="#polleadingcoeff"><code class="docutils literal notranslate"><span class="pre">\PolLeadingCoeff{}</span></code></a></li>
<li><a class="reference internal" href="#poldegree"><code class="docutils literal notranslate"><span class="pre">\PolDegree{}</span></code></a></li>
@@ -2886,7 +2896,7 @@ documented and unstable. Don’t use them.</p></li>
<li class="right" >
<a href="polexpr.html" title="Introduction to polexpr"
>previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="polexpr.html">polexpr 0.8.7 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-0"><a href="polexpr.html">polexpr 0.8.7a documentation</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">polexpr reference</a></li>
</ul>
</div>