diff options
author | Karl Berry <karl@freefriends.org> | 2013-04-15 22:23:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-04-15 22:23:20 +0000 |
commit | 0639a522410335d1b0ada2c404a8e8b7b6b408c6 (patch) | |
tree | 7981f8203865d9194a39b3a6c9ac7d2a90f61094 /Master/texmf-dist/tex | |
parent | f9fe08d0b133db79c326f1cc09c1ef16debf16c5 (diff) |
xint (15apr13)
git-svn-id: svn://tug.org/texlive/trunk@29954 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xint.sty | 1751 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintfrac.sty | 1107 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintgcd.sty | 62 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintseries.sty | 349 |
4 files changed, 2340 insertions, 929 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% {% diff --git a/Master/texmf-dist/tex/generic/xint/xintfrac.sty b/Master/texmf-dist/tex/generic/xint/xintfrac.sty new file mode 100644 index 00000000000..895d408430b --- /dev/null +++ b/Master/texmf-dist/tex/generic/xint/xintfrac.sty @@ -0,0 +1,1107 @@ +%% +%% This is file `xintfrac.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xint.dtx (with options: `xintfrac') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from xintfrac.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file xint.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%%---------------------------------------------------------------- +%% The xint bundle (version 1.03 of April 14, 2013) +%% xintfrac: Expandable operations on fractions +%% Copyright (C) 2013 by Jean-Francois Burnol +%%---------------------------------------------------------------- +%% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \catcode35=6 % # + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \def\space { }% + \let\z\endgroup + \expandafter\let\expandafter\x\csname ver@xintfrac.sty\endcsname + \expandafter\let\expandafter\w\csname ver@xint.sty\endcsname + \expandafter + \ifx\csname PackageInfo\endcsname\relax + \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% + \else + \def\y#1#2{\PackageInfo{#1}{#2}}% + \fi + \expandafter + \ifx\csname numexpr\endcsname\relax + \y{xintfrac}{\numexpr not available, aborting input}% + \aftergroup\endinput + \else + \ifx\x\relax % plain-TeX, first loading of xintfrac.sty + \ifx\w\relax % but xint.sty not yet loaded. + \y{xintfrac}{Package xint is required}% + \y{xintfrac}{Will try \string\input\space xint.sty}% + \def\z{\endgroup\input xint.sty\relax}% + \fi + \else + \def\empty {}% + \ifx\x\empty % LaTeX, first loading, + % variable is initialized, but \ProvidesPackage not yet seen + \ifx\w\relax % xint.sty not yet loaded. + \y{xintfrac}{Package xint is required}% + \y{xintfrac}{Will try \string\RequirePackage{xint}}% + \def\z{\endgroup\RequirePackage{xint}}% + \fi + \else + \y{xintfrac}{I was already loaded, aborting input}% + \aftergroup\endinput + \fi + \fi + \fi +\z% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \catcode35=6 % # + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \expandafter + \ifx\csname PackageInfo\endcsname\relax + \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% + \else + \def\y#1#2{\PackageInfo{#1}{#2}}% + \fi + \def\empty {}% + \expandafter\let\expandafter\w\csname ver@xint.sty\endcsname + \ifx\w\relax % Plain TeX, user gave a file name at the prompt + \y{xintfrac}{Loading of package xint failed, aborting input}% + \aftergroup\endinput + \fi + \ifx\w\empty % LaTeX, user gave a file name at the prompt + \y{xintfrac}{Loading of package xint failed, aborting input}% + \aftergroup\endinput + \fi +\endgroup% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x + {% + \endgroup + \edef\XINT@frac@restorecatcodes@endinput + {% + \catcode94=\the\catcode94 % ^ + \catcode93=\the\catcode93 % ] + \catcode91=\the\catcode91 % [ + \catcode47=\the\catcode47 % / + \catcode41=\the\catcode41 % ) + \catcode40=\the\catcode40 % ( + \catcode42=\the\catcode42 % * + \catcode43=\the\catcode43 % + + \catcode62=\the\catcode62 % > + \catcode60=\the\catcode60 % < + \catcode58=\the\catcode58 % : + \catcode46=\the\catcode46 % . + \catcode45=\the\catcode45 % - + \catcode44=\the\catcode44 % , + \catcode35=\the\catcode35 % # + \catcode64=\the\catcode64 % @ + \catcode125=\the\catcode125 % } + \catcode123=\the\catcode123 % { + \endlinechar=\the\endlinechar + \catcode13=\the\catcode13 % ^^M + \catcode32=\the\catcode32 % + \catcode61=\the\catcode61 % = + \noexpand\endinput + }% + \XINT@setcatcodes + \catcode91=12 % [ + \catcode93=12 % ] + \catcode94=7 % ^ + }% +\x +\begingroup + \catcode58=12 % : + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \def\x#1#2#3[#4]{\endgroup + \immediate\write-1{Package: #3 #4}% + \xdef#1{#4}% + }% + \else + \def\x#1#2[#3]{\endgroup + #2[{#3}]% + \ifx#1\@undefined + \xdef#1{#3}% + \fi + \ifx#1\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@xintfrac.sty\endcsname +\ProvidesPackage{xintfrac}% + [2013/04/14 v1.03 Expandable operations on fractions (jfB)]% +\def\xintLen {\romannumeral0\xintlen }% +\def\xintlen #1% +{% + \expandafter\XINT@flen\romannumeral0\XINT@infrac {#1}% +}% +\def\XINT@flen #1#2#3% +{% + \expandafter\space + \the\numexpr -1+\XINT@Abs {#1}+\XINT@Len {#2}+\XINT@Len {#3}\relax +}% +\def\XINT@outfrac #1#2#3% +{% + \ifcase\XINT@Sgn{#3} + \expandafter \XINT@outfrac@divisionbyzero + \or + \expandafter \XINT@outfrac@P + \else + \expandafter \XINT@outfrac@N + \fi + {#2}{#3}[#1]% +}% +\def\XINT@outfrac@divisionbyzero #1#2% + {\xintError:DivisionByZero\space #1/0}% +\def\XINT@outfrac@P #1#2% +{% + \ifcase\XINT@Sgn{#1} + \expandafter\XINT@outfrac@Zero + \fi + \space #1/#2% +}% +\def\XINT@outfrac@Zero #1[#2]{ 0[0]}% +\def\XINT@outfrac@N #1#2% +{% + \expandafter\XINT@outfrac@N@a\expandafter + {\romannumeral0\XINT@opp #2}{\romannumeral0\XINT@opp #1}% +}% +\def\XINT@outfrac@N@a #1#2% +{% + \expandafter\XINT@outfrac@P\expandafter {#2}{#1}% +}% +\def\xintNumerator {\romannumeral0\xintnumerator }% +\def\xintnumerator +{% + \expandafter\XINT@numer\romannumeral0\XINT@infrac +}% +\def\XINT@numer #1% +{% + \ifcase\XINT@Sgn {#1} + \expandafter\XINT@numer@B + \or + \expandafter\XINT@numer@A + \else + \expandafter\XINT@numer@B + \fi + {#1}% +}% +\def\XINT@numer@A #1#2#3{\xint@dsh {#2}{-#1}}% +\def\XINT@numer@B #1#2#3{ #2}% +\def\xintDenominator {\romannumeral0\xintdenominator }% +\def\xintdenominator +{% + \expandafter\XINT@denom\romannumeral0\XINT@infrac +}% +\def\XINT@denom #1% +{% + \ifcase\XINT@Sgn {#1} + \expandafter\XINT@denom@B + \or + \expandafter\XINT@denom@A + \else + \expandafter\XINT@denom@B + \fi + {#1}% +}% +\def\XINT@denom@A #1#2#3{ #3}% +\def\XINT@denom@B #1#2#3{\xint@dsh {#3}{#1}}% +\def\xintFrac {\romannumeral0\xintfrac }% +\def\xintfrac #1% +{% + \expandafter\XINT@@frac@A\romannumeral0\XINT@infrac {#1}% +}% +\def\XINT@@frac@A #1{\XINT@@frac@B #1\Z }% +\def\XINT@@frac@B #1#2\Z +{% + \xint@zero #1\XINT@@frac@C 0\XINT@@frac@D {10^{#1#2}}% +}% +\def\XINT@@frac@C #1#2#3#4#5% +{% + \ifcase\XINT@isOne {#5} + \or \xint@afterfi {\expandafter\xint@firstoftwo@andstop\xint@gobble@two }% + \fi + \space + \frac {#4}{#5}% +}% +\def\XINT@@frac@D #1#2#3% +{% + \ifcase\XINT@isOne {#3} + \or \XINT@@frac@E + \fi + \space + \frac {#2}{#3}#1% +}% +\def\XINT@@frac@E \fi #1#2#3#4{\fi \space #3\cdot }% +\def\xintFwOver {\romannumeral0\xintfwover }% +\def\xintfwover #1% +{% + \expandafter\XINT@fwover@A\romannumeral0\XINT@infrac {#1}% +}% +\def\XINT@fwover@A #1{\XINT@fwover@B #1\Z }% +\def\XINT@fwover@B #1#2\Z +{% + \xint@zero #1\XINT@fwover@C 0\XINT@fwover@D {10^{#1#2}}% +}% +\def\XINT@fwover@C #1#2#3#4#5% +{% + \ifcase\XINT@isOne {#5} + \xint@afterfi { {#4\over #5}}% + \or + \xint@afterfi { #4\cdot }% + \fi +}% +\def\XINT@fwover@D #1#2#3% +{% + \ifcase\XINT@isOne {#3} + \xint@afterfi { {#2\over #3}}% + \or + \xint@afterfi { #2\cdot }% + \fi + #1% +}% +\def\xintSum {\romannumeral0\xintsum }% +\def\xintsum #1{\xintsumexpr #1\relax }% +\def\xintSumExpr {\romannumeral0\xintsumexpr }% +\def\xintsumexpr {\expandafter\expandafter\expandafter\XINT@fsumexpr }% +\def\XINT@fsumexpr {\XINT@fsum@loop {0}}% +\def\XINT@fsum@loop #1#2% +{% + \xint@relax #2\XINT@fsum@finished\relax + \expandafter\XINT@fsum@loop\expandafter + {\romannumeral0\xintadd {#1}{#2}}% +}% +\def\XINT@fsum@finished #1#2#3#4#5% +{% + \XINT@fsum@finished@ #5% +}% +\def\XINT@fsum@finished@ #1#2#3#4#5{ #4}% +\def\xintPrd {\romannumeral0\xintprd }% +\def\xintprd #1{\xintproductexpr #1\relax }% +\def\xintProductExpr {\romannumeral0\xintproductexpr }% +\def\xintproductexpr{\expandafter\expandafter\expandafter\XINT@fproductexpr }% +\def\XINT@fproductexpr {\XINT@fprod@loop {1}}% +\def\XINT@fprod@loop #1#2% +{% + \xint@relax #2\XINT@fprod@finished\relax + \expandafter\XINT@fprod@loop\expandafter + {\romannumeral0\xintmul {#2}{#1}}% +}% +\def\XINT@fprod@finished #1#2#3#4#5% +{% + \XINT@fprod@finished@ #5% +}% +\def\XINT@fprod@finished@ #1#2#3#4#5{ #5}% +\def\XINT@inFrac {\romannumeral0\XINT@infrac }% +\def\XINT@infrac #1% +{% + \expandafter\expandafter\expandafter + \XINT@infrac@ #1[\W]\Z\T +}% +\def\XINT@infrac@ #1[#2#3]#4\Z +{% + \xint@UDwfork + #2\dummy \XINT@infrac@A + \W\dummy \XINT@infrac@B + \xint@UDkrof + #1[#2#3]#4% +}% +\def\XINT@infrac@A #1[\W]\T +{% + \XINT@frac #1/\W\Z +}% +\def\XINT@infrac@B #1% +{% + \xint@zero #1\XINT@infrac@Zero0\XINT@infrac@BB #1% +}% +\def\XINT@infrac@BB #1[\W]\T {\XINT@infrac@BC #1/\W\Z }% +\def\XINT@infrac@BC #1/#2#3\Z +{% + \xint@UDwfork + #2\dummy \XINT@infrac@BCa + \W\dummy {\expandafter\expandafter\expandafter\XINT@infrac@BCb #2}% + \xint@UDkrof + #3\Z #1\Z +}% +\def\XINT@infrac@BCa \Z #1[#2]#3\Z { {#2}{#1}{1}}% +\def\XINT@infrac@BCb #1[#2]/\W\Z #3\Z { {#2}{#3}{#1}}% +\def\XINT@infrac@Zero #1\T { {0}{0}{1}}% +\def\XINT@frac #1/#2#3\Z +{% + \xint@UDwfork + #2\dummy \XINT@frac@A + \W\dummy {\expandafter\expandafter\expandafter\XINT@frac@B #2}% + \xint@UDkrof + #3.\W\Z #1.\W\Z +}% +\def\XINT@frac@B #1.#2#3\Z +{% + \xint@UDwfork + #2\dummy \XINT@frac@Ba + \W\dummy {\XINT@frac@Bb #2}% + \xint@UDkrof + #3\Z #1\Z +}% +\def\XINT@frac@Bb #1/\W.\W\Z #2\Z +{% + \expandafter \XINT@frac@C \expandafter + {\romannumeral0\XINT@length {#1}}{#2#1}% +}% +\def\XINT@frac@Ba \Z #1/\W\Z {\XINT@frac@C {0}{#1}}% +\def\XINT@frac@A .\W\Z {\XINT@frac@C {0}{1}}% +\def\XINT@frac@C #1#2#3.#4#5\Z +{% + \xint@UDwfork + #4\dummy \XINT@frac@Ca + \W\dummy {\XINT@frac@Cb #4}% + \xint@UDkrof + #5\Z #3\Z {#1}{#2}% +}% +\def\XINT@frac@Ca \Z #1\Z {\XINT@frac@D {0}{#1}}% +\def\XINT@frac@Cb #1.\W\Z #2\Z +{% + \expandafter \XINT@frac@D \expandafter + {\romannumeral0\XINT@length {#1}}{#2#1}% +}% +\def\XINT@frac@D #1#2#3#4% +{% + \expandafter \XINT@frac@E \expandafter + {\the\numexpr -#1+#3\expandafter}\expandafter + {\romannumeral0\XINT@num@loop #2\R\R\R\R\R\R\R\R\Z }% + {\romannumeral0\XINT@num@loop #4\R\R\R\R\R\R\R\R\Z }% +}% +\def\XINT@frac@E #1#2#3% +{% + \expandafter \XINT@frac@F #3\Z {#2}{#1}% +}% +\def\XINT@frac@F #1% +{% + \xint@UDzerominusfork + #1-\dummy \XINT@frac@Gdivisionbyzero + 0#1\dummy \XINT@frac@Gneg + 0-\dummy {\XINT@frac@Gpos #1}% + \xint@UDkrof +}% +\def\XINT@frac@Gdivisionbyzero #1\Z #2#3% +{% + \xintError:DivisionByZero + \expandafter\space {0}{#2}{0}% +}% +\def\XINT@frac@Gneg #1\Z #2#3% +{% + \expandafter\XINT@frac@H \expandafter + {\romannumeral0\XINT@opp #2}{#3}{#1}% +}% +\def\XINT@frac@H #1#2{ {#2}{#1}}% +\def\XINT@frac@Gpos #1\Z #2#3{ {#3}{#2}{#1}}% +\def\XINT@factortens #1% +{% + \expandafter\XINT@cuz@cnt@loop\expandafter + {\expandafter}\romannumeral0\XINT@rord@main {}#1% + \xint@UNDEF + \xint@undef\xint@undef\xint@undef\xint@undef + \xint@undef\xint@undef\xint@undef\xint@undef + \xint@UNDEF + \R\R\R\R\R\R\R\R\Z +}% +\def\XINT@cuz@cnt #1% +{% + \XINT@cuz@cnt@loop {}#1\R\R\R\R\R\R\R\R\Z +}% +\def\XINT@cuz@cnt@loop #1#2#3#4#5#6#7#8#9% +{% + \xint@r #9\XINT@cuz@cnt@toofara \R + \expandafter\XINT@cuz@cnt@checka\expandafter + {\the\numexpr #1+8\relax}{#2#3#4#5#6#7#8#9}% +}% +\def\XINT@cuz@cnt@toofara #1#2#3#4#5#6% +{% + \XINT@cuz@cnt@toofarb {#5}#6% +}% +\def\XINT@cuz@cnt@toofarb #1#2\Z + {\XINT@cuz@cnt@toofarc #2\Z {#1}}% +\def\XINT@cuz@cnt@toofarc #1#2#3#4#5#6#7#8% +{% + \xint@r #2\XINT@cuz@cnt@toofard 7% + #3\XINT@cuz@cnt@toofard 6% + #4\XINT@cuz@cnt@toofard 5% + #5\XINT@cuz@cnt@toofard 4% + #6\XINT@cuz@cnt@toofard 3% + #7\XINT@cuz@cnt@toofard 2% + #8\XINT@cuz@cnt@toofard 1% + \Z #1#2#3#4#5#6#7#8% +}% +\def\XINT@cuz@cnt@toofard #1#2\Z #3\R #4\Z #5% +{% + \expandafter\XINT@cuz@cnt@toofare + \the\numexpr #3\relax \R\R\R\R\R\R\R\R\Z + {\the\numexpr #5-#1\relax}\R\Z +}% +\def\XINT@cuz@cnt@toofare #1#2#3#4#5#6#7#8% +{% + \xint@r #2\XINT@cuz@cnt@stopc 1% + #3\XINT@cuz@cnt@stopc 2% + #4\XINT@cuz@cnt@stopc 3% + #5\XINT@cuz@cnt@stopc 4% + #6\XINT@cuz@cnt@stopc 5% + #7\XINT@cuz@cnt@stopc 6% + #8\XINT@cuz@cnt@stopc 7% + \Z #1#2#3#4#5#6#7#8% +}% +\def\XINT@cuz@cnt@checka #1#2% +{% + \expandafter\XINT@cuz@cnt@checkb\the\numexpr #2\relax \Z {#1}% +}% +\def\XINT@cuz@cnt@checkb #1% +{% + \xint@zero #1\expandafter\XINT@cuz@cnt@loop\xint@z + 0\XINT@cuz@cnt@stopa #1% +}% +\def\XINT@cuz@cnt@stopa #1\Z +{% + \XINT@cuz@cnt@stopb #1\R\R\R\R\R\R\R\R\Z % +}% +\def\XINT@cuz@cnt@stopb #1#2#3#4#5#6#7#8#9% +{% + \xint@r #2\XINT@cuz@cnt@stopc 1% + #3\XINT@cuz@cnt@stopc 2% + #4\XINT@cuz@cnt@stopc 3% + #5\XINT@cuz@cnt@stopc 4% + #6\XINT@cuz@cnt@stopc 5% + #7\XINT@cuz@cnt@stopc 6% + #8\XINT@cuz@cnt@stopc 7% + #9\XINT@cuz@cnt@stopc 8% + \Z #1#2#3#4#5#6#7#8#9% +}% +\def\XINT@cuz@cnt@stopc #1#2\Z #3\R #4\Z #5% +{% + \expandafter\XINT@cuz@cnt@stopd\expandafter + {\the\numexpr #5-#1\relax}#3% +}% +\def\XINT@cuz@cnt@stopd #1#2\R #3\Z +{% + \expandafter\space\expandafter + {\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\xintREZ {\romannumeral0\xintrez }% +\def\xintrez +{% + \expandafter\XINT@rez@A\romannumeral0\XINT@infrac +}% +\def\XINT@rez@A #1#2% +{% + \XINT@rez@AB #2\Z {#1}% +}% +\def\XINT@rez@AB #1% +{% + \xint@UDzerominusfork + #1-\dummy \XINT@rez@zero + 0#1\dummy \XINT@rez@neg + 0-\dummy {\XINT@rez@B #1}% + \xint@UDkrof +}% +\def\XINT@rez@zero #1\Z #2#3{ 0/1[0]}% +\def\XINT@rez@neg +{\expandafter\space\expandafter-\romannumeral0\XINT@rez@B }% +\def\XINT@rez@B #1\Z +{% + \expandafter\XINT@rez@C\romannumeral0\XINT@factortens {#1}% +}% +\def\XINT@rez@C #1#2#3#4% +{% + \expandafter\XINT@rez@D\romannumeral0\XINT@factortens {#4}{#3}{#2}{#1}% +}% +\def\XINT@rez@D #1#2#3#4#5% +{% + \expandafter\XINT@rez@E\expandafter + {\the\numexpr #3+#4-#2}{#1}{#5}% +}% +\def\XINT@rez@E #1#2#3{ #3/#2[#1]}% +\def\XINT@@bts #1#2#3% +{% + \ifcase\XINT@isOne {#2} + \xint@afterfi {#3#1/#2}% + \or + \xint@afterfi {#3#1}% + \fi +}% +\def\xintIrr {\romannumeral0\xintirr }% +\def\xintirr +{% + \expandafter\XINT@@bts + \romannumeral0\expandafter\XINT@irr + \romannumeral0\XINT@infrac +}% +\def\XINT@irr #1% +{% + \ifcase\XINT@Sgn {#1} + \expandafter\XINT@irr@B + \or + \expandafter\XINT@irr@A + \else + \expandafter\XINT@irr@B + \fi + {#1}% +}% +\def\XINT@irr@A #1#2% +{% + \expandafter \XINT@irr@AC \expandafter + {\romannumeral0\xint@dsh {#2}{-#1}}% +}% +\def\XINT@irr@AC #1#2{\XINT@irr@C #2\Z #1\Z }% +\def\XINT@irr@B #1#2#3% +{% + \expandafter \XINT@irr@C \romannumeral0\xint@dsh {#3}{#1}\Z #2\Z +}% +\def\XINT@irr@C #1#2\Z #3#4\Z +{% + \xint@UDsignsfork + #1#3\dummy \XINT@irr@minusminus + #1-\dummy \XINT@irr@minusplus + #3-\dummy \XINT@irr@plusminus + --\dummy \XINT@irr@plusplus + \xint@UDkrof + {#4}{#2}#3#1% +}% +\def\XINT@irr@minusminus #1#2#3#4{\XINT@irr@D #1\Z #2\Z \space}% +\def\XINT@irr@minusplus #1#2#3#4{\XINT@irr@D #3#1\Z #2\Z \XINT@opp}% +\def\XINT@irr@plusminus #1#2#3#4{\XINT@irr@D #1\Z #4#2\Z \XINT@opp}% +\def\XINT@irr@plusplus #1#2#3#4{\XINT@irr@D #3#1\Z #4#2\Z \space}% +\def\XINT@irr@D #1#2\Z #3#4\Z +{% + \xint@UDzerosfork + #3#1\dummy \XINT@irr@indeterminate + #30\dummy \XINT@irr@divisionbyzero + #10\dummy \XINT@irr@zero + 00\dummy \XINT@irr@nonzero@checkifone + \xint@UDkrof + {#3#4}{#1#2}{#3#4}{#1#2}% +}% +\def\XINT@irr@indeterminate #1#2#3#4{\expandafter\xintError:ZeroOverZero + \space 00}% +\def\XINT@irr@divisionbyzero #1#2#3#4{\expandafter\xintError:DivisionByZero + \space {#2}0}% +\def\XINT@irr@zero #1#2#3#4{ 0/1}% +\def\XINT@irr@nonzero@checkifone #1% +{% + \ifcase\XINT@isOne {#1} + \xint@afterfi {\XINT@irr@loop@a {#1}}% + \or + \expandafter \XINT@irr@denomisone + \fi +}% +\def\XINT@irr@denomisone #1#2#3{ {#1}1}% +\def\XINT@irr@loop@a #1#2% +{% + \expandafter\XINT@irr@loop@d + \romannumeral0\XINT@div@prepare {#1}{#2}{#1}% +}% +\def\XINT@irr@loop@d #1#2#3% +{% + \XINT@irr@loop@e #2\Z {#3}% +}% +\def\XINT@irr@loop@e #1#2\Z +{% + \xint@zero #1\xint@irr@loop@exit0\XINT@irr@loop@a {#1#2}% +}% +\def\xint@irr@loop@exit0\XINT@irr@loop@a #1#2#3#4% +{% + \expandafter\XINT@irr@loop@exitb\expandafter + {\romannumeral0\xintquo {#3}{#2}}% + {\romannumeral0\xintquo {#4}{#2}}% +}% +\def\XINT@irr@loop@exitb #1#2% +{% + \expandafter\space\expandafter {#2}{#1}% +}% +\def\xintJrr {\romannumeral0\xintjrr }% +\def\xintjrr +{% + \expandafter\XINT@@bts + \romannumeral0\expandafter\XINT@jrr@start + \romannumeral0\xintrez +}% +\def\XINT@jrr@start #1/#2[#3]% +{% + \ifcase\XINT@Sgn {#3} + \expandafter\XINT@jrr@B + \or + \expandafter\XINT@jrr@A + \else + \expandafter\XINT@jrr@B + \fi + {#3}{#1}{#2}% +}% +\def\XINT@jrr@A #1#2% +{% + \expandafter \XINT@jrr@AC \expandafter + {\romannumeral0\xint@dsh {#2}{-#1}}% +}% +\def\XINT@jrr@AC #1#2{\XINT@jrr@C #2\Z #1\Z }% +\def\XINT@jrr@B #1#2#3% +{% + \expandafter \XINT@jrr@C \romannumeral0\xint@dsh {#3}{#1}\Z #2\Z +}% +\def\XINT@jrr@C #1#2\Z #3#4\Z +{% + \xint@UDsignsfork + #1#3\dummy \XINT@jrr@minusminus + #1-\dummy \XINT@jrr@minusplus + #3-\dummy \XINT@jrr@plusminus + --\dummy \XINT@jrr@plusplus + \xint@UDkrof + {#4}{#2}#3#1% +}% +\def\XINT@jrr@minusminus #1#2#3#4{\XINT@jrr@D #1\Z #2\Z \space }% +\def\XINT@jrr@minusplus #1#2#3#4{\XINT@jrr@D #3#1\Z #2\Z \XINT@opp }% +\def\XINT@jrr@plusminus #1#2#3#4{\XINT@jrr@D #1\Z #4#2\Z \XINT@opp }% +\def\XINT@jrr@plusplus #1#2#3#4{\XINT@jrr@D #3#1\Z #4#2\Z \space }% +\def\XINT@jrr@D #1#2\Z #3#4\Z +{% + \xint@UDzerosfork + #3#1\dummy \XINT@jrr@indeterminate + #30\dummy \XINT@jrr@divisionbyzero + #10\dummy \XINT@jrr@zero + 00\dummy \XINT@jrr@nonzero@checkifone + \xint@UDkrof + {#3#4}{#1#2}1001% +}% +\def\XINT@jrr@indeterminate #1#2#3#4#5#6{\expandafter\xintError:ZeroOverZero + \space 00}% +\def\XINT@jrr@divisionbyzero #1#2#3#4#5#6{\expandafter\xintError:DivisionByZero + \space {#2}0}% +\def\XINT@jrr@zero #1#2#3#4#5#6{ 0/1}% +\def\XINT@jrr@nonzero@checkifone #1% +{% + \ifcase\XINT@isOne {#1} + \xint@afterfi {\XINT@jrr@loop@a {#1}}% + \or + \expandafter \XINT@jrr@denomisone + \fi +}% +\def\XINT@jrr@denomisone #1#2#3#4#5{ {#1}1}% +\def\XINT@jrr@loop@a #1#2% +{% + \expandafter\XINT@jrr@loop@b + \romannumeral0\XINT@div@prepare {#1}{#2}{#1}% +}% +\def\XINT@jrr@loop@b #1#2#3#4#5#6#7% +{% + \expandafter \XINT@jrr@loop@c \expandafter + {\romannumeral0\xintiadd{\XINT@Mul{#4}{#1}}{#6}}% + {\romannumeral0\xintiadd{\XINT@Mul{#5}{#1}}{#7}}% + {#2}{#3}{#4}{#5}% +}% +\def\XINT@jrr@loop@c #1#2% +{% + \expandafter \XINT@jrr@loop@d \expandafter + {#2}{#1}% +}% +\def\XINT@jrr@loop@d #1#2#3#4% +{% + \XINT@jrr@loop@e #3\Z {#4}{#2}{#1}% +}% +\def\XINT@jrr@loop@e #1#2\Z +{% + \xint@zero #1\xint@jrr@loop@exit0\XINT@jrr@loop@a {#1#2}% +}% +\def\xint@jrr@loop@exit0\XINT@jrr@loop@a #1#2#3#4#5#6% +{% + \space {#3}{#4}% +}% +\def\xintTrunc {\romannumeral0\xinttrunc }% +\def\xintiTrunc {\romannumeral0\xintitrunc }% +\def\xinttrunc #1% +{% + \expandafter\expandafter\expandafter + \xint@trunc + \expandafter\expandafter\expandafter + {#1}% +}% +\def\xint@trunc #1#2% +{% + \expandafter\XINT@trunc@G + \romannumeral0\expandafter\XINT@trunc@A + \romannumeral0\XINT@infrac {#2}{#1}{#1}% +}% +\def\xintitrunc #1% +{% + \expandafter\expandafter\expandafter + \xint@itrunc + \expandafter\expandafter\expandafter + {#1}% +}% +\def\xint@itrunc #1#2% +{% + \expandafter\XINT@itrunc@G + \romannumeral0\expandafter\XINT@trunc@A + \romannumeral0\XINT@infrac {#2}{#1}{#1}% +}% +\def\XINT@trunc@A #1#2#3#4% +{% + \expandafter\XINT@trunc@checkifzero + \expandafter{\the\numexpr #1+#4\relax}#2\Z {#3}% +}% +\def\XINT@trunc@checkifzero #1#2#3\Z +{% + \xint@zero #2\XINT@trunc@iszero0\XINT@trunc@B {#1}{#2#3}% +}% +\def\XINT@trunc@iszero #1#2#3#4#5{ 0\Z 0}% +\def\XINT@trunc@B #1% +{% + \ifcase\XINT@Sgn {#1} + \expandafter\XINT@trunc@D + \or + \expandafter\XINT@trunc@D + \else + \expandafter\XINT@trunc@C + \fi + {#1}% +}% +\def\XINT@trunc@C #1#2#3% +{% + \expandafter \XINT@trunc@E + \romannumeral0\xint@dsh {#3}{#1}\Z #2\Z +}% +\def\XINT@trunc@D #1#2% +{% + \expandafter \XINT@trunc@DE \expandafter + {\romannumeral0\xint@dsh {#2}{-#1}}% +}% +\def\XINT@trunc@DE #1#2{\XINT@trunc@E #2\Z #1\Z }% +\def\XINT@trunc@E #1#2\Z #3#4\Z +{% + \xint@UDsignsfork + #1#3\dummy \XINT@trunc@minusminus + #1-\dummy {\XINT@trunc@minusplus #3}% + #3-\dummy {\XINT@trunc@plusminus #1}% + --\dummy {\XINT@trunc@plusplus #3#1}% + \xint@UDkrof + {#4}{#2}% +}% +\def\XINT@trunc@minusminus #1#2{\xintquo {#1}{#2}\Z \space}% +\def\XINT@trunc@minusplus #1#2#3{\xintquo {#1#2}{#3}\Z \xint@minus@andstop}% +\def\XINT@trunc@plusminus #1#2#3{\xintquo {#2}{#1#3}\Z \xint@minus@andstop}% +\def\XINT@trunc@plusplus #1#2#3#4{\xintquo {#1#3}{#2#4}\Z \space}% +\def\XINT@itrunc@G #1\Z #2#3% +{% + \xint@zero #2\XINT@trunc@zero 0\xint@firstoftwo {#2#1}0% +}% +\def\XINT@trunc@G #1\Z #2#3% +{% + \xint@zero #2\XINT@trunc@zero 0% + \expandafter\XINT@trunc@H\expandafter + {\the\numexpr\romannumeral0\XINT@length {#1}-#3\relax}{#3}{#1}#2% +}% +\def\XINT@trunc@zero 0#10{ 0}% +\def\XINT@trunc@H #1#2% +{% + \ifnum #1 > 0 + \xint@afterfi {\XINT@trunc@Ha {#2}}% + \else + \xint@afterfi {\XINT@trunc@Hb {-#1}}% + \fi +}% +\def\XINT@trunc@Ha +{% + \expandafter\XINT@trunc@Haa\romannumeral0\xintdecsplit +}% +\def\XINT@trunc@Haa #1#2#3% +{% + #3#1.#2% +}% +\def\XINT@trunc@Hb #1#2#3% +{% + \expandafter #3\expandafter0\expandafter.% + \romannumeral0\XINT@dsx@zeroloop {#1}\Z {}#2% +}% +\def\xintMul {\romannumeral0\xintmul }% +\def\xintmul #1% +{% + \expandafter\xint@fmul\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fmul #1#2% + {\expandafter\XINT@fmul@A\romannumeral0\XINT@infrac {#2}#1}% +\def\XINT@fmul@A #1#2#3#4#5#6% +{% + \expandafter\XINT@fmul@B + \expandafter{\the\numexpr #1+#4\expandafter}% + \expandafter{\romannumeral0\xintimul {#6}{#3}}% + {\romannumeral0\xintimul {#5}{#2}}% +}% +\def\XINT@fmul@B #1#2#3% +{% + \expandafter \XINT@fmul@C \expandafter{#3}{#1}{#2}% +}% +\def\XINT@fmul@C #1#2{\XINT@outfrac {#2}{#1}}% +\def\xintSqr {\romannumeral0\xintsqr }% +\def\xintsqr #1% +{% + \expandafter\xint@fsqr\expandafter{\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fsqr #1{\XINT@fmul@A #1#1}% +\def\xintPow {\romannumeral0\xintpow }% +\def\xintpow #1% +{% + \expandafter\xint@fpow\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fpow #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@fpow@fork + #2\Z #1% +}% +\def\XINT@fpow@fork #1#2\Z +{% + \xint@UDzerominusfork + #1-\dummy \XINT@fpow@zero + 0#1\dummy \XINT@fpow@neg + 0-\dummy {\XINT@fpow@pos #1}% + \xint@UDkrof + {#2}% +}% +\def\XINT@fpow@zero #1#2#3#4% +{% + \space 1[0]% +}% +\def\XINT@fpow@pos #1#2#3#4#5% +{% + \expandafter\XINT@fpow@pos@A\expandafter + {\the\numexpr #1#2*#3\expandafter}\expandafter + {\romannumeral0\xintipow {#5}{#1#2}}% + {\romannumeral0\xintipow {#4}{#1#2}}% +}% +\def\XINT@fpow@neg #1#2#3#4% +{% + \expandafter\XINT@fpow@pos@A\expandafter + {\the\numexpr -#1*#2\expandafter}\expandafter + {\romannumeral0\xintipow {#3}{#1}}% + {\romannumeral0\xintipow {#4}{#1}}% +}% +\def\XINT@fpow@pos@A #1#2#3% +{% + \expandafter\XINT@fpow@pos@B\expandafter {#3}{#1}{#2}% +}% +\def\XINT@fpow@pos@B #1#2{\XINT@outfrac {#2}{#1}}% +\def\xintDiv {\romannumeral0\xintdiv }% +\def\xintdiv #1% +{% + \expandafter\xint@fdiv\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fdiv #1#2% + {\expandafter\XINT@fdiv@A\romannumeral0\XINT@infrac {#2}#1}% +\def\XINT@fdiv@A #1#2#3#4#5#6% +{% + \expandafter\XINT@fdiv@B + \expandafter{\the\numexpr #4-#1\expandafter}% + \expandafter{\romannumeral0\xintimul {#2}{#6}}% + {\romannumeral0\xintimul {#3}{#5}}% +}% +\def\XINT@fdiv@B #1#2#3% +{% + \expandafter\XINT@fdiv@C + \expandafter{#3}{#1}{#2}% +}% +\def\XINT@fdiv@C #1#2{\XINT@outfrac {#2}{#1}}% +\def\xintAdd {\romannumeral0\xintadd }% +\def\xintadd #1% +{% + \expandafter\xint@fadd\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fadd #1#2% +{\expandafter\XINT@fadd@A\romannumeral0\XINT@infrac{#2}#1}% +\def\XINT@fadd@A #1#2#3#4% +{% + \ifnum #4 > #1 + \xint@afterfi {\XINT@fadd@B {#1}}% + \else + \xint@afterfi {\XINT@fadd@B {#4}}% + \fi + {#1}{#4}{#2}{#3}% +}% +\def\XINT@fadd@B #1#2#3#4#5#6#7% +{% + \expandafter\XINT@fadd@C\expandafter + {\romannumeral0\xintimul {#7}{#5}}% + {\romannumeral0\xintiadd + {\romannumeral0\xintimul {\xintDSH {\the\numexpr -#3+#1\relax}{#6}}{#5}}% + {\romannumeral0\xintimul {#7}{\xintDSH {\the\numexpr -#2+#1\relax}{#4}}}% + }% + {#1}% +}% +\def\XINT@fadd@C #1#2#3% +{% + \expandafter\XINT@fadd@D\expandafter {#2}{#3}{#1}% +}% +\def\XINT@fadd@D #1#2{\XINT@outfrac {#2}{#1}}% +\def\xintSub {\romannumeral0\xintsub }% +\def\xintsub #1% +{% + \expandafter\xint@fsub\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fsub #1#2% + {\expandafter\XINT@fsub@A\romannumeral0\XINT@infrac {#2}#1}% +\def\XINT@fsub@A #1#2#3#4% +{% + \ifnum #4 > #1 + \xint@afterfi {\XINT@fsub@B {#1}}% + \else + \xint@afterfi {\XINT@fsub@B {#4}}% + \fi + {#1}{#4}{#2}{#3}% +}% +\def\XINT@fsub@B #1#2#3#4#5#6#7% +{% + \expandafter\XINT@fsub@C\expandafter + {\romannumeral0\xintimul {#7}{#5}}% + {\romannumeral0\xintisub + {\romannumeral0\xintimul {\xintDSH {\the\numexpr -#3+#1\relax}{#6}}{#5}}% + {\romannumeral0\xintimul {#7}{\xintDSH {\the\numexpr -#2+#1\relax}{#4}}}% + }% + {#1}% +}% +\def\XINT@fsub@C #1#2#3% +{% + \expandafter\XINT@fsub@D\expandafter {#2}{#3}{#1}% +}% +\def\XINT@fsub@D #1#2{\XINT@outfrac {#2}{#1}}% +\def\xintCmp {\romannumeral0\xintcmp }% +\def\xintcmp #1% +{% + \expandafter\xint@fcmp\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fcmp #1#2{\expandafter\XINT@fcmp@A\romannumeral0\XINT@infrac {#2}#1}% +\def\XINT@fcmp@A #1#2#3#4% +{% + \ifnum #4 > #1 + \xint@afterfi {\XINT@fcmp@B {#1}}% + \else + \xint@afterfi {\XINT@fcmp@B {#4}}% + \fi + {#1}{#4}{#2}{#3}% +}% +\def\XINT@fcmp@B #1#2#3#4#5#6#7% +{% + \xinticmp + {\romannumeral0\xintimul {\xintDSH {\the\numexpr -#3+#1\relax}{#6}}{#5}}% + {\romannumeral0\xintimul {#7}{\xintDSH {\the\numexpr -#2+#1\relax}{#4}}}% +}% +\def\xintMax {\romannumeral0\xintmax }% +\def\xintmax #1% +{% + \expandafter\xint@fmax\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fmax #1#2{\expandafter\XINT@outfrac + \romannumeral0\expandafter\XINT@fmax@A + \romannumeral0\XINT@infrac {#2}#1}% +\def\XINT@fmax@A #1#2#3#4#5#6% +{% + \ifnum #4 > #1 + \xint@afterfi {\XINT@fmax@B {#1}}% + \else + \xint@afterfi {\XINT@fmax@B {#4}}% + \fi + {#1}{#4}{#2}{#3}{#5}{#6}{{#4}{#5}{#6}}{{#1}{#2}{#3}}% +}% +\def\XINT@fmax@B #1#2#3#4#5#6#7% +{% + \expandafter\XINT@fmax@C\expandafter + {\romannumeral0\xintimul {\xintDSH {\the\numexpr -#3+#1\relax}{#6}}{#5}}% + {\romannumeral0\xintimul {#7}{\xintDSH {\the\numexpr -#2+#1\relax}{#4}}}% +}% +\def\XINT@fmax@C #1#2% +{% + \expandafter\XINT@max@fork #2\Z #1\Z +}% +\def\xintMin {\romannumeral0\xintmin }% +\def\xintmin #1% +{% + \expandafter\xint@fmin\expandafter {\romannumeral0\XINT@infrac {#1}}% +}% +\def\xint@fmin #1#2{\expandafter\XINT@outfrac + \romannumeral0\expandafter\XINT@fmin@A + \romannumeral0\XINT@infrac {#2}#1}% +\def\XINT@fmin@A #1#2#3#4#5#6% +{% + \ifnum #4 > #1 + \xint@afterfi {\XINT@fmin@B {#1}}% + \else + \xint@afterfi {\XINT@fmin@B {#4}}% + \fi + {#1}{#4}{#2}{#3}{#5}{#6}{{#4}{#5}{#6}}{{#1}{#2}{#3}}% +}% +\def\XINT@fmin@B #1#2#3#4#5#6#7% +{% + \expandafter\XINT@fmin@C\expandafter + {\romannumeral0\xintimul {\xintDSH {\the\numexpr -#3+#1\relax}{#6}}{#5}}% + {\romannumeral0\xintimul {#7}{\xintDSH {\the\numexpr -#2+#1\relax}{#4}}}% +}% +\def\XINT@fmin@C #1#2% +{% + \expandafter\XINT@min@fork #2\Z #1\Z +}% +\def\xintSgn {\romannumeral0\xintsgn }% +\def\xintsgn #1% +{% + \expandafter\xint@fsgn\romannumeral0\XINT@infrac {#1}% +}% +\def\xint@fsgn #1#2#3{\xintisgn {#2}}% +\def\xintOpp {\romannumeral0\xintopp }% +\def\xintopp #1% +{% + \expandafter\xint@fopp\romannumeral0\XINT@infrac {#1}% +}% +\def\xint@fopp #1#2{\expandafter\XINT@outfrac\expandafter + {\the\numexpr #1\expandafter}\expandafter + {\romannumeral0\XINT@opp #2}}% +\def\xintAbs {\romannumeral0\xintabs }% +\def\xintabs #1% +{% + \expandafter\xint@fabs\romannumeral0\XINT@infrac {#1}% +}% +\def\xint@fabs #1#2{\expandafter\XINT@outfrac\expandafter + {\the\numexpr #1\expandafter}\expandafter + {\romannumeral0\XINT@abs #2}}% +\XINT@frac@restorecatcodes@endinput% +\endinput +%% +%% End of file `xintfrac.sty'. diff --git a/Master/texmf-dist/tex/generic/xint/xintgcd.sty b/Master/texmf-dist/tex/generic/xint/xintgcd.sty index a270186f4ed..24bd6ef2109 100644 --- a/Master/texmf-dist/tex/generic/xint/xintgcd.sty +++ b/Master/texmf-dist/tex/generic/xint/xintgcd.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) %% xintgcd: Euclidean algorithm with xint package %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -162,20 +162,18 @@ \fi \expandafter\x\csname ver@xintgcd.sty\endcsname \ProvidesPackage{xintgcd}% - [2013/04/05 v1.02 Euclide algorithm with xint package (jfB)]% + [2013/04/14 v1.03 Euclide algorithm with xint package (jfB)]% \def\xintGCD {\romannumeral0\xintgcd }% \def\xintgcd #1% {% - \expandafter - \XINT@gcd - \expandafter - {\romannumeral0\xintabs {#1}}% + \expandafter \XINT@gcd \expandafter + {\romannumeral0\xintiabs {#1}}% }% \def\XINT@gcd #1#2% {% \expandafter \XINT@gcd@fork - \romannumeral0\xintabs {#2}\Z #1\Z + \romannumeral0\xintiabs {#2}\Z #1\Z }% \def\XINT@gcd@fork #1#2\Z #3#4\Z {% @@ -255,10 +253,8 @@ }% \def\XINT@bezout@mm@post #1#2% {% - \expandafter - \XINT@bezout@mm@postb - \expandafter - {\romannumeral0\xintopp{#2}}{\romannumeral0\xintopp{#1}}% + \expandafter \XINT@bezout@mm@postb \expandafter + {\romannumeral0\xintiopp{#2}}{\romannumeral0\xintiopp{#1}}% }% \def\XINT@bezout@mm@postb #1#2% {% @@ -277,10 +273,8 @@ }% \def\XINT@bezout@mp@post #1#2% {% - \expandafter - \XINT@bezout@mp@postb - \expandafter - {\romannumeral0\xintopp {#2}}{#1}% + \expandafter \XINT@bezout@mp@postb \expandafter + {\romannumeral0\xintiopp {#2}}{#1}% }% \def\XINT@bezout@mp@postb #1#2#3#4#5% {% @@ -293,10 +287,8 @@ }% \def\XINT@bezout@pm@post #1% {% - \expandafter - \XINT@bezout@pm@postb - \expandafter - {\romannumeral0\xintopp{#1}}% + \expandafter \XINT@bezout@pm@postb \expandafter + {\romannumeral0\xintiopp{#1}}% }% \def\XINT@bezout@pm@postb #1#2#3#4#5% {% @@ -319,18 +311,14 @@ }% \def\XINT@bezout@loop@b #1#2#3#4#5#6#7#8% {% - \expandafter - \XINT@bezout@loop@c - \expandafter - {\romannumeral0\xintadd{\XINT@Mul{#5}{#2}}{#7}}% - {\romannumeral0\xintadd{\XINT@Mul{#6}{#2}}{#8}}% + \expandafter \XINT@bezout@loop@c \expandafter + {\romannumeral0\xintiadd{\XINT@Mul{#5}{#2}}{#7}}% + {\romannumeral0\xintiadd{\XINT@Mul{#6}{#2}}{#8}}% {#1}{#3}{#4}{#5}{#6}% }% \def\XINT@bezout@loop@c #1#2% {% - \expandafter - \XINT@bezout@loop@d - \expandafter + \expandafter \XINT@bezout@loop@d \expandafter {#2}{#1}% }% \def\XINT@bezout@loop@d #1#2#3#4#5% @@ -364,16 +352,14 @@ \def\xintEuclideAlgorithm {\romannumeral0\xinteuclidealgorithm }% \def\xinteuclidealgorithm #1% {% - \expandafter - \XINT@euc - \expandafter - {\romannumeral0\xintabs {#1}}% + \expandafter \XINT@euc \expandafter + {\romannumeral0\xintiabs {#1}}% }% \def\XINT@euc #1#2% {% \expandafter \XINT@euc@fork - \romannumeral0\xintabs {#2}\Z #1\Z + \romannumeral0\xintiabs {#2}\Z #1\Z }% \def\XINT@euc@fork #1#2\Z #3#4\Z {% @@ -418,16 +404,14 @@ \def\xintBezoutAlgorithm {\romannumeral0\xintbezoutalgorithm }% \def\xintbezoutalgorithm #1% {% - \expandafter - \XINT@bezalg - \expandafter - {\romannumeral0\xintabs {#1}}% + \expandafter \XINT@bezalg \expandafter + {\romannumeral0\xintiabs {#1}}% }% \def\XINT@bezalg #1#2% {% \expandafter \XINT@bezalg@fork - \romannumeral0\xintabs {#2}\Z #1\Z + \romannumeral0\xintiabs {#2}\Z #1\Z }% \def\XINT@bezalg@fork #1#2\Z #3#4\Z {% @@ -450,8 +434,8 @@ \def\XINT@bezalg@b #1#2#3#4#5#6#7#8% {% \expandafter\XINT@bezalg@c\expandafter - {\romannumeral0\xintadd {\xintMul {#6}{#2}}{#8}}% - {\romannumeral0\xintadd {\xintMul {#5}{#2}}{#7}}% + {\romannumeral0\xintiadd {\xintiMul {#6}{#2}}{#8}}% + {\romannumeral0\xintiadd {\xintiMul {#5}{#2}}{#7}}% {#1}{#2}{#3}{#4}{#5}{#6}% }% \def\XINT@bezalg@c #1#2#3#4#5#6% diff --git a/Master/texmf-dist/tex/generic/xint/xintseries.sty b/Master/texmf-dist/tex/generic/xint/xintseries.sty new file mode 100644 index 00000000000..6cde51e7928 --- /dev/null +++ b/Master/texmf-dist/tex/generic/xint/xintseries.sty @@ -0,0 +1,349 @@ +%% +%% This is file `xintseries.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xint.dtx (with options: `xintseries') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from xintseries.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file xint.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%%---------------------------------------------------------------- +%% The xint bundle (version 1.03 of April 14, 2013) +%% xintseries: Expandable partial sums with xint package +%% Copyright (C) 2013 by Jean-Francois Burnol +%%---------------------------------------------------------------- +%% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \catcode35=6 % # + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \def\space { }% + \let\z\endgroup + \expandafter\let\expandafter\x\csname ver@xintseries.sty\endcsname + \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname + \expandafter + \ifx\csname PackageInfo\endcsname\relax + \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% + \else + \def\y#1#2{\PackageInfo{#1}{#2}}% + \fi + \expandafter + \ifx\csname numexpr\endcsname\relax + \y{xintseries}{\numexpr not available, aborting input}% + \aftergroup\endinput + \else + \ifx\x\relax % plain-TeX, first loading of xintseries.sty + \ifx\w\relax % but xintfrac.sty not yet loaded. + \y{xintseries}{Package xintfrac is required}% + \y{xintseries}{Will try \string\input\space xintfrac.sty}% + \def\z{\endgroup\input xintfrac.sty\relax}% + \fi + \else + \def\empty {}% + \ifx\x\empty % LaTeX, first loading, + % variable is initialized, but \ProvidesPackage not yet seen + \ifx\w\relax % xintfrac.sty not yet loaded. + \y{xintseries}{Package xintfrac is required}% + \y{xintseries}{Will try \string\RequirePackage{xintfrac}}% + \def\z{\endgroup\RequirePackage{xintfrac}}% + \fi + \else + \y{xintseries}{I was already loaded, aborting input}% + \aftergroup\endinput + \fi + \fi + \fi +\z% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \catcode35=6 % # + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \expandafter + \ifx\csname PackageInfo\endcsname\relax + \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% + \else + \def\y#1#2{\PackageInfo{#1}{#2}}% + \fi + \def\empty {}% + \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname + \ifx\w\relax % Plain TeX, user gave a file name at the prompt + \y{xintseries}{Loading of package xintfrac failed, aborting input}% + \aftergroup\endinput + \fi + \ifx\w\empty % LaTeX, user gave a file name at the prompt + \y{xintseries}{Loading of package xintfrac failed, aborting input}% + \aftergroup\endinput + \fi +\endgroup% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x + {% + \endgroup + \edef\XINT@series@restorecatcodes@endinput + {% + \catcode93=\the\catcode93 % ] + \catcode91=\the\catcode91 % [ + \catcode47=\the\catcode47 % / + \catcode41=\the\catcode41 % ) + \catcode40=\the\catcode40 % ( + \catcode42=\the\catcode42 % * + \catcode43=\the\catcode43 % + + \catcode62=\the\catcode62 % > + \catcode60=\the\catcode60 % < + \catcode58=\the\catcode58 % : + \catcode46=\the\catcode46 % . + \catcode45=\the\catcode45 % - + \catcode44=\the\catcode44 % , + \catcode35=\the\catcode35 % # + \catcode64=\the\catcode64 % @ + \catcode125=\the\catcode125 % } + \catcode123=\the\catcode123 % { + \endlinechar=\the\endlinechar + \catcode13=\the\catcode13 % ^^M + \catcode32=\the\catcode32 % + \catcode61=\the\catcode61 % = + \noexpand\endinput + }% + \XINT@setcatcodes + \catcode91=12 % [ + \catcode93=12 % ] + }% +\x +\begingroup + \catcode58=12 % : + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \def\x#1#2#3[#4]{\endgroup + \immediate\write-1{Package: #3 #4}% + \xdef#1{#4}% + }% + \else + \def\x#1#2[#3]{\endgroup + #2[{#3}]% + \ifx#1\@undefined + \xdef#1{#3}% + \fi + \ifx#1\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@xintseries.sty\endcsname +\ProvidesPackage{xintseries}% + [2013/04/14 v1.03 Expandable partial sums with xint package (jfB)]% +\def\xintSeries {\romannumeral0\xintseries }% +\def\xintseries #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@series@i + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@series@i #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@series@ii + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@series@ii #1#2#3% +{% + \ifnum #2<#1 + \xint@afterfi { 0[0]}% + \else + \xint@afterfi {\XINT@series@loop {#1}{0}{#2}{#3}}% + \fi +}% +\def\XINT@series@loop #1#2#3#4% +{% + \ifnum #3>#1 \else \XINT@series@exit \fi + \expandafter\XINT@series@loop\expandafter + {\the\numexpr #1+1\expandafter }\expandafter + {\romannumeral0\xintadd {#2}{#4{#1}}}% + {#3}{#4}% +}% +\def\XINT@series@exit \fi #1#2#3#4#5#6#7#8% +{% + \fi\xint@gobble@two #6% +}% +\def\xintiSeries {\romannumeral0\xintiseries }% +\def\xintiseries #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@iseries@i + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@iseries@i #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@iseries@ii + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@iseries@ii #1#2#3% +{% + \ifnum #2<#1 + \xint@afterfi { 0}% + \else + \xint@afterfi {\XINT@iseries@loop {#1}{0}{#2}{#3}}% + \fi +}% +\def\XINT@iseries@loop #1#2#3#4% +{% + \ifnum #3>#1 \else \XINT@iseries@exit \fi + \expandafter\XINT@iseries@loop\expandafter + {\the\numexpr #1+1\expandafter }\expandafter + {\romannumeral0\xintiadd {#2}{#4{#1}}}% + {#3}{#4}% +}% +\def\XINT@iseries@exit \fi #1#2#3#4#5#6#7#8% +{% + \fi\xint@gobble@two #6% +}% +\def\xintPowerSeries {\romannumeral0\xintpowerseries }% +\def\xintpowerseries #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@powseries@i + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@powseries@i #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@powseries@ii + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@powseries@ii #1#2#3#4% +{% + \ifnum #2<#1 + \xint@afterfi { 0[0]}% + \else + \xint@afterfi + {\expandafter\XINT@powseries@loop@pre\expandafter + {\romannumeral0\xintpow {#4}{#1}}{#1}{#4}{#2}{#3}% + }% + \fi +}% +\def\XINT@powseries@loop@pre #1#2#3#4#5% +{% + \ifnum #4>#2 \else\XINT@powseries@dont@i \fi + \expandafter\XINT@powseries@loop@i\expandafter + {\the\numexpr #2+1\expandafter}\expandafter + {\romannumeral0\xintmul {#5{#2}}{#1}}{#1}{#3}{#4}{#5}% +}% +\def\XINT@powseries@dont@i \fi\expandafter\XINT@powseries@loop@i + {\fi \expandafter\XINT@powseries@dont@ii }% +\def\XINT@powseries@dont@ii #1#2#3#4#5#6{ #2}% +\def\XINT@powseries@loop@i #1#2#3#4#5% +{% + \ifnum #5>#1 \else \XINT@powseries@exit@i \fi + \expandafter\XINT@powseries@loop@ii\expandafter + {\romannumeral0\xintmul {#3}{#4}}{#1}{#4}{#2}{#5}% +}% +\def\XINT@powseries@loop@ii #1#2#3#4#5#6% +{% + \expandafter\XINT@powseries@loop@i\expandafter + {\the\numexpr #2+1\expandafter}\expandafter + {\romannumeral0\xintadd {#4}{\xintMul {#6{#2}}{#1}}}% + {#1}{#3}{#5}{#6}% +}% +\def\XINT@powseries@exit@i\fi \expandafter\XINT@powseries@loop@ii + {\fi \expandafter\XINT@powseries@exit@ii }% +\def\XINT@powseries@exit@ii #1#2#3#4#5#6% + {\xintadd {#4}{\xintMul {#6{#2}}{#1}}}% +\def\xintFxPtPowerSeries {\romannumeral0\xintfxptpowerseries }% +\def\xintfxptpowerseries #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@fppowseries@i + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@fppowseries@i #1#2% +{% + \expandafter\expandafter\expandafter + \XINT@fppowseries@ii + \expandafter\expandafter\expandafter + {#2}{#1}% +}% +\def\XINT@fppowseries@ii #1#2#3#4#5% +{% + \ifnum #2<#1 + \xint@afterfi {\xinttrunc {#5}{0[0]}}% + \else + \xint@afterfi + {\expandafter\XINT@fppowseries@loop@pre\expandafter + {\romannumeral0\xinttrunc {#5}{\xintPow {#4}{#1}}}% + {#1}{#4}{#2}{#3}{#5}% + }% + \fi +}% +\def\XINT@fppowseries@loop@pre #1#2#3#4#5#6% +{% + \ifnum #4>#2 \else\XINT@fppowseries@dont@i \fi + \expandafter\XINT@fppowseries@loop@i\expandafter + {\the\numexpr #2+1\expandafter}\expandafter + {\romannumeral0\xintitrunc {#6}{\xintMul {#5{#2}}{#1}}}% + {#1}{#3}{#4}{#5}{#6}% +}% +\def\XINT@fppowseries@dont@i \fi\expandafter\XINT@fppowseries@loop@i + {\fi \expandafter\XINT@fppowseries@dont@ii }% +\def\XINT@fppowseries@dont@ii #1#2#3#4#5#6#7{\xinttrunc {#7}{#2[-#7]}}% +\def\XINT@fppowseries@loop@i #1#2#3#4#5#6#7% +{% + \ifnum #5>#1 \else \XINT@fppowseries@exit@i \fi + \expandafter\XINT@fppowseries@loop@ii\expandafter + {\romannumeral0\xinttrunc {#7}{\xintMul {#3}{#4}}}% + {#1}{#4}{#2}{#5}{#6}{#7}% +}% +\def\XINT@fppowseries@loop@ii #1#2#3#4#5#6#7% +{% + \expandafter\XINT@fppowseries@loop@i\expandafter + {\the\numexpr #2+1\expandafter}\expandafter + {\romannumeral0\xintiadd {#4}{\xintiTrunc {#7}{\xintMul {#6{#2}}{#1}}}}% + {#1}{#3}{#5}{#6}{#7}% +}% +\def\XINT@fppowseries@exit@i\fi \expandafter\XINT@fppowseries@loop@ii + {\fi \expandafter\XINT@fppowseries@exit@ii }% +\def\XINT@fppowseries@exit@ii #1#2#3#4#5#6#7% + {\xinttrunc {#7}% + {\xintiAdd {#4}{\xintiTrunc {#7}{\xintMul {#6{#2}}{#1}}}[-#7]}}% +\XINT@series@restorecatcodes@endinput% +\endinput +%% +%% End of file `xintseries.sty'. |