summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xint.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xint.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xint.sty1751
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%
{%