diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xint.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xint.sty | 1751 |
1 files changed, 861 insertions, 890 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty index b8489389530..e121c9bcffb 100644 --- a/Master/texmf-dist/tex/generic/xint/xint.sty +++ b/Master/texmf-dist/tex/generic/xint/xint.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.02 of April 5, 2013) +%% The xint bundle (version 1.03 of April 14, 2013) %% xint: Expandable operations on long numbers %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -134,7 +134,7 @@ \fi \expandafter\x\csname ver@xint.sty\endcsname \ProvidesPackage{xint}% - [2013/04/05 v1.02 Expandable operations on long numbers (jfB)]% + [2013/04/14 v1.03 Expandable operations on long numbers (jfB)]% \def\xint@gobble #1{}% \def\xint@gobble@one #1{}% \def\xint@gobble@two #1#2{}% @@ -144,12 +144,14 @@ \def\xint@gobble@six #1#2#3#4#5#6{}% \def\xint@gobble@seven #1#2#3#4#5#6#7{}% \def\xint@gobble@eight #1#2#3#4#5#6#7#8{}% +\def\xint@firstoftwo #1#2{#1}% \def\xint@secondoftwo #1#2{#2}% \def\xint@firstoftwo@andstop #1#2{ #1}% \def\xint@secondoftwo@andstop #1#2{ #2}% \def\xint@exchangetwo@keepbraces #1#2{{#2}{#1}}% \def\xint@exchangetwo@keepbraces@andstop #1#2{ {#2}{#1}}% \def\xint@xpxp@andstop {\expandafter\expandafter\expandafter\space }% +\def\xint@minus@andstop { -}% \def\xint@r #1\R {}% \def\xint@w #1\W {}% \def\xint@z #1\Z {}% @@ -161,6 +163,7 @@ \def\xint@bracedundef {\xint@undef }% \def\xint@UDzerofork #10\dummy #2#3\xint@UDkrof {#2}% \def\xint@UDsignfork #1-\dummy #2#3\xint@UDkrof {#2}% +\def\xint@UDwfork #1\W\dummy #2#3\xint@UDkrof {#2}% \def\xint@UDzerosfork #100\dummy #2#3\xint@UDkrof {#2}% \def\xint@UDonezerofork #110\dummy #2#3\xint@UDkrof {#2}% \def\xint@UDzerominusfork #10-\dummy #2#3\xint@UDkrof {#2}% @@ -188,11 +191,7 @@ }% \def\XINT@rev@negative #1#2\Z {% - \expandafter - \space - \expandafter - -% - \romannumeral0\XINT@rev {#2}% + \expandafter \space \expandafter -\romannumeral0\XINT@rev {#2}% }% \def\XINT@rev@nonnegative #1\Z {% @@ -296,6 +295,16 @@ }% \def\XINT@cuz@Stop #1\W #2\Z{ #1}% \def\xint@cuz@backtoloop 0\XINT@cuz@Stop 0{\XINT@cuz@loop }% +\def\XINT@isOne #1{\romannumeral0\XINT@isone #1\W\Z }% +\def\XINT@isone #1#2% +{% + \xint@one #1\XINT@isone@b 1\expandafter\space\expandafter 0\xint@z #2% +}% +\def\XINT@isone@b #1\xint@z #2% +{% + \xint@w #2\XINT@isone@yes\W\expandafter\space\expandafter 0\xint@z +}% +\def\XINT@isone@yes #1\Z{ 1}% \def\xintNum {\romannumeral0\xintnum }% \def\xintnum #1% {% @@ -331,12 +340,13 @@ \def\XINT@num@gobacktoloop 1\XINT@num@keepsign@b {\XINT@num@loop }% \def\XINT@num@keepsign@b #1{\XINT@num@loop -}% \def\XINT@num@finish #1\R #2\Z { #1}% -\def\xintLen {\romannumeral0\xintlen }% -\def\xintlen #1% +\def\xintiLen {\romannumeral0\xintilen }% +\def\xintilen #1% {% \expandafter\expandafter\expandafter \XINT@length@fork #1\R\R\R\R\R\R\R\R\Z }% +\let\xintLen\xintiLen \let\xintlen\xintilen \def\XINT@Len #1{\romannumeral0\XINT@length@fork #1\R\R\R\R\R\R\R\R\Z }% \def\XINT@length@fork #1% {% @@ -495,12 +505,13 @@ }% }% \let\xintDigitsOf\xintAssignArray -\def\xintSgn {\romannumeral0\xintsgn }% -\def\xintsgn #1% +\def\xintiSgn {\romannumeral0\xintisgn }% +\def\xintisgn #1% {% \expandafter\expandafter\expandafter \XINT@sgn #1\Z% }% +\let\xintSgn\xintiSgn \let\xintsgn\xintisgn \def\XINT@Sgn #1{\romannumeral0\XINT@sgn #1\Z }% \def\XINT@sgn #1% {% @@ -512,12 +523,13 @@ \xint@UDkrof \xint@z }% -\def\xintOpp {\romannumeral0\xintopp }% -\def\xintopp #1% +\def\xintiOpp {\romannumeral0\xintiopp }% +\def\xintiopp #1% {% \expandafter\expandafter\expandafter \XINT@opp #1% }% +\let\xintOpp\xintiOpp \let\xintopp\xintiopp \def\XINT@Opp #1{\romannumeral0\XINT@opp #1}% \def\XINT@opp #1% {% @@ -528,13 +540,14 @@ 0-\dummy {-#1}% positive \xint@UDkrof }% -\def\xintAbs {\romannumeral0\xintabs }% -\def\xintabs #1% +\def\xintiAbs {\romannumeral0\xintiabs }% +\def\xintiabs #1% {% \expandafter\expandafter\expandafter \XINT@abs #1% }% -\def\XINT@Abs {\romannumeral0\XINT@abs }% +\let\xintAbs\xintiAbs \let\xintabs\xintiabs +\def\XINT@Abs #1{\romannumeral0\XINT@abs #1}% \def\XINT@abs #1% {% \xint@UDsignfork @@ -542,14 +555,348 @@ -\dummy { #1}% \xint@UDkrof }% -\def\xintAdd {\romannumeral0\xintadd }% -\def\xintadd #1% +\def\XINT@add@A #1#2#3#4#5#6% +{% + \xint@w + #3\xint@add@az + \W\XINT@add@AB #1{#3#4#5#6}{#2}% +}% +\def\xint@add@az\W\XINT@add@AB #1#2% +{% + \XINT@add@AC@checkcarry #1% +}% +\def\XINT@add@AB #1#2#3#4\W\X\Y\Z #5#6#7#8% +{% + \xint@w + #5\xint@add@bz + \W\XINT@add@ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z +}% +\def\XINT@add@ABE #1#2#3#4#5#6% +{\expandafter + \XINT@add@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax.% +}% +\def\XINT@add@ABEA #1#2#3.#4% +{% + \XINT@add@A #2{#3#4}% +}% +\def\xint@add@bz\W\XINT@add@ABE #1#2#3#4#5#6% +{\expandafter + \XINT@add@CC\the\numexpr #1+10#5#4#3#2\relax.% +}% +\def\XINT@add@CC #1#2#3.#4% +{% + \XINT@add@AC@checkcarry #2{#3#4}% on va examiner et \'eliminer #2 +}% +\def\XINT@add@AC@checkcarry #1% +{% + \xint@zero #1\xint@add@AC@nocarry 0\XINT@add@C +}% +\def\xint@add@AC@nocarry 0\XINT@add@C #1#2\W\X\Y\Z +{% + \expandafter + \xint@cleanupzeros@andstop + \romannumeral0% + \XINT@rord@main {}#2% + \xint@UNDEF + \xint@undef\xint@undef\xint@undef\xint@undef + \xint@undef\xint@undef\xint@undef\xint@undef + \xint@UNDEF + #1% +}% +\def\XINT@add@C #1#2#3#4#5% +{% + \xint@w + #2\xint@add@cz + \W\XINT@add@CD {#5#4#3#2}{#1}% +}% +\def\XINT@add@CD #1% +{\expandafter + \XINT@add@CC\the\numexpr 1+10#1\relax.% +}% +\def\xint@add@cz\W\XINT@add@CD #1#2{ 1#2}% +\def\XINT@addr@A #1#2#3#4#5#6% +{% + \xint@w + #3\xint@addr@az + \W\XINT@addr@B #1{#3#4#5#6}{#2}% +}% +\def\xint@addr@az\W\XINT@addr@B #1#2% +{% + \XINT@addr@AC@checkcarry #1% +}% +\def\XINT@addr@B #1#2#3#4\W\X\Y\Z #5#6#7#8% +{% + \xint@w + #5\xint@addr@bz + \W\XINT@addr@E #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z +}% +\def\XINT@addr@E #1#2#3#4#5#6% +{\expandafter + \XINT@addr@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax +}% +\def\XINT@addr@ABEA #1#2#3#4#5#6#7% +{% + \XINT@addr@A #2{#7#6#5#4#3}% +}% +\def\xint@addr@bz\W\XINT@addr@E #1#2#3#4#5#6% +{\expandafter + \XINT@addr@CC\the\numexpr #1+10#5#4#3#2\relax +}% +\def\XINT@addr@CC #1#2#3#4#5#6#7% +{% + \XINT@addr@AC@checkcarry #2{#7#6#5#4#3}% +}% +\def\XINT@addr@AC@checkcarry #1% +{% + \xint@zero #1\xint@addr@AC@nocarry 0\XINT@addr@C +}% +\def\xint@addr@AC@nocarry 0\XINT@addr@C #1#2\W\X\Y\Z { #1#2}% +\def\XINT@addr@C #1#2#3#4#5% +{% + \xint@w + #2\xint@addr@cz + \W\XINT@addr@D {#5#4#3#2}{#1}% +}% +\def\XINT@addr@D #1% +{\expandafter + \XINT@addr@CC\the\numexpr 1+10#1\relax +}% +\def\xint@addr@cz\W\XINT@addr@D #1#2{ #21000}% +\def\XINT@addm@A #1#2#3#4#5#6% +{% + \xint@w + #3\xint@addm@az + \W\XINT@addm@AB #1{#3#4#5#6}{#2}% +}% +\def\xint@addm@az\W\XINT@addm@AB #1#2% +{% + \XINT@addm@AC@checkcarry #1% +}% +\def\XINT@addm@AB #1#2#3#4\W\X\Y\Z #5#6#7#8% +{% + \XINT@addm@ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z +}% +\def\XINT@addm@ABE #1#2#3#4#5#6% +{\expandafter + \XINT@addm@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax.% +}% +\def\XINT@addm@ABEA #1#2#3.#4% +{% + \XINT@addm@A #2{#3#4}% +}% +\def\XINT@addm@AC@checkcarry #1% +{% + \xint@zero #1\xint@addm@AC@nocarry 0\XINT@addm@C +}% +\def\xint@addm@AC@nocarry 0\XINT@addm@C #1#2\W\X\Y\Z +{% + \expandafter + \xint@cleanupzeros@andstop + \romannumeral0% + \XINT@rord@main {}#2% + \xint@UNDEF + \xint@undef\xint@undef\xint@undef\xint@undef + \xint@undef\xint@undef\xint@undef\xint@undef + \xint@UNDEF + #1% +}% +\def\XINT@addm@C #1#2#3#4#5% +{% + \xint@w + #5\xint@addm@cw + #4\xint@addm@cx + #3\xint@addm@cy + #2\xint@addm@cz + \W\XINT@addm@CD {#5#4#3#2}{#1}% +}% +\def\XINT@addm@CD #1% +{\expandafter + \XINT@addm@CC\the\numexpr 1+10#1\relax.% +}% +\def\XINT@addm@CC #1#2#3.#4% +{% + \XINT@addm@AC@checkcarry #2{#3#4}% +}% +\def\xint@addm@cw + #1\xint@addm@cx + #2\xint@addm@cy + #3\xint@addm@cz + \W\XINT@addm@CD +{\expandafter + \XINT@addm@CDw\the\numexpr 1+#1#2#3\relax.% +}% +\def\XINT@addm@CDw #1.#2#3\X\Y\Z +{% + \XINT@addm@end #1#3% +}% +\def\xint@addm@cx + #1\xint@addm@cy + #2\xint@addm@cz + \W\XINT@addm@CD +{\expandafter + \XINT@addm@CDx\the\numexpr 1+#1#2\relax.% +}% +\def\XINT@addm@CDx #1.#2#3\Y\Z +{% + \XINT@addm@end #1#3% +}% +\def\xint@addm@cy + #1\xint@addm@cz + \W\XINT@addm@CD +{\expandafter + \XINT@addm@CDy\the\numexpr 1+#1\relax.% +}% +\def\XINT@addm@CDy #1.#2#3\Z +{% + \XINT@addm@end #1#3% +}% +\def\xint@addm@cz\W\XINT@addm@CD #1#2#3{\XINT@addm@end #1#3}% +\def\XINT@addm@end #1#2#3#4#5% +{\expandafter\space\the\numexpr #1#2#3#4#5\relax +}% +\def\XINT@addp@A #1#2#3#4#5#6% +{% + \xint@w + #3\xint@addp@az + \W\XINT@addp@AB #1{#3#4#5#6}{#2}% +}% +\def\xint@addp@az\W\XINT@addp@AB #1#2% +{% + \XINT@addp@AC@checkcarry #1% +}% +\def\XINT@addp@AC@checkcarry #1% +{% + \xint@zero #1\xint@addp@AC@nocarry 0\XINT@addp@C +}% +\def\xint@addp@AC@nocarry 0\XINT@addp@C +{% + \XINT@addp@F +}% +\def\XINT@addp@AB #1#2#3#4\W\X\Y\Z #5#6#7#8% +{% + \XINT@addp@ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z +}% +\def\XINT@addp@ABE #1#2#3#4#5#6% +{\expandafter + \XINT@addp@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax +}% +\def\XINT@addp@ABEA #1#2#3#4#5#6#7% +{% + \XINT@addp@A #2{#7#6#5#4#3}%<-- attention on met donc \`a droite +}% +\def\XINT@addp@C #1#2#3#4#5% +{% + \xint@w + #5\xint@addp@cw + #4\xint@addp@cx + #3\xint@addp@cy + #2\xint@addp@cz + \W\XINT@addp@CD {#5#4#3#2}{#1}% +}% +\def\XINT@addp@CD #1% +{\expandafter + \XINT@addp@CC\the\numexpr 1+10#1\relax +}% +\def\XINT@addp@CC #1#2#3#4#5#6#7% +{% + \XINT@addp@AC@checkcarry #2{#7#6#5#4#3}% +}% +\def\xint@addp@cw + #1\xint@addp@cx + #2\xint@addp@cy + #3\xint@addp@cz + \W\XINT@addp@CD +{\expandafter + \XINT@addp@CDw\the\numexpr 1+10#1#2#3\relax +}% +\def\XINT@addp@CDw #1#2#3#4#5#6% +{% + \xint@quatrezeros #2#3#4#5\XINT@addp@endDw@zeros + 0000\XINT@addp@endDw #2#3#4#5% +}% +\def\XINT@addp@endDw@zeros 0000\XINT@addp@endDw 0000#1\X\Y\Z{ #1}% +\def\XINT@addp@endDw #1#2#3#4#5\X\Y\Z{ #5#4#3#2#1}% +\def\xint@addp@cx + #1\xint@addp@cy + #2\xint@addp@cz + \W\XINT@addp@CD +{\expandafter + \XINT@addp@CDx\the\numexpr 1+100#1#2\relax +}% +\def\XINT@addp@CDx #1#2#3#4#5#6% +{% + \xint@quatrezeros #2#3#4#5\XINT@addp@endDx@zeros + 0000\XINT@addp@endDx #2#3#4#5% +}% +\def\XINT@addp@endDx@zeros 0000\XINT@addp@endDx 0000#1\Y\Z{ #1}% +\def\XINT@addp@endDx #1#2#3#4#5\Y\Z{ #5#4#3#2#1}% +\def\xint@addp@cy + #1\xint@addp@cz + \W\XINT@addp@CD +{\expandafter + \XINT@addp@CDy\the\numexpr 1+1000#1\relax +}% +\def\XINT@addp@CDy #1#2#3#4#5#6% +{% + \xint@quatrezeros #2#3#4#5\XINT@addp@endDy@zeros + 0000\XINT@addp@endDy #2#3#4#5% +}% +\def\XINT@addp@endDy@zeros 0000\XINT@addp@endDy 0000#1\Z{ #1}% +\def\XINT@addp@endDy #1#2#3#4#5\Z{ #5#4#3#2#1}% +\def\xint@addp@cz\W\XINT@addp@CD #1#2{ #21000}% +\def\XINT@addp@F #1#2#3#4#5% +{% + \xint@w + #5\xint@addp@Gw + #4\xint@addp@Gx + #3\xint@addp@Gy + #2\xint@addp@Gz + \W\XINT@addp@G {#2#3#4#5}{#1}% +}% +\def\XINT@addp@G #1#2% +{% + \XINT@addp@F {#2#1}% +}% +\def\xint@addp@Gw + #1\xint@addp@Gx + #2\xint@addp@Gy + #3\xint@addp@Gz + \W\XINT@addp@G #4% +{% + \xint@quatrezeros #3#2#10\XINT@addp@endGw@zeros + 0000\XINT@addp@endGw #3#2#10% +}% +\def\XINT@addp@endGw@zeros 0000\XINT@addp@endGw 0000#1\X\Y\Z{ #1}% +\def\XINT@addp@endGw #1#2#3#4#5\X\Y\Z{ #5#1#2#3#4}% +\def\xint@addp@Gx + #1\xint@addp@Gy + #2\xint@addp@Gz + \W\XINT@addp@G #3% +{% + \xint@quatrezeros #2#100\XINT@addp@endGx@zeros + 0000\XINT@addp@endGx #2#100% +}% +\def\XINT@addp@endGx@zeros 0000\XINT@addp@endGx 0000#1\Y\Z{ #1}% +\def\XINT@addp@endGx #1#2#3#4#5\Y\Z{ #5#1#2#3#4}% +\def\xint@addp@Gy + #1\xint@addp@Gz + \W\XINT@addp@G #2% +{% + \xint@quatrezeros #1000\XINT@addp@endGy@zeros + 0000\XINT@addp@endGy #1000% +}% +\def\XINT@addp@endGy@zeros 0000\XINT@addp@endGy 0000#1\Z{ #1}% +\def\XINT@addp@endGy #1#2#3#4#5\Z{ #5#1#2#3#4}% +\def\xint@addp@Gz\W\XINT@addp@G #1#2{ #2}% +\def\xintiAdd {\romannumeral0\xintiadd }% +\def\xintiadd #1% {% \expandafter\expandafter\expandafter \xint@add \expandafter\expandafter\expandafter {#1}% }% +\let\xintAdd\xintiAdd \let\xintadd\xintiadd \def\xint@add #1#2% {% \expandafter\expandafter\expandafter @@ -604,73 +951,15 @@ \romannumeral0\XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z \W\X\Y\Z #1\W\X\Y\Z }% -\def\XINT@add@A #1#2#3#4#5#6% -{% - \xint@w - #3\xint@add@az - \W\XINT@add@AB #1{#3#4#5#6}{#2}% -}% -\def\xint@add@az\W\XINT@add@AB #1#2% -{% - \XINT@add@AC@checkcarry #1% -}% -\def\XINT@add@AB #1#2#3#4\W\X\Y\Z #5#6#7#8% -{% - \xint@w - #5\xint@add@bz - \W\XINT@add@ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z -}% -\def\XINT@add@ABE #1#2#3#4#5#6% -{\expandafter - \XINT@add@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax.% -}% -\def\XINT@add@ABEA #1#2#3.#4% -{% - \XINT@add@A #2{#3#4}% -}% -\def\xint@add@bz\W\XINT@add@ABE #1#2#3#4#5#6% -{\expandafter - \XINT@add@CC\the\numexpr #1+10#5#4#3#2\relax.% -}% -\def\XINT@add@CC #1#2#3.#4% -{% - \XINT@add@AC@checkcarry #2{#3#4}% on va examiner et \'eliminer #2 -}% -\def\XINT@add@AC@checkcarry #1% -{% - \xint@zero #1\xint@add@AC@nocarry 0\XINT@add@C -}% -\def\xint@add@AC@nocarry 0\XINT@add@C #1#2\W\X\Y\Z -{% - \expandafter - \xint@cleanupzeros@andstop - \romannumeral0% - \XINT@rord@main {}#2% - \xint@UNDEF - \xint@undef\xint@undef\xint@undef\xint@undef - \xint@undef\xint@undef\xint@undef\xint@undef - \xint@UNDEF - #1% -}% -\def\XINT@add@C #1#2#3#4#5% -{% - \xint@w - #2\xint@add@cz - \W\XINT@add@CD {#5#4#3#2}{#1}% -}% -\def\XINT@add@CD #1% -{\expandafter - \XINT@add@CC\the\numexpr 1+10#1\relax.% -}% -\def\xint@add@cz\W\XINT@add@CD #1#2{ 1#2}% -\def\xintSub {\romannumeral0\xintsub }% -\def\xintsub #1% +\def\xintiSub {\romannumeral0\xintisub }% +\def\xintisub #1% {% \expandafter\expandafter\expandafter \xint@sub \expandafter\expandafter\expandafter {#1}% }% +\let\xintSub\xintiSub \let\xintsub\xintisub \def\xint@sub #1#2% {% \expandafter\expandafter\expandafter @@ -912,7 +1201,7 @@ }% \def\XINT@sub@KK@onestep #1#2% {\expandafter - \XINT@sub@backtoKK\the\numexpr 110000-#2+#1-1\relax.% + \XINT@sub@backtoKK\the\numexpr 109999-#2+#1\relax.% }% \def\XINT@sub@backtoKK #1#2#3.#4% {% @@ -923,14 +1212,15 @@ \expandafter\space\expandafter-\romannumeral 0\XINT@cuz@loop #3\W\W\W\W\W\W\W\Z }% -\def\xintCmp {\romannumeral0\xintcmp }% -\def\xintcmp #1% +\def\xintiCmp {\romannumeral0\xinticmp }% +\def\xinticmp #1% {% \expandafter\expandafter\expandafter \xint@cmp \expandafter\expandafter\expandafter {#1}% }% +\let\xintCmp\xintiCmp \let\xintcmp\xinticmp \def\xint@cmp #1#2% {% \expandafter\expandafter\expandafter @@ -1125,20 +1415,23 @@ 0\dummy { 1} % pas de retenue \xint@UDkrof }% -\def\xintMax {\romannumeral0\xintmax }% -\def\xintmax #1% +\def\xintiMax {\romannumeral0\xintimax }% +\def\xintimax #1% {% \expandafter\expandafter\expandafter \xint@max \expandafter\expandafter\expandafter {#1}% }% +\let\xintMax\xintiMax \let\xintmax\xintimax \def\xint@max #1#2% {% \expandafter\expandafter\expandafter - \XINT@max@fork #2\Z #1\Z + \XINT@max@pre + \expandafter\expandafter\expandafter {#2}{#1}% }% -\def\XINT@Max #1#2{\romannumeral0\XINT@max@fork #2\Z #1\Z }% +\def\XINT@max@pre #1#2{\XINT@max@fork #1\Z #2\Z {#2}{#1}}% +\def\XINT@Max #1#2{\romannumeral0\XINT@max@fork #2\Z #1\Z {#1}{#2}}% \def\XINT@max@fork #1#2\Z #3#4\Z {% \xint@UDsignsfork @@ -1154,41 +1447,44 @@ \xint@UDkrof {#2}{#4}#1#3% }% -\def\XINT@max@zerozero #1#2#3#4{ 0}% -\def\XINT@max@zeroplus #1#2#3#4{ #4#2}% -\def\XINT@max@pluszero #1#2#3#4{ #3#1}% -\def\XINT@max@minusplus #1#2#3#4{ #4#2}% -\def\XINT@max@plusminus #1#2#3#4{ #3#1}% -\def\XINT@max@plusplus #1#2#3#4% +\def\XINT@max@zerozero #1#2#3#4{\xint@firstoftwo@andstop }% +\def\XINT@max@zeroplus #1#2#3#4{\xint@firstoftwo@andstop }% +\def\XINT@max@pluszero #1#2#3#4{\xint@secondoftwo@andstop }% +\def\XINT@max@minusplus #1#2#3#4{\xint@firstoftwo@andstop }% +\def\XINT@max@plusminus #1#2#3#4{\xint@secondoftwo@andstop }% +\def\XINT@max@plusplus #1#2#3#4% {% \ifodd\XINT@Geq {#4#2}{#3#1} - \xint@afterfi { #4#2}% + \expandafter\xint@firstoftwo@andstop \else - \xint@afterfi { #3#1}% + \expandafter\xint@secondoftwo@andstop \fi }% \def\XINT@max@minusminus #1#2#3#4% {% \ifodd\XINT@Geq {#1}{#2} - \xint@afterfi { -#2}% + \expandafter\xint@firstoftwo@andstop \else - \xint@afterfi { -#1}% + \expandafter\xint@secondoftwo@andstop \fi }% -\def\xintMin {\romannumeral0\xintmin }% -\def\xintmin #1% +\def\xintiMin {\romannumeral0\xintimin }% +\def\xintimin #1% {% \expandafter\expandafter\expandafter \xint@min \expandafter\expandafter\expandafter {#1}% }% +\let\xintMin\xintiMin \let\xintmin\xintimin \def\xint@min #1#2% {% \expandafter\expandafter\expandafter - \XINT@min@fork #2\Z #1\Z + \XINT@min@pre + \expandafter\expandafter\expandafter {#2}{#1}% }% -\def\XINT@Min #1#2{\romannumeral0\XINT@min@fork #2\Z #1\Z }% +\def\XINT@min@pre #1#2{\XINT@min@fork #1\Z #2\Z {#2}{#1}}% +\def\XINT@Min #1#2{\romannumeral0\XINT@min@fork #2\Z #1\Z {#1}{#2}}% \def\XINT@min@fork #1#2\Z #3#4\Z {% \xint@UDsignsfork @@ -1204,166 +1500,82 @@ \xint@UDkrof {#2}{#4}#1#3% }% -\def\XINT@min@zerozero #1#2#3#4{ 0}% -\def\XINT@min@zeroplus #1#2#3#4{ 0}% -\def\XINT@min@pluszero #1#2#3#4{ 0}% -\def\XINT@min@minusplus #1#2#3#4{ #3#1}% -\def\XINT@min@plusminus #1#2#3#4{ #4#2}% +\def\XINT@min@zerozero #1#2#3#4{\xint@firstoftwo@andstop }% +\def\XINT@min@zeroplus #1#2#3#4{\xint@secondoftwo@andstop }% +\def\XINT@min@pluszero #1#2#3#4{\xint@firstoftwo@andstop }% +\def\XINT@min@minusplus #1#2#3#4{\xint@secondoftwo@andstop }% +\def\XINT@min@plusminus #1#2#3#4{\xint@firstoftwo@andstop }% \def\XINT@min@plusplus #1#2#3#4% {% \ifodd\XINT@Geq {#4#2}{#3#1} - \xint@afterfi { #3#1}% + \expandafter\xint@secondoftwo@andstop \else - \xint@afterfi { #4#2}% + \expandafter\xint@firstoftwo@andstop \fi }% \def\XINT@min@minusminus #1#2#3#4% {% \ifodd\XINT@Geq {#1}{#2} - \xint@afterfi { -#1}% + \expandafter\xint@secondoftwo@andstop \else - \xint@afterfi { -#2}% + \expandafter\xint@firstoftwo@andstop \fi }% -\def\XINT@psum #1% -{% - \romannumeral0\XINT@psum@checkifemptysum #1\Z -}% -\def\XINT@psum@checkifemptysum #1% -{% - \xint@relax #1\XINT@psum@returnzero\relax \XINT@psum@RQfirst #1% -}% -\def\XINT@psum@returnzero #1\Z { 0}% -\def\XINT@psum@RQfirst #1\Z -{% - \expandafter\XINT@psum@loop\expandafter - {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z}% avant: #1\Z -}% -\def\XINT@psum@loop #1#2% -{% - \xint@relax #2\XINT@psum@end\relax - \expandafter - \XINT@psum@loop\expandafter - {\romannumeral0\expandafter\XINT@sum@A - \expandafter0\expandafter{\expandafter}% - \romannumeral0\XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z - \W\X\Y\Z #1\W\X\Y\Z }% -}% -\def\XINT@psum@end\relax\expandafter - \XINT@psum@loop\expandafter #1% - {\XINT@psum@end@ #1}% -\def\XINT@psum@end@ #1\W\X\Y\Z #2\W\X\Y\Z -{% - \expandafter - \xint@cleanupzeros@andstop\romannumeral0\XINT@rev {#2}% -}% -\def\xintSumExpr {\romannumeral0\xintsumexpr }% -\def\xintSum {\romannumeral0\xintsum }% -\def\xintsum #1% +\def\xintiSum {\romannumeral0\xintisum }% +\def\xintisum #1{\xintisumexpr #1\relax }% +\def\xintiSumExpr {\romannumeral0\xintisumexpr }% +\def\xintisumexpr {% - \expandafter\expandafter\expandafter - \xintsumexpr #1\relax + \expandafter\expandafter\expandafter\XINT@sumexpr }% -\def\xintsumexpr #1% +\let\xintSum\xintiSum \let\xintsum\xintisum +\let\xintSumExpr\xintiSumExpr \let\xintsumexpr\xintisumexpr +\def\XINT@sumexpr {\XINT@sum@loop {0000}{0000}}% +\def\XINT@sum@loop #1#2#3% {% + \xint@relax #3\XINT@sum@finished\relax \expandafter\expandafter\expandafter - \XINT@sum@checkifempty #1\Z {\XINT@psum }{\XINT@psum }% -}% -\def\XINT@sum@checkifempty #1% -{% - \xint@relax #1\XINT@sum@returnzero\relax - \XINT@sum@checksign #1% + \XINT@sum@checksign #3\Z {#1}{#2}% }% -\def\XINT@sum@returnzero #1\Z #2#3{ 0}% \def\XINT@sum@checksign #1% {% \xint@zero #1\XINT@sum@skipzeroinput0% \xint@UDsignfork - #1\dummy \XINT@sum@pushneg - -\dummy \XINT@sum@pushpos + #1\dummy \XINT@sum@N + -\dummy {\XINT@sum@P #1}% \xint@UDkrof - #1% }% -\def\XINT@sum@skipzeroinput #1\xint@UDkrof #2\Z #3#4% +\def\XINT@sum@skipzeroinput #1\xint@UDkrof #2\Z {\XINT@sum@loop }% +\def\XINT@sum@P #1\Z #2% {% - \XINT@sum@xpxpnext {#3}{#4}% + \expandafter\XINT@sum@loop\expandafter + {\romannumeral0\expandafter + \XINT@addr@A\expandafter0\expandafter{\expandafter}% + \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z + \W\X\Y\Z #2\W\X\Y\Z }% }% -\def\XINT@sum@pushpos #1#2\Z #3#4% +\def\XINT@sum@N #1\Z #2#3% {% - \XINT@sum@xpxpnext {#3{#1#2}}{#4}% + \expandafter\XINT@sum@NN\expandafter + {\romannumeral0\expandafter + \XINT@addr@A\expandafter0\expandafter{\expandafter}% + \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z + \W\X\Y\Z #3\W\X\Y\Z }{#2}% }% -\def\XINT@sum@pushneg #1#2\Z #3#4% +\def\XINT@sum@NN #1#2{\XINT@sum@loop {#2}{#1}}% +\def\XINT@sum@finished #1\Z #2#3% {% - \XINT@sum@xpxpnext {#3}{#4{#2}}% + \XINT@sub@A 1{}#3\W\X\Y\Z #2\W\X\Y\Z }% -\def\XINT@sum@xpxpnext #1#2#3% -{% - \expandafter\expandafter\expandafter - \XINT@sum@checkiffinished #3\Z {#1}{#2}% -}% -\def\XINT@sum@checkiffinished #1% -{% - \xint@relax #1\XINT@sum@end\relax - \XINT@sum@checksign #1% -}% -\def\XINT@sum@end\relax\XINT@sum@checksign\relax #1\Z #2#3% - {\xintsub{#2\relax}{#3\relax}}% -\def\XINT@sum@A #1#2#3#4#5#6% -{% - \xint@w - #3\xint@sum@az - \W\XINT@sum@B #1{#3#4#5#6}{#2}% -}% -\def\xint@sum@az\W\XINT@sum@B #1#2% -{% - \XINT@sum@AC@checkcarry #1% -}% -\def\XINT@sum@B #1#2#3#4\W\X\Y\Z #5#6#7#8% -{% - \xint@w - #5\xint@sum@bz - \W\XINT@sum@E #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z -}% -\def\XINT@sum@E #1#2#3#4#5#6% -{\expandafter - \XINT@sum@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax -}% -\def\XINT@sum@ABEA #1#2#3#4#5#6#7% -{% - \XINT@sum@A #2{#7#6#5#4#3}% -}% -\def\xint@sum@bz\W\XINT@sum@E #1#2#3#4#5#6% -{\expandafter - \XINT@sum@CC\the\numexpr #1+10#5#4#3#2\relax -}% -\def\XINT@sum@CC #1#2#3#4#5#6#7% -{% - \XINT@sum@AC@checkcarry #2{#7#6#5#4#3}% -}% -\def\XINT@sum@AC@checkcarry #1% -{% - \xint@zero #1\xint@sum@AC@nocarry 0\XINT@sum@C -}% -\def\xint@sum@AC@nocarry 0\XINT@sum@C #1#2\W\X\Y\Z { #1#2}% -\def\XINT@sum@C #1#2#3#4#5% -{% - \xint@w - #2\xint@sum@cz - \W\XINT@sum@D {#5#4#3#2}{#1}% -}% -\def\XINT@sum@D #1% -{\expandafter - \XINT@sum@CC\the\numexpr 1+10#1\relax -}% -\def\xint@sum@cz\W\XINT@sum@D #1#2{ #21000}% -\def\xintMul {\romannumeral0\xintmul }% -\def\xintmul #1% +\def\xintiMul {\romannumeral0\xintimul }% +\def\xintimul #1% {% \expandafter\expandafter\expandafter \xint@mul \expandafter\expandafter\expandafter {#1}% }% +\let\xintMul\xintiMul \let\xintmul\xintimul \def\xint@mul #1#2% {\expandafter\expandafter\expandafter \XINT@mul@fork #2\Z #1\Z @@ -1377,136 +1589,129 @@ 0\dummy {\xint@UDsignsfork #1#3\dummy \XINT@mul@minusminus % #1 = #3 = - - #1-\dummy \XINT@mul@minusplus % #1 = - - #3-\dummy \XINT@mul@plusminus % #3 = - - --\dummy \XINT@mul@plusplus + #1-\dummy {\XINT@mul@minusplus #3}% % #1 = - + #3-\dummy {\XINT@mul@plusminus #1}% % #3 = - + --\dummy {\XINT@mul@plusplus #1#3}% \xint@UDkrof }% \xint@UDkrof - {#2}{#4}#1#3% + {#2}{#4}% }% -\def\XINT@mul@zero #1#2#3#4{ 0}% -\def\XINT@mul@minusminus #1#2#3#4% +\def\XINT@mul@zero #1#2{ 0}% +\def\XINT@mul@minusminus #1#2% {% - \expandafter - \XINT@mul@enter\romannumeral0% - \XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z - \W\X\Y\Z #1\W\X\Y\Z + \expandafter\XINT@mul@choice@a + \expandafter{\romannumeral0\XINT@length {#2}}% + {\romannumeral0\XINT@length {#1}}{#1}{#2}% }% -\def\XINT@mul@minusplus #1#2#3#4% +\def\XINT@mul@minusplus #1#2#3% {% - \expandafter\space\expandafter-% - \romannumeral0\expandafter - \XINT@mul@enter\romannumeral0% - \XINT@RQ {}#4#2\R\R\R\R\R\R\R\R\Z - \W\X\Y\Z #1\W\X\Y\Z + \expandafter\space\expandafter-\romannumeral0\expandafter + \XINT@mul@choice@a + \expandafter{\romannumeral0\XINT@length {#1#3}}% + {\romannumeral0\XINT@length {#2}}{#2}{#1#3}% }% -\def\XINT@mul@plusminus #1#2#3#4% +\def\XINT@mul@plusminus #1#2#3% {% - \expandafter\space\expandafter-% - \romannumeral0\expandafter - \XINT@mul@enter\romannumeral0% - \XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z - \W\X\Y\Z #3#1\W\X\Y\Z + \expandafter\space\expandafter-\romannumeral0\expandafter + \XINT@mul@choice@a + \expandafter{\romannumeral0\XINT@length {#3}}% + {\romannumeral0\XINT@length {#1#2}}{#1#2}{#3}% }% \def\XINT@mul@plusplus #1#2#3#4% {% - \expandafter - \XINT@mul@enter\romannumeral0% - \XINT@RQ {}#4#2\R\R\R\R\R\R\R\R\Z - \W\X\Y\Z #3#1\W\X\Y\Z -}% -\def\XINT@mul@add@A #1#2#3#4#5#6% -{% - \xint@w - #3\xint@mul@add@az - \W\XINT@mul@add@AB #1{#3#4#5#6}{#2}% + \expandafter\XINT@mul@choice@a + \expandafter{\romannumeral0\XINT@length {#2#4}}% + {\romannumeral0\XINT@length {#1#3}}{#1#3}{#2#4}% }% -\def\xint@mul@add@az\W\XINT@mul@add@AB #1#2% +\def\XINT@mul@choice@a #1#2% {% - \XINT@mul@add@AC@checkcarry #1% + \expandafter\XINT@mul@choice@b \expandafter{#2}{#1}% }% -\def\XINT@mul@add@AB #1#2#3#4\W\X\Y\Z #5#6#7#8% +\def\XINT@mul@choice@b #1#2% {% - \XINT@mul@add@ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z -}% -\def\XINT@mul@add@ABE #1#2#3#4#5#6% -{\expandafter - \XINT@mul@add@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax.% -}% -\def\XINT@mul@add@ABEA #1#2#3.#4% -{% - \XINT@mul@add@A #2{#3#4}% -}% -\def\XINT@mul@add@AC@checkcarry #1% -{% - \xint@zero #1\xint@mul@add@AC@nocarry 0\XINT@mul@add@C + \ifnum #1<5 + \expandafter\XINT@mul@choice@littlebyfirst + \else + \ifnum #2<5 + \expandafter\expandafter\expandafter + \XINT@mul@choice@littlebysecond + \else + \expandafter\expandafter\expandafter + \XINT@mul@choice@compare + \fi + \fi + {#1}{#2}% }% -\def\xint@mul@add@AC@nocarry 0\XINT@mul@add@C #1#2\W\X\Y\Z +\def\XINT@mul@choice@littlebyfirst #1#2#3#4% {% - \expandafter - \xint@cleanupzeros@andstop - \romannumeral0% - \XINT@rord@main {}#2% - \xint@UNDEF - \xint@undef\xint@undef\xint@undef\xint@undef - \xint@undef\xint@undef\xint@undef\xint@undef - \xint@UNDEF - #1% + \expandafter\XINT@mul@M + \expandafter{\the\numexpr #3\expandafter}% + \romannumeral0\XINT@RQ {}#4\R\R\R\R\R\R\R\R\Z \Z\Z\Z\Z }% -\def\XINT@mul@add@C #1#2#3#4#5% +\def\XINT@mul@choice@littlebysecond #1#2#3#4% {% - \xint@w - #5\xint@mul@add@cw - #4\xint@mul@add@cx - #3\xint@mul@add@cy - #2\xint@mul@add@cz - \W\XINT@mul@add@CD {#5#4#3#2}{#1}% -}% -\def\XINT@mul@add@CD #1% -{\expandafter - \XINT@mul@add@CC\the\numexpr 1+10#1\relax.% + \expandafter\XINT@mul@M + \expandafter{\the\numexpr #4\expandafter}% + \romannumeral0\XINT@RQ {}#3\R\R\R\R\R\R\R\R\Z \Z\Z\Z\Z }% -\def\XINT@mul@add@CC #1#2#3.#4% +\def\XINT@mul@choice@compare #1#2% {% - \XINT@mul@add@AC@checkcarry #2{#3#4}% -}% -\def\xint@mul@add@cw - #1\xint@mul@add@cx - #2\xint@mul@add@cy - #3\xint@mul@add@cz - \W\XINT@mul@add@CD -{\expandafter - \XINT@mul@add@CDw\the\numexpr 1+#1#2#3\relax.% + \ifnum #1>#2 + \expandafter \XINT@mul@choice@i + \else + \expandafter \XINT@mul@choice@ii + \fi + {#1}{#2}% }% -\def\XINT@mul@add@CDw #1.#2#3\X\Y\Z -{% - \XINT@mul@add@end #1#3% +\def\XINT@mul@choice@i #1#2% +{% + \ifcase \numexpr (#2-3)/4\relax + \or \xint@afterfi {\ifnum #1<330 \expandafter \XINT@mul@choice@same + \else \expandafter \XINT@mul@choice@permute \fi}% + \or \xint@afterfi {\ifnum #1<168 \expandafter \XINT@mul@choice@same + \else \expandafter \XINT@mul@choice@permute \fi}% + \or \xint@afterfi {\ifnum #1<109 \expandafter \XINT@mul@choice@same + \else \expandafter \XINT@mul@choice@permute \fi}% + \or \xint@afterfi {\ifnum #1<80 \expandafter \XINT@mul@choice@same + \else \expandafter \XINT@mul@choice@permute \fi}% + \or \xint@afterfi {\ifnum #1<66 \expandafter \XINT@mul@choice@same + \else \expandafter \XINT@mul@choice@permute \fi}% + \or \xint@afterfi {\ifnum #1<52 \expandafter \XINT@mul@choice@same + \else \expandafter \XINT@mul@choice@permute \fi}% + \else \expandafter \XINT@mul@choice@permute + \fi }% -\def\xint@mul@add@cx - #1\xint@mul@add@cy - #2\xint@mul@add@cz - \W\XINT@mul@add@CD -{\expandafter - \XINT@mul@add@CDx\the\numexpr 1+#1#2\relax.% +\def\XINT@mul@choice@ii #1#2% +{% + \ifcase \numexpr (#1-3)/4\relax + \or \xint@afterfi {\ifnum #2<330 \expandafter \XINT@mul@choice@permute + \else \expandafter \XINT@mul@choice@same \fi}% + \or \xint@afterfi {\ifnum #2<168 \expandafter \XINT@mul@choice@permute + \else \expandafter \XINT@mul@choice@same \fi}% + \or \xint@afterfi {\ifnum #2<109 \expandafter \XINT@mul@choice@permute + \else \expandafter \XINT@mul@choice@same \fi}% + \or \xint@afterfi {\ifnum #2<80 \expandafter \XINT@mul@choice@permute + \else \expandafter \XINT@mul@choice@same \fi}% + \or \xint@afterfi {\ifnum #2<66 \expandafter \XINT@mul@choice@permute + \else \expandafter \XINT@mul@choice@same \fi}% + \or \xint@afterfi {\ifnum #2<52 \expandafter \XINT@mul@choice@permute + \else \expandafter \XINT@mul@choice@same \fi}% + \else \expandafter \XINT@mul@choice@same + \fi }% -\def\XINT@mul@add@CDx #1.#2#3\Y\Z +\def\XINT@mul@choice@same #1#2% {% - \XINT@mul@add@end #1#3% -}% -\def\xint@mul@add@cy - #1\xint@mul@add@cz - \W\XINT@mul@add@CD -{\expandafter - \XINT@mul@add@CDy\the\numexpr 1+#1\relax.% + \expandafter + \XINT@mul@enter\romannumeral0% + \XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z + \W\X\Y\Z #2\W\X\Y\Z }% -\def\XINT@mul@add@CDy #1.#2#3\Z +\def\XINT@mul@choice@permute #1#2% {% - \XINT@mul@add@end #1#3% -}% -\def\xint@mul@add@cz\W\XINT@mul@add@CD #1#2#3{\XINT@mul@add@end #1#3}% -\def\XINT@mul@add@end #1#2#3#4#5% -{\expandafter\space - \the\numexpr #1#2#3#4#5\relax + \expandafter + \XINT@mul@enter\romannumeral0% + \XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z + \W\X\Y\Z #1\W\X\Y\Z }% \def\XINT@mul@Ar #1#2#3#4#5#6% {% @@ -1514,7 +1719,7 @@ }% \def\xint@mul@br\Z\XINT@mul@Br #1#2% {% - \XINT@sum@AC@checkcarry #1% + \XINT@addr@AC@checkcarry #1% }% \def\XINT@mul@Br #1#2#3#4\W\X\Y\Z #5#6#7#8% {\expandafter @@ -1579,7 +1784,8 @@ {0000}{}{#1}% }% \def\XINT@mul@M@zero #1\Z\Z\Z\Z { 0}% -\def\XINT@mul@M@one #1#2#3#4\Z\Z\Z\Z {% +\def\XINT@mul@M@one #1#2#3#4\Z\Z\Z\Z +{% \expandafter \xint@cleanupzeros@andstop \romannumeral0\XINT@rev{#4}% @@ -1653,8 +1859,8 @@ \XINT@mul@main \expandafter {\romannumeral0\expandafter \XINT@mul@Ar \expandafter0\expandafter{\expandafter}% - \romannumeral0\XINT@mul@Mr {#2}#3\Z\Z\Z\Z \W\X\Y\Z 0000#1\W\X\Y\Z - }#3\W\X\Y\Z + \romannumeral0\XINT@mul@Mr {#2}#3\Z\Z\Z\Z + \W\X\Y\Z 0000#1\W\X\Y\Z }#3\W\X\Y\Z }% \def\xint@mul@mainw #1\xint@mul@mainx @@ -1663,7 +1869,7 @@ \W\XINT@mul@compute #4#5#6\W\X\Y\Z \X\Y\Z {% \expandafter - \XINT@mul@add@A \expandafter0\expandafter{\expandafter}% + \XINT@addm@A \expandafter0\expandafter{\expandafter}% \romannumeral0% \XINT@mul@Mr {#3#2#1}#6\Z\Z\Z\Z \W\X\Y\Z 000#4\W\X\Y\Z @@ -1674,7 +1880,7 @@ \W\XINT@mul@compute #3#4#5\W\X\Y\Z \Y\Z {% \expandafter - \XINT@mul@add@A \expandafter0\expandafter{\expandafter}% + \XINT@addm@A \expandafter0\expandafter{\expandafter}% \romannumeral0% \XINT@mul@Mr {#2#1}#5\Z\Z\Z\Z \W\X\Y\Z 00#3\W\X\Y\Z @@ -1684,7 +1890,7 @@ \W\XINT@mul@compute #2#3#4\W\X\Y\Z \Z {% \expandafter - \XINT@mul@add@A \expandafter0\expandafter{\expandafter}% + \XINT@addm@A \expandafter0\expandafter{\expandafter}% \romannumeral0% \XINT@mul@Mr {#1}#4\Z\Z\Z\Z \W\X\Y\Z 0#2\W\X\Y\Z @@ -1694,153 +1900,128 @@ \expandafter \xint@cleanupzeros@andstop\romannumeral0\XINT@rev{#1}% }% -\def\xintSqr {\romannumeral0\xintsqr }% -\def\xintsqr #1% -{% - \expandafter\expandafter\expandafter - \XINT@sqr - \expandafter\expandafter\expandafter - {\xintAbs{#1}}% fait l'expansion de #1 et se d\'ebarrasse du signe -}% -\def\XINT@sqr #1% -{\expandafter - \XINT@mul@enter - \romannumeral0% - \XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z - \W\X\Y\Z #1\W\X\Y\Z -}% -\def\XINT@posprod #1% +\def\XINT@mulr@enter #1\W\X\Y\Z #2#3#4#5% {% - \XINT@pprod@checkifempty #1\Z -}% -\def\XINT@pprod@checkifempty #1% + \xint@w + #5\xint@mulr@enterw + #4\xint@mulr@enterx + #3\xint@mulr@entery + #2\xint@mulr@enterz + \W\XINT@mulr@start {#2#3#4#5}#1\W\X\Y\Z +}% +\def\xint@mulr@enterw + #1\xint@mulr@enterx + #2\xint@mulr@entery + #3\xint@mulr@enterz + \W\XINT@mulr@start #4#5\W\X\Y\Z \X\Y\Z {% - \xint@relax #1\XINT@pprod@emptyproduct\relax - \XINT@pprod@first #1% + \XINT@mul@Mr {#3#2#1}#5\Z\Z\Z\Z }% -\def\XINT@pprod@emptyproduct #1\Z { 1}% -\def\XINT@pprod@first #1\Z +\def\xint@mulr@enterx + #1\xint@mulr@entery + #2\xint@mulr@enterz + \W\XINT@mulr@start #3#4\W\X\Y\Z \Y\Z {% - \XINT@pprod@getnext {#1}% + \XINT@mul@Mr {#2#1}#4\Z\Z\Z\Z }% -\def\XINT@pprod@getnext #1#2% +\def\xint@mulr@entery + #1\xint@mulr@enterz + \W\XINT@mulr@start #2#3\W\X\Y\Z \Z {% - \XINT@pprod@checkiffinished #2\Z {#1}% + \XINT@mul@Mr {#1}#3\Z\Z\Z\Z }% -\def\XINT@pprod@checkiffinished #1% -{% - \xint@relax #1\XINT@pprod@end\relax - \XINT@pprod@RQnew #1% +\def\XINT@mulr@start #1#2\W\X\Y\Z +{\expandafter + \XINT@mulr@main \expandafter + {\romannumeral0\XINT@mul@Mr {#1}#2\Z\Z\Z\Z }#2\W\X\Y\Z }% -\def\XINT@pprod@RQnew #1\Z +\def\XINT@mulr@main #1#2\W\X\Y\Z #3#4#5#6% {% - \expandafter\XINT@pprod@compute - \expandafter - {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z }% + \xint@w + #6\xint@mulr@mainw + #5\xint@mulr@mainx + #4\xint@mulr@mainy + #3\xint@mulr@mainz + \W\XINT@mulr@compute {#1}{#3#4#5#6}#2\W\X\Y\Z }% -\def\XINT@pprod@compute #1#2% -{% - \expandafter - \XINT@pprod@getnext - \expandafter - {\romannumeral0\XINT@mul@enter #1\W\X\Y\Z #2\W\X\Y\Z }% +\def\XINT@mulr@compute #1#2#3\W\X\Y\Z +{\expandafter + \XINT@mulr@main \expandafter + {\romannumeral0\expandafter + \XINT@mul@Ar \expandafter0\expandafter{\expandafter}% + \romannumeral0\XINT@mul@Mr {#2}#3\Z\Z\Z\Z \W\X\Y\Z 0000#1\W\X\Y\Z + }#3\W\X\Y\Z +}% +\def\xint@mulr@mainw + #1\xint@mulr@mainx + #2\xint@mulr@mainy + #3\xint@mulr@mainz + \W\XINT@mulr@compute #4#5#6\W\X\Y\Z \X\Y\Z +{\expandafter + \XINT@addp@A + \expandafter0\expandafter{\expandafter}% + \romannumeral0\XINT@mul@Mr {#3#2#1}#6\Z\Z\Z\Z + \W\X\Y\Z 000#4\W\X\Y\Z }% -\def\XINT@pprod@end\relax\XINT@pprod@RQnew #1\Z #2{ #2}% -\def\xintProductExpr {\romannumeral0\xintproductexpr }% -\def\xintPrd {\romannumeral0\xintprd }% -\def\xintprd #1% -{% - \expandafter\expandafter\expandafter - \xintproductexpr #1\relax +\def\xint@mulr@mainx + #1\xint@mulr@mainy + #2\xint@mulr@mainz + \W\XINT@mulr@compute #3#4#5\W\X\Y\Z \Y\Z +{\expandafter + \XINT@addp@A + \expandafter0\expandafter{\expandafter}% + \romannumeral0\XINT@mul@Mr {#2#1}#5\Z\Z\Z\Z + \W\X\Y\Z 00#3\W\X\Y\Z +}% +\def\xint@mulr@mainy + #1\xint@mulr@mainz + \W\XINT@mulr@compute #2#3#4\W\X\Y\Z \Z +{\expandafter + \XINT@addp@A + \expandafter0\expandafter{\expandafter}% + \romannumeral0\XINT@mul@Mr {#1}#4\Z\Z\Z\Z + \W\X\Y\Z 0#2\W\X\Y\Z }% -\def\xintproductexpr #1% +\def\xint@mulr@mainz\W\XINT@mulr@compute #1#2#3\W\X\Y\Z { #1}% +\def\xintiSqr {\romannumeral0\xintisqr }% +\def\xintisqr #1% {% \expandafter\expandafter\expandafter - \XINT@prod@checkifempty #1\Z -}% -\def\XINT@prod@checkifempty #1% -{% - \xint@relax #1\XINT@prod@emptyproduct\relax - \XINT@prod@checkfirstsign #1% -}% -\def\XINT@prod@emptyproduct #1\Z { 1}% -\def\XINT@prod@checkfirstsign #1% -{% - \xint@zero #1\XINT@prod@returnzero0% - \xint@UDsignfork - #1\dummy \XINT@prod@firstisneg - -\dummy \XINT@prod@firstispos - \xint@UDkrof - #1% -}% -\def\XINT@prod@returnzero #1\relax { 0}% -\def\XINT@prod@firstisneg #1#2\Z -{% - \XINT@prod@xpxpnext 0{#2}% -}% -\def\XINT@prod@firstispos #1\Z -{% - \XINT@prod@xpxpnext 1{#1}% -}% -\def\XINT@prod@xpxpnext #1#2#3% -{% + \XINT@sqr \expandafter\expandafter\expandafter - \XINT@prod@checkiffinished #3\Z {#2}#1% -}% -\def\XINT@prod@checkiffinished #1% -{% - \xint@relax #1\XINT@prod@end\relax - \XINT@prod@checksign #1% -}% -\def\XINT@prod@checksign #1% -{% - \xint@zero #1\XINT@prod@returnzero0% - \xint@UDsignfork - #1\dummy \XINT@prod@neg@RQnew - -\dummy \XINT@prod@pos@RQnew - \xint@UDkrof - #1% -}% -\def\XINT@prod@pos@RQnew #1\Z -{% - \expandafter - \XINT@prod@pos - \expandafter - {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z }% + {\xintiAbs{#1}}% fait l'expansion de #1 et se d\'ebarrasse du signe }% -\def\XINT@prod@pos #1#2#3% -{% - \expandafter - \XINT@prod@xpxpnext - \expandafter - #3% - \expandafter - {\romannumeral0\XINT@mul@enter #1\W\X\Y\Z #2\W\X\Y\Z }% -}% -\def\XINT@prod@neg@RQnew #1#2\Z -{% - \expandafter - \XINT@prod@neg - \expandafter - {\romannumeral0\XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z }% +\let\xintSqr\xintiSqr \let\xintsqr\xintisqr +\def\XINT@sqr #1% +{\expandafter + \XINT@mul@enter + \romannumeral0% + \XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z + \W\X\Y\Z #1\W\X\Y\Z }% -\def\XINT@prod@neg #1#2#3% +\def\xintiPrd {\romannumeral0\xintiprd }% +\def\xintiprd #1{\xintiproductexpr #1\relax }% +\let\xintPrd\xintiPrd +\let\xintprd\xintiprd +\def\xintiProductExpr {\romannumeral0\xintiproductexpr }% +\def\xintiproductexpr {% - \expandafter - \XINT@prod@xpxpnext - \expandafter - {\the\numexpr 1-#3\expandafter}% - \expandafter - {\romannumeral0\XINT@mul@enter #1\W\X\Y\Z #2\W\X\Y\Z }% + \expandafter\expandafter\expandafter\XINT@productexpr }% -\def\XINT@prod@end\relax\XINT@prod@checksign #1\Z #2#3% +\let\xintProductExpr\xintiProductExpr +\let\xintproductexpr\xintiproductexpr +\def\XINT@productexpr {\XINT@prod@loop {1}}% +\def\XINT@prod@loop #1#2% {% - \xint@prod@cleanupzeros #3#2% + \xint@relax #2\XINT@prod@finished\relax + \expandafter\XINT@prod@loop\expandafter + {\romannumeral0\xintimul {#2}{#1}}% }% -\def\xint@prod@cleanupzeros #1#2#3#4#5% +\def\XINT@prod@finished #1#2#3#4#5% {% - \expandafter\space\the\numexpr (2*#1-1)*#2#3#4#5\relax + \XINT@prod@finished@ #5% }% +\def\XINT@prod@finished@ #1#2#3#4#5{ #5}% \def\xintFac {\romannumeral0\xintfac }% \def\xintfac #1% {% @@ -1852,7 +2033,7 @@ \def\XINT@Fac {\romannumeral0\XINT@fac@fork }% \def\XINT@fac@fork #1% {% - \ifcase\xintSgn {#1} + \ifcase\xintiSgn {#1} \xint@afterfi{\expandafter\space\expandafter 1\xint@gobble }% \or \expandafter\XINT@fac@checklength @@ -1891,57 +2072,50 @@ }% \def\XINT@fac@big@docomputation #1#2% {% - \expandafter - \XINT@pprod@getnext - \expandafter + \expandafter \XINT@fac@bigcompute@loop \expandafter {\romannumeral0\XINT@fac@loop {9999}}#2\relax }% -\def\XINT@fac@loop #1{\XINT@fac@loop@main 1{#1}{}}% -\def\XINT@fac@loop@main #1#2#3% +\def\XINT@fac@bigcompute@loop #1#2% {% - \ifnum #1<#2 - \expandafter - \XINT@fac@loop@main - \expandafter - {\the\numexpr #1+1\expandafter }% - \else - \expandafter\XINT@fac@docomputation - \fi - {#2}{#3{#1}}% + \xint@relax #2\XINT@fac@bigcompute@end\relax + \expandafter\XINT@fac@bigcompute@loop\expandafter + {\expandafter\XINT@mul@enter + \romannumeral0\XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z + \W\X\Y\Z #1\W\X\Y\Z }% }% -\def\XINT@fac@docomputation #1#2% +\def\XINT@fac@bigcompute@end #1#2#3#4#5% {% - \XINT@fprod@getnext {1000}#2\relax + \XINT@fac@bigcompute@end@ #5% }% -\def\XINT@fprod@getnext #1#2% -{% - \XINT@fprod@checkiffinished #2\Z {#1}% -}% -\def\XINT@fprod@checkiffinished #1% +\def\XINT@fac@bigcompute@end@ #1\R #2\Z \W\X\Y\Z #3\W\X\Y\Z { #3}% +\def\XINT@fac@loop #1{\XINT@fac@loop@main 1{1000}{#1}}% +\def\XINT@fac@loop@main #1#2#3% {% - \xint@relax #1\XINT@fprod@end\relax - \XINT@fprod@compute #1% + \ifnum #3>#1 + \else + \expandafter\XINT@fac@loop@exit + \fi + \expandafter\XINT@fac@loop@main\expandafter + {\the\numexpr #1+1\expandafter }\expandafter + {\romannumeral0\XINT@mul@Mr {#1}#2\Z\Z\Z\Z }% + {#3}% }% -\def\XINT@fprod@compute #1\Z #2% +\def\XINT@fac@loop@exit #1#2#3#4#5#6#7% {% - \expandafter - \XINT@fprod@getnext - \expandafter - {\romannumeral0\XINT@mul@Mr {#1}#2\Z\Z\Z\Z }% + \XINT@fac@loop@exit@ #6% }% -\def\XINT@fprod@end\relax\XINT@fprod@compute #1\Z #2% +\def\XINT@fac@loop@exit@ #1#2#3% {% - \expandafter - \xint@cleanupzeros@andstop - \romannumeral0\XINT@rev {#2}% + \XINT@mul@M }% -\def\xintPow {\romannumeral0\xintpow }% -\def\xintpow #1% +\def\xintiPow {\romannumeral0\xintipow }% +\def\xintipow #1% {% \expandafter\expandafter\expandafter \xint@pow #1\Z% }% +\let\xintPow\xintiPow \let\xintpow\xintipow \def\xint@pow #1#2\Z {% \xint@UDsignfork @@ -2012,7 +2186,7 @@ \def\XINT@pow@BisZero #1#2{ 1}% \def\XINT@pow@checkBlength #1#2% {% - \ifnum\xintLen{#1} >9 + \ifnum\xintiLen{#1} >9 \expandafter\XINT@pow@BtooBig \else \expandafter\XINT@pow@loop @@ -2033,7 +2207,7 @@ \xint@afterfi{\expandafter\XINT@pow@loop@a \expandafter{\the\numexpr 2*(#1/2)-#1\expandafter }% b mod 2 \expandafter{\the\numexpr #1-#1/2\expandafter }% [b/2] - \expandafter{\romannumeral0\xintsqr{#2}}}% + \expandafter{\romannumeral0\xintisqr{#2}}}% \fi {{#2}}% }% @@ -2076,10 +2250,8 @@ }% \def\XINT@pow@pprod@compute #1\Z #2% {% - \expandafter - \XINT@pow@pprod@getnext - \expandafter - {\romannumeral0\XINT@pow@mul@enter #2\W\X\Y\Z #1\W\X\Y\Z}% + \expandafter \XINT@pow@pprod@getnext \expandafter + {\romannumeral0\XINT@mulr@enter #2\W\X\Y\Z #1\W\X\Y\Z}% }% \def\XINT@pow@pprod@end\relax\XINT@pow@pprod@compute #1\Z #2% {% @@ -2087,229 +2259,6 @@ \xint@cleanupzeros@andstop \romannumeral0\XINT@rev {#2}% }% -\def\XINT@pow@mul@enter #1\W\X\Y\Z #2#3#4#5% -{% - \xint@w - #5\xint@pow@mul@enterw - #4\xint@pow@mul@enterx - #3\xint@pow@mul@entery - #2\xint@pow@mul@enterz - \W\XINT@pow@mul@start {#2#3#4#5}#1\W\X\Y\Z -}% -\def\xint@pow@mul@enterw - #1\xint@pow@mul@enterx - #2\xint@pow@mul@entery - #3\xint@pow@mul@enterz - \W\XINT@pow@mul@start #4#5\W\X\Y\Z \X\Y\Z -{% - \XINT@mul@Mr {#3#2#1}#5\Z\Z\Z\Z -}% -\def\xint@pow@mul@enterx - #1\xint@pow@mul@entery - #2\xint@pow@mul@enterz - \W\XINT@pow@mul@start #3#4\W\X\Y\Z \Y\Z -{% - \XINT@mul@Mr {#2#1}#4\Z\Z\Z\Z -}% -\def\xint@pow@mul@entery - #1\xint@pow@mul@enterz - \W\XINT@pow@mul@start #2#3\W\X\Y\Z \Z -{% - \XINT@mul@Mr {#1}#3\Z\Z\Z\Z -}% -\def\XINT@pow@mul@start #1#2\W\X\Y\Z -{\expandafter - \XINT@pow@mul@main \expandafter - {\romannumeral0% - \XINT@mul@Mr {#1}#2\Z\Z\Z\Z - }#2\W\X\Y\Z -}% -\def\XINT@pow@mul@main #1#2\W\X\Y\Z #3#4#5#6% -{% - \xint@w - #6\xint@pow@mul@mainw - #5\xint@pow@mul@mainx - #4\xint@pow@mul@mainy - #3\xint@pow@mul@mainz - \W\XINT@pow@mul@compute {#1}{#3#4#5#6}#2\W\X\Y\Z -}% -\def\XINT@pow@mul@compute #1#2#3\W\X\Y\Z -{\expandafter - \XINT@pow@mul@main \expandafter - {\romannumeral0\expandafter - \XINT@mul@Ar \expandafter0\expandafter{\expandafter}% - \romannumeral0\XINT@mul@Mr {#2}#3\Z\Z\Z\Z \W\X\Y\Z 0000#1\W\X\Y\Z - }#3\W\X\Y\Z -}% -\def\xint@pow@mul@mainw - #1\xint@pow@mul@mainx - #2\xint@pow@mul@mainy - #3\xint@pow@mul@mainz - \W\XINT@pow@mul@compute #4#5#6\W\X\Y\Z \X\Y\Z -{% - \expandafter - \XINT@pow@add@A \expandafter0\expandafter{\expandafter}% - \romannumeral0% - \XINT@mul@Mr {#3#2#1}#6\Z\Z\Z\Z - \W\X\Y\Z 000#4\W\X\Y\Z -}% -\def\xint@pow@mul@mainx - #1\xint@pow@mul@mainy - #2\xint@pow@mul@mainz - \W\XINT@pow@mul@compute #3#4#5\W\X\Y\Z \Y\Z -{% - \expandafter - \XINT@pow@add@A \expandafter0\expandafter{\expandafter}% - \romannumeral0% - \XINT@mul@Mr {#2#1}#5\Z\Z\Z\Z - \W\X\Y\Z 00#3\W\X\Y\Z -}% -\def\xint@pow@mul@mainy - #1\xint@pow@mul@mainz - \W\XINT@pow@mul@compute #2#3#4\W\X\Y\Z \Z -{% - \expandafter - \XINT@pow@add@A \expandafter0\expandafter{\expandafter}% - \romannumeral0% - \XINT@mul@Mr {#1}#4\Z\Z\Z\Z - \W\X\Y\Z 0#2\W\X\Y\Z -}% -\def\xint@pow@mul@mainz\W\XINT@pow@mul@compute #1#2#3\W\X\Y\Z -{ #1}% -\def\XINT@pow@add@A #1#2#3#4#5#6% -{% - \xint@w - #3\xint@pow@add@az - \W\XINT@pow@add@AB #1{#3#4#5#6}{#2}% -}% -\def\xint@pow@add@az\W\XINT@pow@add@AB #1#2% -{% - \XINT@pow@add@AC@checkcarry #1% -}% -\def\XINT@pow@add@AC@checkcarry #1% -{% - \xint@zero #1\xint@pow@add@AC@nocarry 0\XINT@pow@add@C -}% -\def\xint@pow@add@AC@nocarry 0\XINT@pow@add@C -{% - \XINT@pow@add@F -}% -\def\XINT@pow@add@AB #1#2#3#4\W\X\Y\Z #5#6#7#8% -{% - \XINT@pow@add@ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z -}% -\def\XINT@pow@add@ABE #1#2#3#4#5#6% -{\expandafter - \XINT@pow@add@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax -}% -\def\XINT@pow@add@ABEA #1#2#3#4#5#6#7% -{% - \XINT@pow@add@A #2{#7#6#5#4#3}%<-- attention on met donc \`a droite -}% -\def\XINT@pow@add@C #1#2#3#4#5% -{% - \xint@w - #5\xint@pow@add@cw - #4\xint@pow@add@cx - #3\xint@pow@add@cy - #2\xint@pow@add@cz - \W\XINT@pow@add@CD {#5#4#3#2}{#1}% -}% -\def\XINT@pow@add@CD #1% -{\expandafter - \XINT@pow@add@CC\the\numexpr 1+10#1\relax -}% -\def\XINT@pow@add@CC #1#2#3#4#5#6#7% -{% - \XINT@pow@add@AC@checkcarry #2{#7#6#5#4#3}% -}% -\def\xint@pow@add@cw - #1\xint@pow@add@cx - #2\xint@pow@add@cy - #3\xint@pow@add@cz - \W\XINT@pow@add@CD -{\expandafter - \XINT@pow@add@CDw\the\numexpr 1+10#1#2#3\relax -}% -\def\XINT@pow@add@CDw #1#2#3#4#5#6% -{% - \xint@quatrezeros #2#3#4#5\XINT@pow@add@endDw@zeros - 0000\XINT@pow@add@endDw #2#3#4#5% -}% -\def\XINT@pow@add@endDw@zeros 0000\XINT@pow@add@endDw 0000#1\X\Y\Z{ #1}% -\def\XINT@pow@add@endDw #1#2#3#4#5\X\Y\Z{ #5#4#3#2#1}% -\def\xint@pow@add@cx - #1\xint@pow@add@cy - #2\xint@pow@add@cz - \W\XINT@pow@add@CD -{\expandafter - \XINT@pow@add@CDx\the\numexpr 1+100#1#2\relax -}% -\def\XINT@pow@add@CDx #1#2#3#4#5#6% -{% - \xint@quatrezeros #2#3#4#5\XINT@pow@add@endDx@zeros - 0000\XINT@pow@add@endDx #2#3#4#5% -}% -\def\XINT@pow@add@endDx@zeros 0000\XINT@pow@add@endDx 0000#1\Y\Z{ #1}% -\def\XINT@pow@add@endDx #1#2#3#4#5\Y\Z{ #5#4#3#2#1}% -\def\xint@pow@add@cy - #1\xint@pow@add@cz - \W\XINT@pow@add@CD -{\expandafter - \XINT@pow@add@CDy\the\numexpr 1+1000#1\relax -}% -\def\XINT@pow@add@CDy #1#2#3#4#5#6% -{% - \xint@quatrezeros #2#3#4#5\XINT@pow@add@endDy@zeros - 0000\XINT@pow@add@endDy #2#3#4#5% -}% -\def\XINT@pow@add@endDy@zeros 0000\XINT@pow@add@endDy 0000#1\Z{ #1}% -\def\XINT@pow@add@endDy #1#2#3#4#5\Z{ #5#4#3#2#1}% -\def\xint@pow@add@cz\W\XINT@pow@add@CD #1#2{ #21000}% -\def\XINT@pow@add@F #1#2#3#4#5% -{% - \xint@w - #5\xint@pow@add@Gw - #4\xint@pow@add@Gx - #3\xint@pow@add@Gy - #2\xint@pow@add@Gz - \W\XINT@pow@add@G {#2#3#4#5}{#1}% -}% -\def\XINT@pow@add@G #1#2% -{% - \XINT@pow@add@F {#2#1}% -}% -\def\xint@pow@add@Gw - #1\xint@pow@add@Gx - #2\xint@pow@add@Gy - #3\xint@pow@add@Gz - \W\XINT@pow@add@G #4% -{% - \xint@quatrezeros #3#2#10\XINT@pow@add@endGw@zeros - 0000\XINT@pow@add@endGw #3#2#10% -}% -\def\XINT@pow@add@endGw@zeros 0000\XINT@pow@add@endGw 0000#1\X\Y\Z{ #1}% -\def\XINT@pow@add@endGw #1#2#3#4#5\X\Y\Z{ #5#1#2#3#4}% -\def\xint@pow@add@Gx - #1\xint@pow@add@Gy - #2\xint@pow@add@Gz - \W\XINT@pow@add@G #3% -{% - \xint@quatrezeros #2#100\XINT@pow@add@endGx@zeros - 0000\XINT@pow@add@endGx #2#100% -}% -\def\XINT@pow@add@endGx@zeros 0000\XINT@pow@add@endGx 0000#1\Y\Z{ #1}% -\def\XINT@pow@add@endGx #1#2#3#4#5\Y\Z{ #5#1#2#3#4}% -\def\xint@pow@add@Gy - #1\xint@pow@add@Gz - \W\XINT@pow@add@G #2% -{% - \xint@quatrezeros #1000\XINT@pow@add@endGy@zeros - 0000\XINT@pow@add@endGy #1000% -}% -\def\XINT@pow@add@endGy@zeros 0000\XINT@pow@add@endGy 0000#1\Z{ #1}% -\def\XINT@pow@add@endGy #1#2#3#4#5\Z{ #5#1#2#3#4}% -\def\xint@pow@add@Gz\W\XINT@pow@add@G #1#2{ #2}% \def\xintQuo {\romannumeral0\xintquo }% \def\xintRem {\romannumeral0\xintrem }% \def\xintquo {\expandafter @@ -2370,7 +2319,7 @@ }% \def\XINT@div@AisNegative@post #1#2% {% - \ifcase\xintSgn {#2} + \ifcase\xintiSgn {#2} \expandafter \XINT@div@AisNegative@zerorem \or \expandafter \XINT@div@AisNegative@posrem @@ -2384,33 +2333,45 @@ }% \def\XINT@div@AisNegative@posrem #1% {% - \expandafter - \XINT@div@AisNegative@posrem@b - \expandafter - {\romannumeral0\xintopp {\XINT@Add{#1}{1}}}% + \expandafter \XINT@div@AisNegative@posrem@b \expandafter + {\romannumeral0\xintiopp {\XINT@Add{#1}{1}}}% }% \def\XINT@div@AisNegative@posrem@b #1#2#3% {% - \expandafter - \xint@exchangetwo@keepbraces@andstop - \expandafter + \expandafter \xint@exchangetwo@keepbraces@andstop \expandafter {\romannumeral0\XINT@sub {#3}{#2}}{#1}% }% \def\XINT@div@prepare #1% {% - \expandafter - \XINT@div@prepareB@a - \expandafter - {\romannumeral0\XINT@length {#1}}{#1}% B > 0 ici + \expandafter \XINT@div@prepareB@aa \expandafter + {\romannumeral0\XINT@length {#1}}{#1}% B > 0 ici +}% +\def\XINT@div@prepareB@aa #1% +{% + \ifnum #1=1 + \expandafter\XINT@div@prepareB@ab + \else + \expandafter\XINT@div@prepareB@a + \fi + {#1}% +}% +\def\XINT@div@prepareB@ab #1#2% +{% + \ifnum #2=1 + \expandafter\XINT@div@prepareB@BisOne + \else + \xint@afterfi{\XINT@div@prepareB@e {000}{3}{4}{#2}}% + \fi }% +\def\XINT@div@prepareB@BisOne #1{ {#1}{0}}% \def\XINT@div@prepareB@a #1% {% - \expandafter\XINT@div@prepareB@b\expandafter - {\the\numexpr 4*((#1+1)/4)\relax}{#1}% + \expandafter \XINT@div@prepareB@b \expandafter + {\the\numexpr 4*((#1+1)/4)\relax}{#1}% }% \def\XINT@div@prepareB@b #1#2% {% - \expandafter\XINT@div@prepareB@c \expandafter + \expandafter \XINT@div@prepareB@c \expandafter {\the\numexpr #1-#2\relax}{#1}% }% \def\XINT@div@prepareB@c #1% @@ -2432,10 +2393,8 @@ }% \def\XINT@div@prepareB@f #1#2#3#4#5\Z {% - \expandafter - \XINT@div@prepareB@g - \expandafter - {\romannumeral0\XINT@rev {#1#2#3#4#5}}{#1#2#3#4}% + \expandafter \XINT@div@prepareB@g \expandafter + {\romannumeral0\XINT@rev {#1#2#3#4#5}}{#1#2#3#4}% }% \def\XINT@div@prepareB@g #1#2#3#4#5#6% {% @@ -2443,10 +2402,8 @@ }% \def\XINT@div@prepareA@a #1% {% - \expandafter - \XINT@div@prepareA@b - \expandafter - {\romannumeral0\XINT@length {#1}}{#1}% A >0 ici + \expandafter \XINT@div@prepareA@b \expandafter + {\romannumeral0\XINT@length {#1}}{#1}% A >0 ici }% \def\XINT@div@prepareA@b #1% {% @@ -2490,9 +2447,7 @@ }% \def\XINT@div@finished@a #1#2#3% {% - \expandafter - \XINT@div@finished@b - \expandafter + \expandafter \XINT@div@finished@b \expandafter {\romannumeral0\XINT@cuz {#1}}% }% \def\XINT@div@finished@b #1#2#3#4#5% @@ -2508,9 +2463,7 @@ }% \def\XINT@div@finished@c #1#2% {% - \expandafter - \space - \expandafter + \expandafter \space \expandafter {\romannumeral0\expandafter\xint@cleanupzeros@andstop \romannumeral0\XINT@rev {#2}}{#1}% }% @@ -2523,20 +2476,15 @@ \xint@quatrezeros #1#2#3#4\xint@div@final@c0000% \XINT@div@final@c {#1#2#3#4}{#1#2#3#4#5}% }% -\def\xint@div@final@c0000\XINT@div@final@c #1% - {\XINT@div@finished@a }% +\def\xint@div@final@c0000\XINT@div@final@c #1{\XINT@div@finished@a }% \def\XINT@div@final@c #1#2#3#4% {% - \expandafter - \XINT@div@final@d - \expandafter + \expandafter \XINT@div@final@d \expandafter {\the\numexpr #1/#4\relax}{#2}% }% \def\XINT@div@final@d #1#2#3#4#5% q,A,Q,L,B puis c {% - \expandafter - \XINT@div@final@da - \expandafter + \expandafter \XINT@div@final@da \expandafter {\romannumeral0\XINT@mul@M {#1}#5\Z\Z\Z\Z }% {\romannumeral0\xint@cleanupzeros@andstop #2}% {#1}{#3}{#5}% @@ -2556,8 +2504,8 @@ \def\XINT@div@final@e #1#2#3#4#5% A,qB,q,Q,B,puis c {% \expandafter\XINT@div@final@f - \expandafter{\romannumeral0\xintsub {#1}{#2}}% - {\romannumeral0\xintadd {\XINT@Rev@andcleanupzeros{#4}}{#3}}% + \expandafter{\romannumeral0\xintisub {#1}{#2}}% + {\romannumeral0\xintiadd {\XINT@Rev@andcleanupzeros{#4}}{#3}}% }% \def\XINT@div@final@dc #1#2#3% A sans leading zeros,trash,q,Q,B,c {% @@ -2567,9 +2515,9 @@ \def\XINT@div@final@dd #1#2#3#4% q,A,Q,B puis c {% \expandafter\XINT@div@final@f - \expandafter{\romannumeral0\xintsub + \expandafter{\romannumeral0\xintisub {#2}{\romannumeral0\XINT@mul@M {#1}#4\Z\Z\Z\Z }}% - {\romannumeral0\xintadd {\XINT@Rev@andcleanupzeros{#3}}{#1}}% + {\romannumeral0\xintiadd {\XINT@Rev@andcleanupzeros{#3}}{#1}}% }% \def\XINT@div@final@f #1#2#3% R,Q à développer,c {% @@ -2588,17 +2536,15 @@ }% \def\XINT@div@body@a #1% {% - \XINT@div@body@b #1\Z + \XINT@div@body@b #1\Z {#1}% }% \def\XINT@div@body@b #1#2#3#4#5#6#7#8#9\Z {% - \XINT@div@body@c - {#1#2#3#4#5#6#7#8#9}% - {#1#2#3#4#5#6#7#8}% + \XINT@div@body@c {#1#2#3#4#5#6#7#8}% }% \def\XINT@div@body@c #1#2#3% {% - \XINT@div@body@d {#3}{}#1\Z {#2}{#3}% + \XINT@div@body@d {#3}{}#2\Z {#1}{#3}% }% \def\XINT@div@body@d #1#2#3#4#5#6% {% @@ -2619,19 +2565,40 @@ }% \def\XINT@div@body@f #1#2#3#4#5#6#7#8% {% - \expandafter\XINT@div@body@g - \expandafter - {\the\numexpr (#1+(#5+1)/2)/(#5+1)-1\relax }% - {#2}{#8}{#4}{#5}{#3}{#6}{#7}{#8}% + \expandafter\XINT@div@body@gg + \the\numexpr (#1+(#5+1)/2)/(#5+1)+99999\relax + {#8}{#2}{#8}{#4}{#5}{#3}{#6}{#7}{#8}% }% -\def\XINT@div@body@g #1#2#3% +\def\XINT@div@body@gg #1#2#3#4#5#6% +{% + \xint@UDzerofork + #2\dummy \XINT@div@body@gk + 0\dummy {\XINT@div@body@ggk #2}% + \xint@UDkrof + {#3#4#5#6}% +}% +\def\XINT@div@body@gk #1#2#3% {% \expandafter \XINT@div@body@h \romannumeral0\XINT@div@sub@xpxp - {\romannumeral0\XINT@pow@mul@enter #3\W\X\Y\Z #1\W\X\Y\Z }% - {#2}\Z - {#3}{#1}% + {\romannumeral0\XINT@mul@Mr {#1}#2\Z\Z\Z\Z }{#3}\Z {#1}% +}% +\def\XINT@div@body@ggk #1#2#3% +{% + \expandafter \XINT@div@body@gggk \expandafter + {\romannumeral0\XINT@mul@Mr {#1}0000#3\Z\Z\Z\Z }% + {\romannumeral0\XINT@mul@Mr {#2}#3\Z\Z\Z\Z }% + {#1#2}% +}% +\def\XINT@div@body@gggk #1#2#3#4% +{% + \expandafter + \XINT@div@body@h + \romannumeral0\XINT@div@sub@xpxp + {\romannumeral0\expandafter\XINT@mul@Ar + \expandafter0\expandafter{\expandafter}#2\W\X\Y\Z #1\W\X\Y\Z }% + {#4}\Z {#3}% }% \def\XINT@div@body@h #1#2#3#4#5#6#7#8#9\Z {% @@ -2642,6 +2609,10 @@ \fi {#1#2#3#4#5#6#7#8#9}% }% +\def\XINT@div@body@k #1#2#3% +{% + \XINT@div@body@l {#1}{#2}% +}% \def\XINT@div@body@i #1#2#3#4#5#6% {% \expandafter\XINT@div@body@j @@ -2650,16 +2621,10 @@ }% \def\XINT@div@body@j #1#2#3#4% {% - \expandafter - \XINT@div@body@l - \expandafter{\romannumeral0\XINT@div@sub@xpxp - {\romannumeral0\XINT@pow@mul@enter #3\W\X\Y\Z #1\W\X\Y\Z }% - {\XINT@Rev{#2}}}% - {#4+#1}% -}% -\def\XINT@div@body@k #1#2% -{% - \XINT@div@body@l {#1}% + \expandafter \XINT@div@body@l \expandafter + {\romannumeral0\XINT@div@sub@xpxp + {\romannumeral0\XINT@mul@Mr {#1}#4\Z\Z\Z\Z }{\XINT@Rev{#2}}}% + {#3+#1}% }% \def\XINT@div@body@l #1#2#3#4#5#6#7% {% @@ -2679,7 +2644,7 @@ \def\XINT@div@body@n #1#2% {% \expandafter\XINT@div@body@o\expandafter - {\romannumeral0\XINT@sum@A 0{}#1\W\X\Y\Z #2\W\X\Y\Z }% + {\romannumeral0\XINT@addr@A 0{}#1\W\X\Y\Z #2\W\X\Y\Z }% }% \def\XINT@div@body@o #1#2#3#4% {% @@ -2701,14 +2666,12 @@ }% \def\XINT@div@body@repeatp #1#2#3#4#5#6#7% {% - \expandafter - \XINT@div@body@p - \expandafter + \expandafter \XINT@div@body@p \expandafter {\the\numexpr #1-4\relax}{#2}{0000#3}% }% \def\XINT@div@body@q #1#2#3#4\Z #5#6% {% - \XINT@div@body@a {#4}{#2}{#6}{#3#5}{#1}% + \XINT@div@body@b #4\Z {#4}{#2}{#6}{#3#5}{#1}% }% \def\XINT@div@gotofinal@a #1#2#3#4\Z % {% @@ -2720,9 +2683,7 @@ }% \def\XINT@div@sub@xpxp #1% {% - \expandafter - \XINT@div@sub@xpxp@ - \expandafter + \expandafter \XINT@div@sub@xpxp@ \expandafter {#1}% }% \def\XINT@div@sub@xpxp@ #1#2% @@ -2842,6 +2803,24 @@ {% \expandafter\space\expandafter #1\xint@z }% +\def\xintMON {\romannumeral0\xintmon }% +\def\xintmon #1% +{% + \ifodd\xintLDg {#1} + \xint@afterfi{ -1}% + \else + \xint@afterfi{ 1}% + \fi +}% +\def\xintMMON {\romannumeral0\xintmmon }% +\def\xintmmon #1% +{% + \ifodd\xintLDg {#1} + \xint@afterfi{ 1}% + \else + \xint@afterfi{ -1}% + \fi +}% \def\xintOdd {\romannumeral0\xintodd }% \def\xintodd #1% {% @@ -2928,14 +2907,13 @@ \def\xint@dsh #1#2% {% \expandafter\expandafter\expandafter - \XINT@dsh@checksignx - #2\Z {#1}% + \XINT@dsh@checksignx #2\Z {#1}% }% \def\XINT@dsh@checksignx #1% {% \xint@UDzerominusfork #1-\dummy \XINT@dsh@xiszero - 0#1\dummy \XINT@dsx@xisNeg + 0#1\dummy \XINT@dsx@xisNeg@checkA % on passe direct dans DSx 0-\dummy {\XINT@dsh@xisPos #1}% \xint@UDkrof }% @@ -2944,7 +2922,7 @@ {% \expandafter \xint@firstoftwo@andstop - \romannumeral0\XINT@dsx@checksignA #2\Z {#1}% + \romannumeral0\XINT@dsx@checksignA #2\Z {#1}% via DSx }% \def\xintDSx {\romannumeral0\xintdsx }% \def\xintdsx #1#2% @@ -2957,8 +2935,7 @@ \def\xint@dsx #1#2% {% \expandafter\expandafter\expandafter - \XINT@dsx@checksignx - #2\Z {#1}% + \XINT@dsx@checksignx #2\Z {#1}% }% \def\XINT@DSx #1#2{\romannumeral0\XINT@dsx@checksignx #1\Z {#2}}% \def\XINT@dsx #1#2{\XINT@dsx@checksignx #1\Z {#2}}% @@ -2966,40 +2943,50 @@ {% \xint@UDzerominusfork #1-\dummy \XINT@dsx@xisZero - 0#1\dummy \XINT@dsx@xisNeg + 0#1\dummy \XINT@dsx@xisNeg@checkA 0-\dummy {\XINT@dsx@xisPos #1}% \xint@UDkrof }% -\def\XINT@dsx@xisZero #1\Z #2{ {#2}{0}}% -\def\XINT@dsx@xisNeg #1\Z +\def\XINT@dsx@xisZero #1\Z #2{ {#2}{0}}% attention comme x > 0 +\def\XINT@dsx@xisNeg@checkA #1\Z #2% {% - \ifnum\XINT@Len {#1} > 9 + \XINT@dsx@xisNeg@checkA@ #2\Z {#1}% +}% +\def\XINT@dsx@xisNeg@checkA@ #1#2\Z #3% +{% + \xint@zero #1\XINT@dsx@xisNeg@Azero 0\expandafter + \XINT@dsx@xisNeg@checkx\expandafter + {\romannumeral0\XINT@length {#3}}{#3}\Z {#1#2}% +}% +\def\XINT@dsx@xisNeg@Azero #1#2#3#4#5#6#7#8{ 0}% +\def\XINT@dsx@xisNeg@checkx #1% +{% + \ifnum #1> 9 \xint@afterfi {\xintError:TooBigDecimalShift \XINT@dsx@toobigx }% \else \expandafter \XINT@dsx@zeroloop \fi - {#1}\Z }% -\def\XINT@dsx@toobigx #1\Z #2{ #2}% +\def\XINT@dsx@toobigx #1#2#3{ 0}% \def\XINT@dsx@zeroloop #1% {% \ifcase #1 - \expandafter \XINT@dsx@exit + \XINT@dsx@exit \or - \expandafter \XINT@dsx@exiti + \XINT@dsx@exiti \or - \expandafter \XINT@dsx@exitii + \XINT@dsx@exitii \or - \expandafter \XINT@dsx@exitiii + \XINT@dsx@exitiii \or - \expandafter \XINT@dsx@exitiv + \XINT@dsx@exitiv \or - \expandafter \XINT@dsx@exitv + \XINT@dsx@exitv \or - \expandafter \XINT@dsx@exitvi + \XINT@dsx@exitvi \or - \expandafter \XINT@dsx@exitvii + \XINT@dsx@exitvii \else \xint@afterfi {\expandafter @@ -3008,22 +2995,14 @@ }% \fi }% -\def\XINT@dsx@exit #1\Z - {\XINT@dsx@addzeros {#1}}% -\def\XINT@dsx@exiti #1\Z - {\XINT@dsx@addzeros {0#1}}% -\def\XINT@dsx@exitii #1\Z - {\XINT@dsx@addzeros {00#1}}% -\def\XINT@dsx@exitiii #1\Z - {\XINT@dsx@addzeros {000#1}}% -\def\XINT@dsx@exitiv #1\Z - {\XINT@dsx@addzeros {0000#1}}% -\def\XINT@dsx@exitv #1\Z - {\XINT@dsx@addzeros {00000#1}}% -\def\XINT@dsx@exitvi #1\Z - {\XINT@dsx@addzeros {000000#1}}% -\def\XINT@dsx@exitvii #1\Z - {\XINT@dsx@addzeros {0000000#1}}% +\def\XINT@dsx@exit #1\fi #2\Z {\fi \XINT@dsx@addzeros {#2}}% +\def\XINT@dsx@exiti #1\fi #2\Z {\fi \XINT@dsx@addzeros {0#2}}% +\def\XINT@dsx@exitii #1\fi #2\Z {\fi \XINT@dsx@addzeros {00#2}}% +\def\XINT@dsx@exitiii #1\fi #2\Z {\fi \XINT@dsx@addzeros {000#2}}% +\def\XINT@dsx@exitiv #1\fi #2\Z {\fi \XINT@dsx@addzeros {0000#2}}% +\def\XINT@dsx@exitv #1\fi #2\Z {\fi \XINT@dsx@addzeros {00000#2}}% +\def\XINT@dsx@exitvi #1\fi #2\Z {\fi \XINT@dsx@addzeros {000000#2}}% +\def\XINT@dsx@exitvii #1\fi #2\Z {\fi \XINT@dsx@addzeros {0000000#2}}% \def\XINT@dsx@addzeros #1#2{ #2#1}% \def\XINT@dsx@xisPos #1\Z #2% {% @@ -3100,10 +3079,8 @@ \def\xintDecSplit {\romannumeral0\xintdecsplit }% \def\xintdecsplit #1#2% {% - \expandafter - \xint@split - \expandafter - {\romannumeral0\xintabs {#2}}{#1}% fait expansion de A + \expandafter \xint@split \expandafter + {\romannumeral0\xintiabs {#2}}{#1}% fait expansion de A }% \def\xint@split #1#2% {% @@ -3146,32 +3123,31 @@ \def\XINT@split@fromleft@loop #1% {% \ifcase #1 - \expandafter\XINT@split@fromleft@endsplit + \XINT@split@fromleft@endsplit \or - \expandafter\XINT@split@fromleft@one@andend + \XINT@split@fromleft@one@andend \or - \expandafter\XINT@split@fromleft@two@andend + \XINT@split@fromleft@two@andend \or - \expandafter\XINT@split@fromleft@three@andend + \XINT@split@fromleft@three@andend \or - \expandafter\XINT@split@fromleft@four@andend + \XINT@split@fromleft@four@andend \or - \expandafter\XINT@split@fromleft@five@andend + \XINT@split@fromleft@five@andend \or - \expandafter\XINT@split@fromleft@six@andend + \XINT@split@fromleft@six@andend \or - \expandafter\XINT@split@fromleft@seven@andend + \XINT@split@fromleft@seven@andend \else \expandafter \XINT@split@fromleft@loop@perhaps \expandafter - {\the\numexpr - #1-8\expandafter\expandafter\expandafter }% + {\the\numexpr #1-8\expandafter\expandafter\expandafter }% \expandafter \XINT@split@fromleft@eight \fi }% -\def\XINT@split@fromleft@endsplit #1#2\W #3\Z - { {#1}{#2}}% +\def\XINT@split@fromleft@endsplit #1\fi #2#3\W #4\Z + {\expandafter\space\fi {#2}{#3}}% \def\XINT@split@fromleft@eight #1#2#3#4#5#6#7#8#9% {% #9{#1#2#3#4#5#6#7#8#9}% @@ -3189,26 +3165,26 @@ {% \space {#1}{}% }% -\def\XINT@split@fromleft@one@andend - {\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@one }% +\def\XINT@split@fromleft@one@andend #1\fi +{\fi\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@one }% \def\XINT@split@fromleft@one #1#2{#2{#1#2}}% -\def\XINT@split@fromleft@two@andend - {\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@two }% +\def\XINT@split@fromleft@two@andend #1\fi +{\fi\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@two }% \def\XINT@split@fromleft@two #1#2#3{#3{#1#2#3}}% -\def\XINT@split@fromleft@three@andend - {\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@three }% +\def\XINT@split@fromleft@three@andend #1\fi +{\fi\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@three }% \def\XINT@split@fromleft@three #1#2#3#4{#4{#1#2#3#4}}% -\def\XINT@split@fromleft@four@andend - {\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@four }% +\def\XINT@split@fromleft@four@andend #1\fi +{\fi\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@four }% \def\XINT@split@fromleft@four #1#2#3#4#5{#5{#1#2#3#4#5}}% -\def\XINT@split@fromleft@five@andend - {\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@five }% +\def\XINT@split@fromleft@five@andend #1\fi +{\fi\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@five }% \def\XINT@split@fromleft@five #1#2#3#4#5#6{#6{#1#2#3#4#5#6}}% -\def\XINT@split@fromleft@six@andend - {\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@six }% +\def\XINT@split@fromleft@six@andend #1\fi +{\fi\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@six }% \def\XINT@split@fromleft@six #1#2#3#4#5#6#7{#7{#1#2#3#4#5#6#7}}% -\def\XINT@split@fromleft@seven@andend - {\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@seven }% +\def\XINT@split@fromleft@seven@andend #1\fi +{\fi\expandafter\XINT@split@fromleft@checkiftoofar\XINT@split@fromleft@seven }% \def\XINT@split@fromleft@seven #1#2#3#4#5#6#7#8{#8{#1#2#3#4#5#6#7#8}}% \def\XINT@split@fromleft@checkiftoofar #1#2#3\W #4\Z {% @@ -3225,9 +3201,7 @@ }% \def\XINT@split@fromright #1\Z #2% {% - \expandafter - \XINT@split@fromright@a - \expandafter + \expandafter \XINT@split@fromright@a \expandafter {\romannumeral0\XINT@rev {#2}}{#1}{#2}% }% \def\XINT@split@fromright@a #1#2% @@ -3239,19 +3213,19 @@ \ifcase #1 \expandafter\XINT@split@fromright@endsplit \or - \expandafter\XINT@split@fromright@one@andend + \XINT@split@fromright@one@andend \or - \expandafter\XINT@split@fromright@two@andend + \XINT@split@fromright@two@andend \or - \expandafter\XINT@split@fromright@three@andend + \XINT@split@fromright@three@andend \or - \expandafter\XINT@split@fromright@four@andend + \XINT@split@fromright@four@andend \or - \expandafter\XINT@split@fromright@five@andend + \XINT@split@fromright@five@andend \or - \expandafter\XINT@split@fromright@six@andend + \XINT@split@fromright@six@andend \or - \expandafter\XINT@split@fromright@seven@andend + \XINT@split@fromright@seven@andend \else \expandafter \XINT@split@fromright@loop@perhaps \expandafter @@ -3263,9 +3237,7 @@ }% \def\XINT@split@fromright@endsplit #1#2\W #3\Z #4% {% - \expandafter - \space - \expandafter {\romannumeral0\XINT@rev{#2}}{#1}% + \expandafter\space\expandafter {\romannumeral0\XINT@rev{#2}}{#1}% }% \def\XINT@split@fromright@eight #1#2#3#4#5#6#7#8#9% {% @@ -3276,28 +3248,27 @@ \xint@w #2\XINT@split@fromright@toofar\W\XINT@split@fromright@loop {#1}% }% -\def\XINT@split@fromright@toofar\W\XINT@split@fromright@loop #1#2#3\Z - { {}}% -\def\XINT@split@fromright@one@andend - {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@one }% +\def\XINT@split@fromright@toofar\W\XINT@split@fromright@loop #1#2#3\Z { {}}% +\def\XINT@split@fromright@one@andend #1\fi {\fi\expandafter + \XINT@split@fromright@checkiftoofar\XINT@split@fromright@one }% \def\XINT@split@fromright@one #1#2{#2{#2#1}}% -\def\XINT@split@fromright@two@andend - {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@two }% +\def\XINT@split@fromright@two@andend #1\fi {\fi\expandafter + \XINT@split@fromright@checkiftoofar\XINT@split@fromright@two }% \def\XINT@split@fromright@two #1#2#3{#3{#3#2#1}}% -\def\XINT@split@fromright@three@andend - {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@three }% +\def\XINT@split@fromright@three@andend #1\fi {\fi\expandafter + \XINT@split@fromright@checkiftoofar\XINT@split@fromright@three }% \def\XINT@split@fromright@three #1#2#3#4{#4{#4#3#2#1}}% -\def\XINT@split@fromright@four@andend - {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@four }% +\def\XINT@split@fromright@four@andend #1\fi {\fi\expandafter + \XINT@split@fromright@checkiftoofar\XINT@split@fromright@four }% \def\XINT@split@fromright@four #1#2#3#4#5{#5{#5#4#3#2#1}}% -\def\XINT@split@fromright@five@andend - {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@five }% +\def\XINT@split@fromright@five@andend #1\fi {\fi\expandafter + \XINT@split@fromright@checkiftoofar\XINT@split@fromright@five }% \def\XINT@split@fromright@five #1#2#3#4#5#6{#6{#6#5#4#3#2#1}}% -\def\XINT@split@fromright@six@andend - {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@six }% +\def\XINT@split@fromright@six@andend #1\fi {\fi\expandafter + \XINT@split@fromright@checkiftoofar\XINT@split@fromright@six }% \def\XINT@split@fromright@six #1#2#3#4#5#6#7{#7{#7#6#5#4#3#2#1}}% -\def\XINT@split@fromright@seven@andend - {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@seven }% +\def\XINT@split@fromright@seven@andend #1\fi {\fi\expandafter + \XINT@split@fromright@checkiftoofar\XINT@split@fromright@seven }% \def\XINT@split@fromright@seven #1#2#3#4#5#6#7#8{#8{#8#7#6#5#4#3#2#1}}% \def\XINT@split@fromright@checkiftoofar #1% {% |