summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-02-05 21:56:17 +0000
committerKarl Berry <karl@freefriends.org>2019-02-05 21:56:17 +0000
commit076635117d18350a7f9fa5cf2ca4bd966e513483 (patch)
tree29c269b9f8a3f58e8ab87a8088333c3f47a95fb3
parent55c5791c6ab8cf082514fe407968cf20b165639a (diff)
polexpr (5feb19)
git-svn-id: svn://tug.org/texlive/trunk@49948 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/polexpr/README.md11
-rw-r--r--Master/texmf-dist/doc/latex/polexpr/polexpr.html42
-rw-r--r--Master/texmf-dist/doc/latex/polexpr/polexpr.txt40
-rw-r--r--Master/texmf-dist/tex/latex/polexpr/polexpr.sty121
4 files changed, 117 insertions, 97 deletions
diff --git a/Master/texmf-dist/doc/latex/polexpr/README.md b/Master/texmf-dist/doc/latex/polexpr/README.md
index fb50e104a66..d311eb67e6b 100644
--- a/Master/texmf-dist/doc/latex/polexpr/README.md
+++ b/Master/texmf-dist/doc/latex/polexpr/README.md
@@ -4,7 +4,7 @@ Package polexpr README
License
-------
-Copyright (C) 2018 Jean-François Burnol
+Copyright (C) 2018-2019 Jean-François Burnol
See documentation of package [xint](http://www.ctan.org/pkg/xint) for
contact information.
@@ -73,12 +73,13 @@ Releases
The `'` character can be used in polynomial names.
- 0.6 (2018/11/20)
New feature: multiplicity of roots.
-- 0.7 (2018/12/08)
+- 0.7 (2018/12/08), 0.7.1 (bugfix), 0.7.2 (bugfix) (2018/12/09)
New feature: finding all rational roots.
-- 0.7.1, 0.7.2 (2018/12/09)
- Emergency bugfix.
+- 0.7.3 (2019/02/04)
+ Bugfix: polynomial names ending in digits caused errors. Thanks to
+ Thomas Söll for report.
-Files of 0.7.2 release:
+Files of 0.7.3 release:
- README.md,
- polexpr.sty (package file),
diff --git a/Master/texmf-dist/doc/latex/polexpr/polexpr.html b/Master/texmf-dist/doc/latex/polexpr/polexpr.html
index 39044a2ea54..63780d79efa 100644
--- a/Master/texmf-dist/doc/latex/polexpr/polexpr.html
+++ b/Master/texmf-dist/doc/latex/polexpr/polexpr.html
@@ -362,7 +362,7 @@ ul.auto-toc {
<body>
<div class="document" id="package-polexpr-documentation">
<h1 class="title">Package polexpr documentation</h1>
-<h2 class="subtitle" id="id1">0.7.2 (2018/12/09)</h2>
+<h2 class="subtitle" id="id1">0.7.3 (2019/02/04)</h2>
<!-- comment: -*- fill-column: 72; mode: rst; -*- -->
<div class="contents topic" id="contents">
@@ -753,10 +753,10 @@ of dichotomy method.</p>
</pre>
<p>In this example, the output will look like this (but using math mode):</p>
<pre class="literal-block">
-x^9 − 8.9667x^8 + 35.73400293x^7 − 83.070418400109x^6 + 124.143648875193123x^5
-− 123.683070924326075877x^4 + 82.149260397553075617891x^3
-− 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
-− 0.967100824643585986488103299
+x^9 - 8.9667x^8 + 35.73400293x^7 - 83.070418400109x^6 + 124.143648875193123x^5
+- 123.683070924326075877x^4 + 82.149260397553075617891x^3
+- 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
+- 0.967100824643585986488103299
The multiplicity is 3 at the root x = 0.99
The multiplicity is 3 at the root x = 0.999
@@ -778,10 +778,10 @@ survives:</p>
</pre>
<p>This produces:</p>
<pre class="literal-block">
-x^9 − 8.9667x^8 + 35.73400293x^7 − 83.070418400109x^6 + 124.143648875193123x^5
-− 123.683070924326075877x^4 + 82.149260397553075617891x^3
-− 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
-− 0.967100824643585986488103298
+x^9 - 8.9667x^8 + 35.73400293x^7 - 83.070418400109x^6 + 124.143648875193123x^5
+- 123.683070924326075877x^4 + 82.149260397553075617891x^3
+- 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
+- 0.967100824643585986488103298
The multiplicity is 1 for the root such that 0.98 &lt; x &lt; 0.99
The multiplicity is 1 for the root such that 0.9991 &lt; x &lt; 0.9992
@@ -2078,7 +2078,7 @@ Holds the default package meaning of
<blockquote>
<p>For output in this style:</p>
<pre class="literal-block">
-2*x^11/3+3*x^8/7-x^5−x^4/4−x^3−x^2/2−2*x+1
+2*x^11/3+3*x^8/7-x^5-x^4/4-x^3-x^2/2-2*x+1
</pre>
<p>issue <tt class="docutils literal">\let\PolToExprOneTerm\PolToExprOneTermStyleB</tt> before usage of
<tt class="docutils literal">\PolToExpr</tt>. Note that then <tt class="docutils literal">\PolToExprCmd</tt> isn't used at all.
@@ -2816,11 +2816,7 @@ acts like the <a class="reference internal" href="#polsturmisolatezeros">non-sta
</li>
</ul>
</li>
-<li><p class="first">v0.7 (2018/12/08) (not released)</p>
-</li>
-<li><p class="first">v0.7.1 (2018/12/09) (bugfix)</p>
-</li>
-<li><p class="first">v0.7.2 (2018/12/09)</p>
+<li><p class="first">v0.7 (2018/12/08), v0.7.1 (bugfix), v0.7.2 (2nd bugfix) (2018/12/09)</p>
<ul class="simple">
<li>breaking changes:<ul>
<li>although <a class="reference internal" href="#polprintintervals-varname-sturmname">\PolPrintIntervals[varname]{sturmname}</a> default output
@@ -2870,6 +2866,22 @@ existed (thanks to Thomas Söll for report).</li>
</li>
</ul>
</li>
+<li><p class="first">v0.7.3 (2019/02/04)</p>
+<ul class="simple">
+<li>bug fixes:<ul>
+<li>Debugging information not destined to user showed in log if root
+finding was done under <tt class="docutils literal">\xintverbosetrue</tt> regime.</li>
+<li><a class="reference internal" href="#polprintintervalsthevar">\PolPrintIntervalsTheVar</a> remained defined after
+<a class="reference internal" href="#polprintintervals">\PolPrintIntervals</a> but was left undefined after
+<a class="reference internal" href="#id18">\PolPrintIntervals*</a> (reported by Jürgen Gilg). Now remains
+defined in both cases, and <a class="reference internal" href="#polprintintervalsthesturmname">\PolPrintIntervalsTheSturmName</a>
+also.</li>
+<li>Polynomial names ending in digits caused errors (reported by Thomas
+Söll).</li>
+</ul>
+</li>
+</ul>
+</li>
</ul>
</div>
<div class="section" id="acknowledgments">
diff --git a/Master/texmf-dist/doc/latex/polexpr/polexpr.txt b/Master/texmf-dist/doc/latex/polexpr/polexpr.txt
index d77361edc4a..836e044f155 100644
--- a/Master/texmf-dist/doc/latex/polexpr/polexpr.txt
+++ b/Master/texmf-dist/doc/latex/polexpr/polexpr.txt
@@ -4,7 +4,7 @@
Package polexpr documentation
===============================
-0.7.2 (2018/12/09)
+0.7.3 (2019/02/04)
==================
.. contents::
@@ -266,10 +266,10 @@ The degree nine polynomial with 0.99, 0.999, 0.9999 as triple roots
In this example, the output will look like this (but using math mode)::
- x^9 − 8.9667x^8 + 35.73400293x^7 − 83.070418400109x^6 + 124.143648875193123x^5
- − 123.683070924326075877x^4 + 82.149260397553075617891x^3
- − 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
- − 0.967100824643585986488103299
+ x^9 - 8.9667x^8 + 35.73400293x^7 - 83.070418400109x^6 + 124.143648875193123x^5
+ - 123.683070924326075877x^4 + 82.149260397553075617891x^3
+ - 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
+ - 0.967100824643585986488103299
The multiplicity is 3 at the root x = 0.99
The multiplicity is 3 at the root x = 0.999
@@ -292,10 +292,10 @@ survives::
This produces::
- x^9 − 8.9667x^8 + 35.73400293x^7 − 83.070418400109x^6 + 124.143648875193123x^5
- − 123.683070924326075877x^4 + 82.149260397553075617891x^3
- − 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
- − 0.967100824643585986488103298
+ x^9 - 8.9667x^8 + 35.73400293x^7 - 83.070418400109x^6 + 124.143648875193123x^5
+ - 123.683070924326075877x^4 + 82.149260397553075617891x^3
+ - 35.07602992699900159127007x^2 + 8.7364078733314648368671733x
+ - 0.967100824643585986488103298
The multiplicity is 1 for the root such that 0.98 < x < 0.99
The multiplicity is 1 for the root such that 0.9991 < x < 0.9992
@@ -1756,7 +1756,7 @@ and ``\PolToFloatExpr`` (and their auxiliaries) which need a
For output in this style::
- 2*x^11/3+3*x^8/7-x^5−x^4/4−x^3−x^2/2−2*x+1
+ 2*x^11/3+3*x^8/7-x^5-x^4/4-x^3-x^2/2-2*x+1
issue ``\let\PolToExprOneTerm\PolToExprOneTermStyleB`` before usage of
``\PolToExpr``. Note that then ``\PolToExprCmd`` isn't used at all.
@@ -2498,11 +2498,7 @@ CHANGE LOG
- `\\PolSturmNbWithMultOfRootsOf{sturmname}\\LessThanOrEqualTo{value}`_
- `\\PolSturmNbWithMultOfRootsOf{sturmname}\\LessThanOrEqualToExpr{expression}`_
-- v0.7 (2018/12/08) (not released)
-
-- v0.7.1 (2018/12/09) (bugfix)
-
-- v0.7.2 (2018/12/09)
+- v0.7 (2018/12/08), v0.7.1 (bugfix), v0.7.2 (2nd bugfix) (2018/12/09)
* breaking changes:
@@ -2550,6 +2546,20 @@ CHANGE LOG
- `\\PolPrintIntervalsTheSturmName`_
- `\\PolPrintIntervalsTheMultiplicity`_
+- v0.7.3 (2019/02/04)
+
+ * bug fixes:
+
+ - Debugging information not destined to user showed in log if root
+ finding was done under ``\xintverbosetrue`` regime.
+ - `\\PolPrintIntervalsTheVar`_ remained defined after
+ `\\PolPrintIntervals`_ but was left undefined after
+ `\\PolPrintIntervals*`_ (reported by Jürgen Gilg). Now remains
+ defined in both cases, and `\\PolPrintIntervalsTheSturmName`_
+ also.
+ - Polynomial names ending in digits caused errors (reported by Thomas
+ Söll).
+
Acknowledgments
---------------
diff --git a/Master/texmf-dist/tex/latex/polexpr/polexpr.sty b/Master/texmf-dist/tex/latex/polexpr/polexpr.sty
index 9bc286115d8..5aca52408c7 100644
--- a/Master/texmf-dist/tex/latex/polexpr/polexpr.sty
+++ b/Master/texmf-dist/tex/latex/polexpr/polexpr.sty
@@ -1,13 +1,14 @@
% author: Jean-François Burnol
% License: LPPL 1.3c (author-maintained)
\ProvidesPackage{polexpr}%
- [2018/12/09 v0.7.2 Polynomial expressions with rational coefficients (JFB)]%
+ [2019/02/04 v0.7.3 Polynomial expressions with rational coefficients (JFB)]%
\RequirePackage{xintexpr}[2018/06/17]% xint 1.3c for \ifxintglobaldefs boolean
\edef\POL@restorecatcodes
{\catcode`\noexpand\_ \the\catcode`\_ %
\catcode`\noexpand\! \the\catcode`\! %
+ \catcode`\noexpand\* \the\catcode`\* %
\catcode0 \the\catcode0\relax}%
-\catcode`\_ 11 \catcode0 12
+\catcode`\_ 11 \catcode0 12 \catcode`\* 12
\long\def\xint_stop_atfirstoftwo #1#2{ #1}% not yet in xint 1.3c
\long\def\xint_stop_atsecondoftwo #1#2{ #2}%
@@ -889,13 +890,13 @@
\ifnum\POL@isolz@NbOfRoots=\z@
% no real roots, define empty arrays nevertheless
\begingroup\globaldefs\@ne
- \expandafter\xintAssignArray\expandafter\to\csname POL_ZeroMult\POL@sturmname\endcsname
- \expandafter\xintAssignArray\expandafter\to\csname POL_RRIndex\POL@sturmname\endcsname
+ \expandafter\xintAssignArray\expandafter\to\csname POL_ZM\POL@sturmname*\endcsname
+ \expandafter\xintAssignArray\expandafter\to\csname POL_RI\POL@sturmname*\endcsname
\endgroup
\else
% all we currently know is that multiplicities are at least one
\begingroup\globaldefs\@ne
- \expandafter\POL@initarray\csname POL_ZeroMult\POL@sturmname\endcsname{1}%
+ \expandafter\POL@initarray\csname POL_ZM\POL@sturmname*\endcsname{1}%
\endgroup
% on ne va pas utiliser de Horner, mais des divisions par X - x, et ces
% choses vont évoluer, ainsi que le coefficient dominant entier
@@ -935,14 +936,14 @@
\POL@newpol{\POL@sturmname\POL@sqfnorr}% without multiplicities
\POL@newpol{\POL@sturmname\POL@norr}% with multiplicities
% declare the array holding the interval indices for the rational roots
- \expandafter\POL@findrat@doRRarray\csname POL_RRIndex\POL@sturmname\endcsname
+ \expandafter\POL@findrat@doRRarray\csname POL_RI\POL@sturmname*\endcsname
\fi
}%
\def\POL@findrat@doRRarray#1{%
% il faudrait un \xintAssignArray* qui fasse même expansion que \xintFor*
\edef\POL@temp{%
\xintiloop[1+1]
- \romannumeral0\csname POL_ZeroIsKnown\POL@sturmname\xintiloopindex\endcsname
+ \romannumeral0\csname POL_ZK\POL@sturmname*\xintiloopindex\endcsname
\xintbracediloopindex % I should have named it \xintiloopbracedindex...
{}%
\ifnum\xintiloopindex<\POL@isolz@NbOfRoots\space
@@ -1197,13 +1198,13 @@
\def\POL@findrat@loop@storeit{%
% update storage, I can not use storeleftandright here (due to rawout etc...)
\expandafter
- \xdef\csname POL_ZeroInt\POL@sturmname L\POL@findrat@index\endcsname
+ \xdef\csname POL_ZL\POL@sturmname*\POL@findrat@index\endcsname
{\PolDecToString{\POL@findrat@x}}%
\global\expandafter
- \let\csname POL_ZeroInt\POL@sturmname R\POL@findrat@index\expandafter\endcsname
- \csname POL_ZeroInt\POL@sturmname L\POL@findrat@index\endcsname
+ \let\csname POL_ZR\POL@sturmname*\POL@findrat@index\expandafter\endcsname
+ \csname POL_ZL\POL@sturmname*\POL@findrat@index\endcsname
\global\expandafter
- \let\csname POL_ZeroIsKnown\POL@sturmname\POL@findrat@index\endcsname
+ \let\csname POL_ZK\POL@sturmname*\POL@findrat@index\endcsname
\xint_stop_atfirstoftwo
\begingroup\xintglobaldefstrue
% skip some overhead of \xintdefvar...
@@ -1236,9 +1237,9 @@
\POL@mapcoeffs\POL@aux@toint{\POL@sturmname\POL@norr}%
\expandafter
\xdef
- \csname POL_ZeroMult\POL@sturmname\POL@findrat@index\endcsname
+ \csname POL_ZM\POL@sturmname*\POL@findrat@index\endcsname
{\the\numexpr
- \csname POL_ZeroMult\POL@sturmname\POL@findrat@index\endcsname+\@ne}%
+ \csname POL_ZM\POL@sturmname*\POL@findrat@index\endcsname+\@ne}%
\expandafter\POL@findrat@loop@getmultiplicity
\else
% done with multiplicity for this rational root, update stuff
@@ -1290,12 +1291,12 @@
\ifnum\POL@isolz@NbOfRoots=\z@
% no roots, define empty array nevertheless
\begingroup\globaldefs\@ne
- \expandafter\xintAssignArray\expandafter\to\csname POL_ZeroMult\POL@sturmname\endcsname
+ \expandafter\xintAssignArray\expandafter\to\csname POL_ZM\POL@sturmname*\endcsname
\endgroup
\else
% all we currently know is that multiplicities are at least one
\begingroup\globaldefs\@ne
- \expandafter\POL@initarray\csname POL_ZeroMult\POL@sturmname\endcsname{1}%
+ \expandafter\POL@initarray\csname POL_ZM\POL@sturmname*\endcsname{1}%
\endgroup
% check if GCD had positive degree (hence some roots, maybe complex, have
% multiplicity)
@@ -1324,7 +1325,7 @@
\xintloop
% skip some overhead of \xintdefvar...
\XINT_expr_defvar_one{\POL@sturmname M_\x}%
- {\csname .=\csname POL_ZeroMult\POL@sturmname\x\endcsname\endcsname}%
+ {\csname .=\csname POL_ZM\POL@sturmname*\x\endcsname\endcsname}%
\edef\x{\the\numexpr\x-\@ne}%
\ifnum\x>\z@
\repeat
@@ -1396,10 +1397,10 @@
\ifnum\POL@isolzmult@haszero>\z@
\expandafter
\xdef
- \csname POL_ZeroMult\POL@originalsturmname\POL@isolzmult@index\endcsname
+ \csname POL_ZM\POL@originalsturmname*\POL@isolzmult@index\endcsname
{\the\numexpr
- \csname POL_ZeroMult\POL@originalsturmname
- \POL@isolzmult@index\endcsname+\@ne}%
+ \csname POL_ZM\POL@originalsturmname
+ *\POL@isolzmult@index\endcsname+\@ne}%
\else
% multiplicity now known, no need to check this index in future
\@namedef{POL@IfMultIsKnown\POL@isolzmult@index}{\xint_firstoftwo}%
@@ -1449,15 +1450,15 @@
\fi
\ifnum\POL@isolz@NbOfRoots=\z@
\begingroup\globaldefs\@ne
- \expandafter\xintAssignArray\expandafter\to\csname POL_ZeroInt#2L\endcsname
- \expandafter\xintAssignArray\expandafter\to\csname POL_ZeroInt#2R\endcsname
- \expandafter\xintAssignArray\expandafter\to\csname POL_ZeroIsKnown#2\endcsname
+ \expandafter\xintAssignArray\expandafter\to\csname POL_ZL#2*\endcsname
+ \expandafter\xintAssignArray\expandafter\to\csname POL_ZR#2*\endcsname
+ \expandafter\xintAssignArray\expandafter\to\csname POL_ZK#2*\endcsname
\endgroup
\else
\begingroup\globaldefs\@ne
- \expandafter\POL@initarray\csname POL_ZeroInt#2L\endcsname{0}%
- \expandafter\POL@initarray\csname POL_ZeroInt#2R\endcsname{0}%
- \expandafter\POL@initarray\csname POL_ZeroIsKnown#2\endcsname
+ \expandafter\POL@initarray\csname POL_ZL#2*\endcsname{0}%
+ \expandafter\POL@initarray\csname POL_ZR#2*\endcsname{0}%
+ \expandafter\POL@initarray\csname POL_ZK#2*\endcsname
\xint_stop_atsecondoftwo
\endgroup
\ifx\empty#1\relax\expandafter\POL@isolz@getaprioribound\fi
@@ -1697,11 +1698,11 @@
\repeat
}%
\def\POL@isolz@check{% \POL@IsoRightSign must be ready for use here
-\ifxintverbose
- \xintMessage{polexpr}{Info}%
- {\the\numexpr\POL@IsoLeftSV-\POL@IsoRightSV\relax\space roots
- in (\POL@IsoLeft@raw,\POL@IsoRight@raw] (E = \POL@isolz@E)}%
-\fi
+% \ifxintverbose
+% \xintMessage{polexpr}{Info}%
+% {\the\numexpr\POL@IsoLeftSV-\POL@IsoRightSV\relax\space roots
+% in (\POL@IsoLeft@raw,\POL@IsoRight@raw] (E = \POL@isolz@E)}%
+% \fi
\ifcase\numexpr\POL@IsoLeftSV-\POL@IsoRightSV\relax
% no root in ]left, right]
\global\POL@isolz@nextwillneedrefinefalse
@@ -1884,18 +1885,16 @@
}%
\def\POL@refine@storeleftandright{%
\expandafter
- \xdef\csname POL_ZeroInt\POL@sturmname
- L\POL@isolz@IntervalIndex\endcsname
+ \xdef\csname POL_ZL\POL@sturmname*\POL@isolz@IntervalIndex\endcsname
{\PolDecToString{\POL@IsoLeft@rawout}}%
\expandafter
- \xdef\csname POL_ZeroInt\POL@sturmname
- R\POL@isolz@IntervalIndex\endcsname
+ \xdef\csname POL_ZR\POL@sturmname*\POL@isolz@IntervalIndex\endcsname
{\PolDecToString{\POL@IsoRight@rawout}}%
% added at 0.6
\ifnum\POL@IsoRightSign=\z@
\global
\expandafter
- \let\csname POL_ZeroIsKnown\POL@sturmname\POL@isolz@IntervalIndex\endcsname
+ \let\csname POL_ZK\POL@sturmname*\POL@isolz@IntervalIndex\endcsname
\xint_stop_atfirstoftwo
\fi
\begingroup\xintglobaldefstrue
@@ -2020,8 +2019,8 @@
% le \xintRez est à cause des E positifs, car trailing zéros explicites
% si je travaillais à partir des variables xintexpr directement ne devrait
% pas être nécessaire, mais trop fragile par rapport à chgt internes possibles
- \romannumeral0\xintrez{\xintSub{\@nameuse{POL_ZeroInt#1R}{#2}}%
- {\@nameuse{POL_ZeroInt#1L}{#2}}}
+ \romannumeral0\xintrez{\xintSub{\@nameuse{POL_ZR#1*}{#2}}%
+ {\@nameuse{POL_ZL#1*}{#2}}}
}%
@@ -2029,7 +2028,7 @@
% localize roots in intervals of length at most 10^{#2}
\edef\POL@sturmname{#1}%
\edef\POL@ensure@targetE{\the\numexpr#2}%
- \edef\POL@nbofroots{\csname POL_ZeroInt\POL@sturmname L0\endcsname}%
+ \edef\POL@nbofroots{\csname POL_ZL\POL@sturmname*0\endcsname}%
\ifnum\POL@nbofroots>\z@
\expandafter\POL@ensureintervallengths
\fi
@@ -2053,7 +2052,7 @@
% peut-être autoriser -1, -2, ... ?
\ifnum\POL@isolz@IntervalIndex>\z@
% 0.7, add this safeguard but attention means this structure must be in place
- \ifnum\csname POL_ZeroInt\POL@sturmname L0\endcsname>\z@
+ \ifnum\csname POL_ZL\POL@sturmname*0\endcsname>\z@
% je ne fais pas les \expandafter mais je préfèrerai ne pas être à l'intérieur
\POL@ensure@one
\fi
@@ -2124,9 +2123,9 @@
}%
\newcommand\PolPrintIntervals@[2][Z]{\POL@PrintIntervals{#1}{#2}}%
\newcommand\POL@PrintIntervals[2]{%
- \def\PolPrintIntervalsTheSturmName{#2}%
\def\PolPrintIntervalsTheVar{#1}%
- \ifnum\@nameuse{POL_ZeroInt#2L}{0}=\z@
+ \def\PolPrintIntervalsTheSturmName{#2}%
+ \ifnum\@nameuse{POL_ZL#2*}{0}=\z@
\PolPrintIntervalsNoRealRoots
\else
\gdef\PolPrintIntervalsTheIndex{1}%
@@ -2138,6 +2137,8 @@
}\POL@tmp
\fi
\POL@AfterPrintIntervals
+ \def\PolPrintIntervalsTheVar{#1}%
+ \def\PolPrintIntervalsTheSturmName{#2}%
}%
\let\POL@AfterPrintIntervals\@empty
\newcommand\PolPrintIntervalsNoRealRoots{}%
@@ -2195,28 +2196,24 @@
\PolPrintIntervalsUnknownRoot
\xdef\PolPrintIntervalsTheIndex{\the\numexpr\PolPrintIntervalsTheIndex+\@ne}%
\unless\ifnum\PolPrintIntervalsTheIndex>
- \@nameuse{POL_ZeroInt\PolPrintIntervalsTheSturmName L0}
+ \@nameuse{POL_ZL\PolPrintIntervalsTheSturmName*0}
\POL@PrintIntervals@DoDefs
\xint_afterfi{\\\POL@PrintIntervals@Loop}%
\fi
}%
\def\POL@PrintIntervals@DoDefs{%
\xdef\PolPrintIntervalsTheLeftEndPoint{%
- \csname POL_ZeroInt%
- \PolPrintIntervalsTheSturmName L\PolPrintIntervalsTheIndex
+ \csname POL_ZL\PolPrintIntervalsTheSturmName*\PolPrintIntervalsTheIndex
\endcsname
}%
\xdef\PolPrintIntervalsTheRightEndPoint{%
- \csname POL_ZeroInt%
- \PolPrintIntervalsTheSturmName R\PolPrintIntervalsTheIndex
+ \csname POL_ZR\PolPrintIntervalsTheSturmName*\PolPrintIntervalsTheIndex
\endcsname
}%
\xdef\PolPrintIntervalsTheMultiplicity{%
- \ifcsname POL_ZeroMult%
- \PolPrintIntervalsTheSturmName\PolPrintIntervalsTheIndex
+ \ifcsname POL_ZM\PolPrintIntervalsTheSturmName*\PolPrintIntervalsTheIndex
\endcsname
- \csname POL_ZeroMult%
- \PolPrintIntervalsTheSturmName\PolPrintIntervalsTheIndex
+ \csname POL_ZM\PolPrintIntervalsTheSturmName*\PolPrintIntervalsTheIndex
\endcsname
\else
?% or use 0 ?
@@ -2226,36 +2223,36 @@
\newcommand\PolSturmIfZeroExactlyKnown[2]{% #1 = sturmname, #2=index
- \romannumeral0\csname POL_ZeroIsKnown#1\endcsname{#2}%
+ \romannumeral0\csname POL_ZK#1*\endcsname{#2}%
}%
\newcommand\POL@SturmIfZeroExactlyKnown[2]{% #1 = sturmname, #2=index
- \romannumeral0\csname POL_ZeroIsKnown#1\the\numexpr#2\endcsname
+ \romannumeral0\csname POL_ZK#1*\the\numexpr#2\endcsname
}%
\newcommand\PolSturmIsolatedZeroMultiplicity[2]{%
- \romannumeral`^^@\csname POL_ZeroMult#1\endcsname{#2}%
+ \romannumeral`^^@\csname POL_ZM#1*\endcsname{#2}%
}%
\newcommand\PolSturmIsolatedZeroLeft[2]{%
- \romannumeral`^^@\csname POL_ZeroInt#1L\endcsname{#2}%
+ \romannumeral`^^@\csname POL_ZL#1*\endcsname{#2}%
}%
\newcommand\PolSturmIsolatedZeroRight[2]{%
- \romannumeral`^^@\csname POL_ZeroInt#1R\endcsname{#2}%
+ \romannumeral`^^@\csname POL_ZR#1*\endcsname{#2}%
}%
\newcommand\PolSturmNbOfIsolatedZeros[1]{%
- \romannumeral`^^@\csname POL_ZeroInt#1L0\endcsname
+ \romannumeral`^^@\csname POL_ZL#1*0\endcsname
}%
\newcommand\PolSturmRationalRoot[2]{%
- \romannumeral`^^@\csname POL_ZeroInt#1L%
- \csname POL_RRIndex#1\endcsname{#2}\endcsname
+ \romannumeral`^^@\csname POL_ZL#1*%
+ \csname POL_RI#1*\endcsname{#2}\endcsname
}%
\newcommand\PolSturmRationalRootIndex[2]{%
- \romannumeral`^^@\csname POL_RRIndex#1\endcsname{#2}%
+ \romannumeral`^^@\csname POL_RI#1*\endcsname{#2}%
}%
\newcommand\PolSturmRationalRootMultiplicity[2]{%
- \romannumeral`^^@\csname POL_ZeroMult#1%
- \csname POL_RRIndex#1\endcsname{#2}\endcsname
+ \romannumeral`^^@\csname POL_ZM#1%
+ *\csname POL_RI#1*\endcsname{#2}\endcsname
}%
\newcommand\PolSturmNbOfRationalRoots[1]{%
- \romannumeral`^^@\csname POL_RRIndex#10\endcsname
+ \romannumeral`^^@\csname POL_RI#1*0\endcsname
}%
\newcommand\PolSturmNbOfRationalRootsWithMultiplicities[1]{%
% means the \POL@norr must not have been changed in-between...