diff options
author | Karl Berry <karl@freefriends.org> | 2019-02-05 21:56:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-02-05 21:56:17 +0000 |
commit | 076635117d18350a7f9fa5cf2ca4bd966e513483 (patch) | |
tree | 29c269b9f8a3f58e8ab87a8088333c3f47a95fb3 /Master | |
parent | 55c5791c6ab8cf082514fe407968cf20b165639a (diff) |
polexpr (5feb19)
git-svn-id: svn://tug.org/texlive/trunk@49948 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/polexpr/README.md | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/polexpr/polexpr.html | 42 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/polexpr/polexpr.txt | 40 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polexpr/polexpr.sty | 121 |
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 < x < 0.99 The multiplicity is 1 for the root such that 0.9991 < x < 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... |