diff options
author | Karl Berry <karl@freefriends.org> | 2013-05-08 22:13:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-05-08 22:13:20 +0000 |
commit | 577a323e68bf1ee8b7c0290a16160992978bbd42 (patch) | |
tree | d06c68d5398f9c9d9096fb363898adb2efa3524c /Master/texmf-dist/tex/generic/xint/xint.sty | |
parent | 441fd17da36fd7b4b30c65a07abaa9a589dc9c01 (diff) |
xint (8may13)
git-svn-id: svn://tug.org/texlive/trunk@30337 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xint.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xint.sty | 1152 |
1 files changed, 530 insertions, 622 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty index d630061d80b..ffc14c9d4e0 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.05a of May 2nd, 2013) +%% The xint bundle (version 1.06 of May 7th, 2013) %% xint: Expandable operations on long numbers %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -66,6 +66,7 @@ \endgroup \edef\XINT@restorecatcodes@endinput {% + \catcode96=\the\catcode96 % ` \catcode47=\the\catcode47 % / \catcode41=\the\catcode41 % ) \catcode40=\the\catcode40 % ( @@ -108,6 +109,7 @@ \catcode40=12 % ( \catcode41=12 % ) \catcode47=12 % / + \catcode96=12 % ` }% \XINT@setcatcodes }% @@ -134,23 +136,22 @@ \fi \expandafter\x\csname ver@xint.sty\endcsname \ProvidesPackage{xint}% - [2013/05/02 v1.05a Expandable operations on long numbers (jfB)]% -\def\xint@gobble #1{}% -\def\xint@gobble@one #1{}% -\def\xint@gobble@two #1#2{}% -\def\xint@gobble@three #1#2#3{}% -\def\xint@gobble@four #1#2#3#4{}% -\def\xint@gobble@five #1#2#3#4#5{}% -\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{}% + [2013/05/07 v1.06 Expandable operations on long numbers (jfB)]% +\def\xint@gobble #1{}% +\def\xint@gobble@ {}% +\def\xint@gobble@i #1{}% +\def\xint@gobble@ii #1#2{}% +\def\xint@gobble@iii #1#2#3{}% +\def\xint@gobble@iv #1#2#3#4{}% +\def\xint@gobble@v #1#2#3#4#5{}% +\def\xint@gobble@vi #1#2#3#4#5#6{}% +\def\xint@gobble@vii #1#2#3#4#5#6#7{}% +\def\xint@gobble@viii #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 {}% @@ -172,10 +173,7 @@ \def\xintRev {\romannumeral0\xintrev }% \def\xintrev #1% {% - \expandafter\expandafter\expandafter - \xint@rev - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@rev\expandafter {\romannumeral-`0#1}% }% \def\xint@rev #1% {% @@ -218,185 +216,230 @@ }% \def\XINT@strip@undef #1\xint@undef {}% \def\XINT@strip@UNDEF #1\xint@UNDEF {}% -\def\XINT@RQ #1#2#3#4#5#6#7#8#9% +\def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }% +\def\xintrevwithbraces #1% {% - \xint@r #9\XINT@RQ@end\R\XINT@RQ {#9#8#7#6#5#4#3#2#1}% + \expandafter\XINT@revwbr@prep\expandafter {\romannumeral-`0#1}% }% -\def\XINT@RQ@end\R\XINT@RQ #1#2\Z +\def\XINT@RWB {\romannumeral0\XINT@revwbr@prep }% +\def\XINT@revwbr@prep #1% {% - \XINT@RQ@end@ #1\Z + \XINT@revwbr@loop + {}#1\xint@undef\xint@undef\xint@undef\xint@undef + \xint@undef\xint@undef\xint@undef\xint@undef\Z }% -\def\XINT@RQ@end@ #1#2#3#4#5#6#7#8% +\def\XINT@revwbr@loop #1#2#3#4#5#6#7#8#9% {% - \xint@r #8\XINT@RQ@end@viii - #7\XINT@RQ@end@vii - #6\XINT@RQ@end@vi - #5\XINT@RQ@end@v - #4\XINT@RQ@end@iv - #3\XINT@RQ@end@iii - #2\XINT@RQ@end@ii - \R\XINT@RQ@end@i - \Z #2#3#4#5#6#7#8% + \XINT@strip@undef #9\XINT@revwbr@finish@a\xint@undef + \XINT@revwbr@loop {{#9}{#8}{#7}{#6}{#5}{#4}{#3}{#2}#1}% }% -\def\XINT@RQ@end@viii #1\Z #2#3#4#5#6#7#8#9\Z { #9}% -\def\XINT@RQ@end@vii #1\Z #2#3#4#5#6#7#8#9\Z { #8#9000}% -\def\XINT@RQ@end@vi #1\Z #2#3#4#5#6#7#8#9\Z { #7#8#900}% -\def\XINT@RQ@end@v #1\Z #2#3#4#5#6#7#8#9\Z { #6#7#8#90}% -\def\XINT@RQ@end@iv #1\Z #2#3#4#5#6#7#8#9\Z { #5#6#7#8#9}% -\def\XINT@RQ@end@iii #1\Z #2#3#4#5#6#7#8#9\Z { #4#5#6#7#8#9000}% -\def\XINT@RQ@end@ii #1\Z #2#3#4#5#6#7#8#9\Z { #3#4#5#6#7#8#900}% -\def\XINT@RQ@end@i \Z #1#2#3#4#5#6#7#8\Z { #1#2#3#4#5#6#7#80}% -\def\xint@cleanupzeros@andstop #1#2#3#4% +\def\XINT@revwbr@finish@a\xint@undef\XINT@revwbr@loop #1#2\Z {% - \expandafter\space\the\numexpr #1#2#3#4\relax + \XINT@revwbr@finish@b #2\R\R\R\R\R\R\R\Z #1% }% -\def\xint@cleanupzeros@nospace #1#2#3#4% +\def\XINT@revwbr@finish@b #1#2#3#4#5#6#7#8\Z {% - \the\numexpr #1#2#3#4\relax + \xint@r #1\XINT@revwbr@finish@c 8% + #2\XINT@revwbr@finish@c 7% + #3\XINT@revwbr@finish@c 6% + #4\XINT@revwbr@finish@c 5% + #5\XINT@revwbr@finish@c 4% + #6\XINT@revwbr@finish@c 3% + #7\XINT@revwbr@finish@c 2% + \R\XINT@revwbr@finish@c 1\Z }% -\def\XINT@rev@andcuz #1% +\def\XINT@revwbr@finish@c #1#2\Z {% - \expandafter\xint@cleanupzeros@andstop - \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 + \expandafter\expandafter\expandafter + \space + \csname xint@gobble@\romannumeral #1\endcsname }% -\def\XINT@cuz #1% +\def\xintiLen {\romannumeral0\xintilen }% +\def\xintilen #1% {% - \XINT@cuz@loop #1\W\W\W\W\W\W\W\Z% + \expandafter\XINT@len@prep\expandafter {\romannumeral-`0#1}% }% -\def\XINT@cuz@loop #1#2#3#4#5#6#7#8% +\let\xintLen\xintiLen \let\xintlen\xintilen +\def\XINT@Len {\romannumeral0\XINT@len@prep }% +\def\XINT@len@prep #1% {% - \xint@w #8\xint@cuz@enda\W - \xint@z #8\xint@cuz@endb\Z - \XINT@cuz@checka {#1#2#3#4#5#6#7#8}% + \XINT@length@fork + #1\xint@undef\xint@undef\xint@undef\xint@undef + \xint@undef\xint@undef\xint@undef\xint@undef\Z }% -\def\xint@cuz@enda #1\XINT@cuz@checka #2% +\def\XINT@length@fork #1% {% - \xint@cuz@endaa #2% + \expandafter\XINT@length@loop + \xint@UDsignfork + #1\dummy {{0}}% + -\dummy {{0}#1}% + \xint@UDkrof }% -\def\xint@cuz@endaa #1#2#3#4#5\Z +\def\XINT@Length {\romannumeral0\XINT@length }% +\def\XINT@length #1% {% - \expandafter\space\the\numexpr #1#2#3#4\relax + \XINT@length@loop + {0}#1\xint@undef\xint@undef\xint@undef\xint@undef + \xint@undef\xint@undef\xint@undef\xint@undef\Z }% -\def\xint@cuz@endb\Z\XINT@cuz@checka #1{ 0}% -\def\XINT@cuz@checka #1% +\let\xintLength\XINT@Length +\def\XINT@length@loop #1#2#3#4#5#6#7#8#9% {% - \expandafter \XINT@cuz@checkb \the\numexpr #1\relax + \XINT@strip@undef #9\XINT@length@finish@a\xint@undef + \expandafter\XINT@length@loop\expandafter {\the\numexpr #1+8\relax}% }% -\def\XINT@cuz@checkb #1% +\def\XINT@length@finish@a\xint@undef + \expandafter\XINT@length@loop\expandafter #1#2\Z {% - \xint@zero #1\xint@cuz@backtoloop 0\XINT@cuz@Stop #1% + \XINT@length@finish@b #2\W\W\W\W\W\W\W\Z {#1}% }% -\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% +\def\XINT@length@finish@b #1#2#3#4#5#6#7#8\Z {% - \xint@one #1\XINT@isone@b 1\expandafter\space\expandafter 0\xint@z #2% + \xint@w #1\XINT@length@finish@c 8% + #2\XINT@length@finish@c 7% + #3\XINT@length@finish@c 6% + #4\XINT@length@finish@c 5% + #5\XINT@length@finish@c 4% + #6\XINT@length@finish@c 3% + #7\XINT@length@finish@c 2% + \W\XINT@length@finish@c 1\Z }% -\def\XINT@isone@b #1\xint@z #2% +\def\XINT@length@finish@c #1#2\Z #3{\expandafter\space\the\numexpr #3-#1\relax}% +\def\xintCSVtoList {\romannumeral0\xintcsvtolist }% +\def\xintcsvtolist #1% {% - \xint@w #2\XINT@isone@yes\W\expandafter\space\expandafter 0\xint@z + \expandafter\XINT@csvtol@prep\expandafter {\romannumeral-`0#1}% }% -\def\XINT@isone@yes #1\Z{ 1}% -\def\xintiNum {\romannumeral0\xintinum }% -\def\xintinum #1% +\def\XINT@CSVtoL {\romannumeral0\XINT@csvtol@prep }% +\def\XINT@csvtol@prep #1% {% - \expandafter\expandafter\expandafter - \XINT@num - \expandafter\expandafter\expandafter + \XINT@csvtol@loop@a + {}#1,\xint@undef,\xint@undef,\xint@undef,\xint@undef,% + \xint@undef,\xint@undef,\xint@undef,\xint@undef,\Z +}% +\def\XINT@csvtol@loop@a #1#2,#3,#4,#5,#6,#7,#8,#9,% +{% + \XINT@strip@undef #9\XINT@csvtol@finish@a\xint@undef + \XINT@csvtol@loop@b {#1}{{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}% +}% +\def\XINT@csvtol@loop@b #1#2{\XINT@csvtol@loop@a {#1#2}}% +\def\XINT@csvtol@finish@a\xint@undef\XINT@csvtol@loop@b #1#2#3\Z +{% + \XINT@csvtol@finish@b #3\R,\R,\R,\R,\R,\R,\R,\Z #2{#1}% +}% +\def\XINT@csvtol@finish@b #1,#2,#3,#4,#5,#6,#7,#8\Z +{% + \xint@r #1\XINT@csvtol@finish@c 8% + #2\XINT@csvtol@finish@c 7% + #3\XINT@csvtol@finish@c 6% + #4\XINT@csvtol@finish@c 5% + #5\XINT@csvtol@finish@c 4% + #6\XINT@csvtol@finish@c 3% + #7\XINT@csvtol@finish@c 2% + \R\XINT@csvtol@finish@c 1\Z +}% +\def\XINT@csvtol@finish@c #1#2\Z +{% + \csname XINT@csvtol@finish@d\romannumeral #1\endcsname +}% +\def\XINT@csvtol@finish@dviii #1#2#3#4#5#6#7#8#9{ #9}% +\def\XINT@csvtol@finish@dvii #1#2#3#4#5#6#7#8#9{ #9{#1}}% +\def\XINT@csvtol@finish@dvi #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}}% +\def\XINT@csvtol@finish@dv #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}}% +\def\XINT@csvtol@finish@div #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}}% +\def\XINT@csvtol@finish@diii #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}}% +\def\XINT@csvtol@finish@dii #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}{#6}}% +\def\XINT@csvtol@finish@di #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% +\def\xintListWithSep {\romannumeral0\xintlistwithsep }% +\long\def\xintlistwithsep #1#2% +{% + \expandafter\XINT@lws\expandafter {\romannumeral-`0#2}% {#1}% }% -\let\xintNum\xintiNum \let\xintnum\xintinum -\def\XINT@Num {\romannumeral0\XINT@num }% -\def\XINT@num #1{\XINT@num@loop #1\R\R\R\R\R\R\R\R\Z }% -\def\XINT@num@loop #1#2#3#4#5#6#7#8% +\long\def\XINT@LWS #1#2{\romannumeral0\XINT@lws@start {#1}#2\Z }% +\long\def\XINT@lws #1#2% {% - \xint@r #8\XINT@num@end\R\XINT@num@NumEight #1#2#3#4#5#6#7#8% + \XINT@lws@start {#2}#1\Z }% -\def\XINT@num@end\R\XINT@num@NumEight #1\R #2\Z +\long\def\XINT@lws@start #1#2% {% - \expandafter\space\the\numexpr #1+0\relax + \xint@z #2\XINT@lws@dont\Z + \XINT@lws@loop@a {#2}{#1}% }% -\def\XINT@num@NumEight #1#2#3#4#5#6#7#8% +\long\def\XINT@lws@dont\Z\XINT@lws@loop@a #1#2{ }% +\long\def\XINT@lws@loop@a #1#2#3% {% - \ifnum \numexpr #1#2#3#4#5#6#7#8+0\relax = 0 - \xint@afterfi {\expandafter\XINT@num@keepsign@a - \the\numexpr #1#2#3#4#5#6#7#81\relax}% + \xint@z #3\XINT@lws@end\Z + \XINT@lws@loop@b {#1}{#2#3}{#2}% +}% +\long\def\XINT@lws@loop@b #1#2{\XINT@lws@loop@a {#1#2}}% +\long\def\XINT@lws@end\Z\XINT@lws@loop@b #1#2#3{ #1}% +\def\xintNthElt {\romannumeral0\xintnthelt }% +\def\xintnthelt #1#2% +{% + \expandafter\XINT@nthelt\expandafter {\romannumeral-`0#2}% + {\numexpr #1\relax}% +}% +\def\XINT@NthElt #1#2{\romannumeral0\XINT@nthelt {#2}{\numexpr #1\relax}}% +\def\XINT@nthelt #1#2% +{% + \ifnum #2<1 + \expandafter\XINT@nthelt@silentend \else - \xint@afterfi {\expandafter\XINT@num@finish - \the\numexpr #1#2#3#4#5#6#7#8\relax}% + \expandafter\XINT@nthelt@loop@a + \fi {#2}#1\xint@undef\xint@undef\xint@undef\xint@undef + \xint@undef\xint@undef\xint@undef\xint@undef\Z +}% +\def\XINT@nthelt@silentend #1\Z { }% +\def\XINT@nthelt@loop@a #1% +{% + \ifnum #1>8 + \expandafter\XINT@nthelt@loop@b + \else + \expandafter\XINT@nthelt@getit \fi + {#1}% }% -\def\XINT@num@keepsign@a #1% +\def\XINT@nthelt@loop@b #1#2#3#4#5#6#7#8#9% {% - \xint@one#1\XINT@num@gobacktoloop 1\XINT@num@keepsign@b + \XINT@strip@undef #9\XINT@nthelt@silentend\xint@undef + \expandafter\XINT@nthelt@loop@a\expandafter{\the\numexpr #1-8\relax}% }% -\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\xintiLen {\romannumeral0\xintilen }% -\def\xintilen #1% +\def\XINT@nthelt@getit #1% {% - \expandafter\expandafter\expandafter - \XINT@length@fork #1\R\R\R\R\R\R\R\R\Z + \expandafter\expandafter\expandafter\XINT@nthelt@finish + \csname xint@gobble@\romannumeral\numexpr#1-1\endcsname }% -\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% +\def\XINT@nthelt@finish #1#2\Z {% - \expandafter\XINT@length@loop - \xint@UDsignfork - #1\dummy {{0}}% - -\dummy {{0}#1}% + \xint@UDwfork + #1\dummy { }% + \W\dummy { #1}% \xint@UDkrof }% -\def\XINT@Length #1{\romannumeral0\XINT@length@loop {0}#1\R\R\R\R\R\R\R\R\Z }% -\def\XINT@length #1{\XINT@length@loop {0}#1\R\R\R\R\R\R\R\R\Z }% -\let\xintLength\XINT@Length -\def\XINT@length@loop #1#2#3#4#5#6#7#8#9% +\def\xintApply {\romannumeral0\xintapply }% +\def\xintapply #1#2% {% - \xint@r #9\XINT@length@end {#2#3#4#5#6#7#8#9}\R - \expandafter\XINT@length@loop\expandafter {\the\numexpr #1+8\relax}% + \expandafter\XINT@apply\expandafter {\romannumeral-`0#2}% + {#1}% +}% +\def\XINT@Apply #1#2{\romannumeral0\XINT@apply@loop@a {}{#1}#2\Z }% +\def\XINT@apply #1#2% +{% + \XINT@apply@loop@a {}{#2}#1\Z }% -\def\XINT@length@end #1\R\expandafter\XINT@length@loop\expandafter #2#3\Z -{% - \XINT@length@end@ #1\W\W\W\W\W\W\W\W\Z {#2}% -}% -\def\XINT@length@end@ #1\R #2#3#4#5#6#7#8#9\Z -{% - \xint@w #2\XINT@length@end@i - #3\XINT@length@end@ii - #4\XINT@length@end@iii - #5\XINT@length@end@iv - #6\XINT@length@end@v - #7\XINT@length@end@vi - #8\XINT@length@end@vii - \W\XINT@length@end@viii -}% -\def\XINT@length@end@viii #1% - {\expandafter\space\the\numexpr #1-8\relax}% -\def\XINT@length@end@vii #1\XINT@length@end@viii #2% - {\expandafter\space\the\numexpr #2-7\relax}% -\def\XINT@length@end@vi #1\XINT@length@end@viii #2% - {\expandafter\space\the\numexpr #2-6\relax}% -\def\XINT@length@end@v #1\XINT@length@end@viii #2% - {\expandafter\space\the\numexpr #2-5\relax}% -\def\XINT@length@end@iv #1\XINT@length@end@viii #2% - {\expandafter\space\the\numexpr #2-4\relax}% -\def\XINT@length@end@iii #1\XINT@length@end@viii #2% - {\expandafter\space\the\numexpr #2-3\relax}% -\def\XINT@length@end@ii #1\XINT@length@end@viii #2% - {\expandafter\space\the\numexpr #2-2\relax}% -\def\XINT@length@end@i #1\XINT@length@end@viii #2% - {\expandafter\space\the\numexpr #2-1\relax}% +\def\XINT@apply@loop@a #1#2#3% +{% + \xint@z #3\XINT@apply@end\Z + \expandafter + \XINT@apply@loop@b + \expandafter {\romannumeral-`0#2{#3}}{#1}{#2}% +}% +\def\XINT@apply@loop@b #1#2{\XINT@apply@loop@a {#2{#1}}}% +\def\XINT@apply@end\Z\expandafter\XINT@apply@loop@b\expandafter #1#2#3{ #2}% \def\xintAssign #1\to {% - \expandafter\expandafter\expandafter - \XINT@assign@a #1{}\to + \expandafter\XINT@assign@a\romannumeral-`0#1{}\to }% \def\XINT@assign@a #1% attention to the # at the beginning of next line #{% @@ -444,8 +487,8 @@ \edef\xint@arrayname {\string #1}% \XINT@restoreescapechar \count 255 0 - \expandafter\expandafter\expandafter - \XINT@assignarray@loop #1\xint@undef + \expandafter + \XINT@assignarray@loop \romannumeral-`0#1\xint@undef \csname\xint@arrayname 00\endcsname \csname\xint@arrayname 0\endcsname {\xint@arrayname}% @@ -478,11 +521,9 @@ \def\XINT@assignarray@@@@end #1#2#3#4% {% \def #4##1% - {\romannumeral0% - \expandafter\expandafter\expandafter - #1% - \expandafter\expandafter\expandafter - {##1}% + {% + \romannumeral0% + \expandafter #1\expandafter{\the\numexpr ##1}% }% \def #1##1% {% @@ -501,60 +542,127 @@ }% }% \let\xintDigitsOf\xintAssignArray -\def\xintApply {\romannumeral0\xintapply }% -\def\xintapply #1#2% +\def\XINT@RQ #1#2#3#4#5#6#7#8#9% {% - \expandafter\expandafter\expandafter - \XINT@apply - \expandafter\expandafter\expandafter - {#2}{#1}% + \xint@r #9\XINT@RQ@end\R\XINT@RQ {#9#8#7#6#5#4#3#2#1}% }% -\def\XINT@apply #1#2% +\def\XINT@RQ@end\R\XINT@RQ #1#2\Z {% - \XINT@apply@loop@a {}{#2}#1\Z + \XINT@RQ@end@ #1\Z }% -\def\XINT@apply@loop@a #1#2#3% +\def\XINT@RQ@end@ #1#2#3#4#5#6#7#8% {% - \xint@z #3\XINT@apply@end\Z - \expandafter\expandafter\expandafter - \XINT@apply@loop@b - \expandafter\expandafter\expandafter {#2{#3}}{#1}{#2}% + \xint@r #8\XINT@RQ@end@viii + #7\XINT@RQ@end@vii + #6\XINT@RQ@end@vi + #5\XINT@RQ@end@v + #4\XINT@RQ@end@iv + #3\XINT@RQ@end@iii + #2\XINT@RQ@end@ii + \R\XINT@RQ@end@i + \Z #2#3#4#5#6#7#8% }% -\def\XINT@apply@loop@b #1#2{\XINT@apply@loop@a {#2{#1}}}% -\def\XINT@apply@end\Z - \expandafter\expandafter\expandafter - \XINT@apply@loop@b - \expandafter\expandafter\expandafter #1#2#3{ #2}% -\def\xintListWithSep {\romannumeral0\xintlistwithsep }% -\long\def\xintlistwithsep #1#2% +\def\XINT@RQ@end@viii #1\Z #2#3#4#5#6#7#8#9\Z { #9}% +\def\XINT@RQ@end@vii #1\Z #2#3#4#5#6#7#8#9\Z { #8#9000}% +\def\XINT@RQ@end@vi #1\Z #2#3#4#5#6#7#8#9\Z { #7#8#900}% +\def\XINT@RQ@end@v #1\Z #2#3#4#5#6#7#8#9\Z { #6#7#8#90}% +\def\XINT@RQ@end@iv #1\Z #2#3#4#5#6#7#8#9\Z { #5#6#7#8#9}% +\def\XINT@RQ@end@iii #1\Z #2#3#4#5#6#7#8#9\Z { #4#5#6#7#8#9000}% +\def\XINT@RQ@end@ii #1\Z #2#3#4#5#6#7#8#9\Z { #3#4#5#6#7#8#900}% +\def\XINT@RQ@end@i \Z #1#2#3#4#5#6#7#8\Z { #1#2#3#4#5#6#7#80}% +\def\xint@cleanupzeros@andstop #1#2#3#4% {% - \expandafter\expandafter\expandafter - \XINT@lws - \expandafter\expandafter\expandafter - {#2}{#1}% + \expandafter\space\the\numexpr #1#2#3#4\relax }% -\long\def\XINT@lws #1#2% +\def\xint@cleanupzeros@nospace #1#2#3#4% {% - \XINT@lws@start {#2}#1\Z + \the\numexpr #1#2#3#4\relax }% -\long\def\XINT@lws@start #1#2% +\def\XINT@rev@andcuz #1% {% - \xint@z #2\XINT@lws@dont\Z - \XINT@lws@loop@a {#2}{#1}% + \expandafter\xint@cleanupzeros@andstop + \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 }% -\long\def\XINT@lws@dont\Z\XINT@lws@loop@a #1#2{ #2}% -\long\def\XINT@lws@loop@a #1#2#3% +\def\XINT@cuz #1% {% - \xint@z #3\XINT@lws@end\Z - \XINT@lws@loop@b {#1}{#2#3}{#2}% + \XINT@cuz@loop #1\W\W\W\W\W\W\W\Z% }% -\long\def\XINT@lws@loop@b #1#2{\XINT@lws@loop@a {#1#2}}% -\long\def\XINT@lws@end\Z\XINT@lws@loop@b #1#2#3{ #1}% +\def\XINT@cuz@loop #1#2#3#4#5#6#7#8% +{% + \xint@w #8\xint@cuz@enda\W + \xint@z #8\xint@cuz@endb\Z + \XINT@cuz@checka {#1#2#3#4#5#6#7#8}% +}% +\def\xint@cuz@enda #1\XINT@cuz@checka #2% +{% + \xint@cuz@endaa #2% +}% +\def\xint@cuz@endaa #1#2#3#4#5\Z +{% + \expandafter\space\the\numexpr #1#2#3#4\relax +}% +\def\xint@cuz@endb\Z\XINT@cuz@checka #1{ 0}% +\def\XINT@cuz@checka #1% +{% + \expandafter \XINT@cuz@checkb \the\numexpr #1\relax +}% +\def\XINT@cuz@checkb #1% +{% + \xint@zero #1\xint@cuz@backtoloop 0\XINT@cuz@Stop #1% +}% +\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\xintiNum {\romannumeral0\xintinum }% +\def\xintinum #1% +{% + \expandafter\XINT@num\expandafter {\romannumeral-`0#1}% +}% +\let\xintNum\xintiNum \let\xintnum\xintinum +\def\XINT@Num {\romannumeral0\XINT@num }% +\def\XINT@num #1{\XINT@num@loop #1\R\R\R\R\R\R\R\R\Z }% +\def\XINT@num@loop #1#2#3#4#5#6#7#8% +{% + \xint@r #8\XINT@num@end\R\XINT@num@NumEight #1#2#3#4#5#6#7#8% +}% +\def\XINT@num@end\R\XINT@num@NumEight #1\R #2\Z +{% + \expandafter\space\the\numexpr #1+0\relax +}% +\def\XINT@num@NumEight #1#2#3#4#5#6#7#8% +{% + \ifnum \numexpr #1#2#3#4#5#6#7#8+0\relax = 0 + \xint@afterfi {\expandafter\XINT@num@keepsign@a + \the\numexpr #1#2#3#4#5#6#7#81\relax}% + \else + \xint@afterfi {\expandafter\XINT@num@finish + \the\numexpr #1#2#3#4#5#6#7#8\relax}% + \fi +}% +\def\XINT@num@keepsign@a #1% +{% + \xint@one#1\XINT@num@gobacktoloop 1\XINT@num@keepsign@b +}% +\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\xintiSgn {\romannumeral0\xintisgn }% \def\xintisgn #1% {% - \expandafter\expandafter\expandafter - \XINT@sgn #1\Z% + \expandafter\XINT@sgn \romannumeral-`0#1\Z% }% \let\xintSgn\xintiSgn \let\xintsgn\xintisgn \def\XINT@Sgn #1{\romannumeral0\XINT@sgn #1\Z }% @@ -569,32 +677,29 @@ \def\xintiOpp {\romannumeral0\xintiopp }% \def\xintiopp #1% {% - \expandafter\expandafter\expandafter - \XINT@opp #1% + \expandafter\XINT@opp \romannumeral-`0#1% }% \let\xintOpp\xintiOpp \let\xintopp\xintiopp \def\XINT@Opp #1{\romannumeral0\XINT@opp #1}% \def\XINT@opp #1% {% - \expandafter\space \xint@UDzerominusfork - #1-\dummy 0% zero - 0#1\dummy {}% negative - 0-\dummy {-#1}% positive + #1-\dummy { 0}% zero + 0#1\dummy { }% negative + 0-\dummy { -#1}% positive \xint@UDkrof }% \def\xintiAbs {\romannumeral0\xintiabs }% \def\xintiabs #1% {% - \expandafter\expandafter\expandafter - \XINT@abs #1% + \expandafter\XINT@abs \romannumeral-`0#1% }% \let\xintAbs\xintiAbs \let\xintabs\xintiabs \def\XINT@Abs #1{\romannumeral0\XINT@abs #1}% \def\XINT@abs #1% {% \xint@UDsignfork - #1\dummy \space + #1\dummy { }% -\dummy { #1}% \xint@UDkrof }% @@ -918,16 +1023,12 @@ \def\xintiAdd {\romannumeral0\xintiadd }% \def\xintiadd #1% {% - \expandafter\expandafter\expandafter - \xint@add - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@add\expandafter{\romannumeral-`0#1}% }% \let\xintAdd\xintiAdd \let\xintadd\xintiadd \def\xint@add #1#2% {% - \expandafter\expandafter\expandafter - \XINT@add@fork #2\Z #1\Z + \expandafter\XINT@add@fork \romannumeral-`0#2\Z #1\Z }% \def\XINT@Add #1#2{\romannumeral0\XINT@add@fork #2\Z #1\Z }% \def\XINT@add #1#2{\XINT@add@fork #2\Z #1\Z }% @@ -967,9 +1068,8 @@ }% \def\XINT@add@pre #1% {% - \expandafter\XINT@add@@pre\expandafter{% - \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z - }% + \expandafter\XINT@add@@pre\expandafter + {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z }% }% \def\XINT@add@@pre #1#2% {% @@ -981,16 +1081,12 @@ \def\xintiSub {\romannumeral0\xintisub }% \def\xintisub #1% {% - \expandafter\expandafter\expandafter - \xint@sub - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@sub\expandafter{\romannumeral-`0#1}% }% \let\xintSub\xintiSub \let\xintsub\xintisub \def\xint@sub #1#2% {% - \expandafter\expandafter\expandafter - \XINT@sub@fork #2\Z #1\Z + \expandafter\XINT@sub@fork \romannumeral-`0#2\Z #1\Z }% \def\XINT@Sub #1#2{\romannumeral0\XINT@sub@fork #2\Z #1\Z }% \def\XINT@sub #1#2{\XINT@sub@fork #2\Z #1\Z }% @@ -1031,9 +1127,8 @@ \def\xint@sub@pm #1\XINT@add@pre #2#3{ -#2}% \def\XINT@sub@pre #1% {% - \expandafter\XINT@sub@@pre\expandafter{% - \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z - }% + \expandafter\XINT@sub@@pre\expandafter + {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z }% }% \def\XINT@sub@@pre #1#2% {% @@ -1137,8 +1232,7 @@ }% \def\XINT@sub@E #1#2#3#4#5#6% {% - \xint@w #3\xint@sub@F\W\XINT@sub@Eonestep - #1{#6#5#4#3}{#2}% + \xint@w #3\xint@sub@F\W\XINT@sub@Eonestep #1{#6#5#4#3}{#2}% }% \def\XINT@sub@Eonestep #1#2% {% @@ -1160,9 +1254,8 @@ \def\XINT@sub@DD {\expandafter\xint@minus@andstop\romannumeral0\XINT@sub@D }% \def\XINT@sub@Fdec #1#2#3#4#5#6% {% - \xint@w - #3\xint@sub@Fdec@finish\W\XINT@sub@Fdec@onestep - #1{#6#5#4#3}{#2}% + \xint@w #3\xint@sub@Fdec@finish\W + \XINT@sub@Fdec@onestep #1{#6#5#4#3}{#2}% }% \def\XINT@sub@Fdec@onestep #1#2% {% @@ -1178,9 +1271,8 @@ }% \def\XINT@sub@Finc #1#2#3#4#5#6% {% - \xint@w - #3\xint@sub@Finc@finish\W\XINT@sub@Finc@onestep - #1{#6#5#4#3}{#2}% + \xint@w #3\xint@sub@Finc@finish\W + \XINT@sub@Finc@onestep #1{#6#5#4#3}{#2}% }% \def\XINT@sub@Finc@onestep #1#2% {% @@ -1193,8 +1285,7 @@ \def\xint@sub@Finc@finish\W\XINT@sub@Finc@onestep #1#2#3% {% \xint@UDzerofork - #1\dummy {\expandafter\xint@minus@andstop% - \xint@cleanupzeros@nospace}% + #1\dummy {\expandafter\xint@minus@andstop\xint@cleanupzeros@nospace}% 0\dummy { -1}% \xint@UDkrof #3% @@ -1206,8 +1297,7 @@ 0\dummy \XINT@sub@L % pas de retenue \xint@UDkrof }% -\def\XINT@sub@L #1\W\X\Y\Z - {\XINT@cuz@loop #1\W\W\W\W\W\W\W\Z }% +\def\XINT@sub@L #1\W\X\Y\Z {\XINT@cuz@loop #1\W\W\W\W\W\W\W\Z }% \def\XINT@sub@K #1% {% \expandafter @@ -1221,9 +1311,8 @@ }% \def\XINT@sub@KK #1#2#3#4#5#6% {% - \xint@w - #3\xint@sub@KK@finish\W\XINT@sub@KK@onestep - #1{#6#5#4#3}{#2}% + \xint@w #3\xint@sub@KK@finish\W + \XINT@sub@KK@onestep #1{#6#5#4#3}{#2}% }% \def\XINT@sub@KK@onestep #1#2% {% @@ -1235,22 +1324,18 @@ }% \def\xint@sub@KK@finish\W\XINT@sub@KK@onestep #1#2#3% {% - \expandafter\xint@minus@andstop\romannumeral - 0\XINT@cuz@loop #3\W\W\W\W\W\W\W\Z + \expandafter\xint@minus@andstop + \romannumeral0\XINT@cuz@loop #3\W\W\W\W\W\W\W\Z }% \def\xintiCmp {\romannumeral0\xinticmp }% \def\xinticmp #1% {% - \expandafter\expandafter\expandafter - \xint@cmp - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@cmp\expandafter{\romannumeral-`0#1}% }% \let\xintCmp\xintiCmp \let\xintcmp\xinticmp \def\xint@cmp #1#2% {% - \expandafter\expandafter\expandafter - \XINT@cmp@fork #2\Z #1\Z + \expandafter\XINT@cmp@fork \romannumeral-`0#2\Z #1\Z }% \def\XINT@Cmp #1#2{\romannumeral0\XINT@cmp@fork #2\Z #1\Z }% \def\XINT@cmp@fork #1#2\Z #3#4\Z @@ -1283,9 +1368,8 @@ }% \def\XINT@cmp@pre #1% {% - \expandafter\XINT@cmp@@pre\expandafter{% - \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z - }% + \expandafter\XINT@cmp@@pre\expandafter + {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z }% }% \def\XINT@cmp@@pre #1#2% {% @@ -1296,15 +1380,11 @@ }% \def\XINT@cmp@A #1#2#3\W\X\Y\Z #4#5#6#7% {% - \xint@w - #4\xint@cmp@az - \W\XINT@cmp@B #1{#4#5#6#7}{#2}#3\W\X\Y\Z + \xint@w #4\xint@cmp@az\W\XINT@cmp@B #1{#4#5#6#7}{#2}#3\W\X\Y\Z }% \def\XINT@cmp@B #1#2#3#4#5#6#7% {% - \xint@w - #4\xint@cmp@bz - \W\XINT@cmp@onestep #1#2{#7#6#5#4}{#3}% + \xint@w#4\xint@cmp@bz\W\XINT@cmp@onestep #1#2{#7#6#5#4}{#3}% }% \def\XINT@cmp@onestep #1#2#3#4#5#6% {% @@ -1314,13 +1394,10 @@ {% \XINT@cmp@A #2{#3#4}% }% -\def\xint@cmp@bz - \W\XINT@cmp@onestep #1\Z { 1}% +\def\xint@cmp@bz\W\XINT@cmp@onestep #1\Z { 1}% \def\xint@cmp@az\W\XINT@cmp@B #1#2#3#4#5#6#7% {% - \xint@w - #4\xint@cmp@ez - \W\XINT@cmp@Eenter #1{#3}#4#5#6#7% + \xint@w #4\xint@cmp@ez\W\XINT@cmp@Eenter #1{#3}#4#5#6#7% }% \def\XINT@cmp@Eenter #1\Z { -1}% \def\xint@cmp@ez\W\XINT@cmp@Eenter #1% @@ -1338,19 +1415,18 @@ }% \def\XINT@OneIfPositive@main #1#2#3#4% {% - \xint@z #4\xint@OneIfPositive@terminated\Z\XINT@OneIfPositive@onestep - #1#2#3#4% + \xint@z #4\xint@OneIfPositive@terminated\Z + \XINT@OneIfPositive@onestep #1#2#3#4% }% \def\xint@OneIfPositive@terminated\Z\XINT@OneIfPositive@onestep\W\X\Y\Z { 0}% \def\XINT@OneIfPositive@onestep #1#2#3#4% {% - \expandafter\XINT@OneIfPositive@check - \the\numexpr #1#2#3#4\relax + \expandafter\XINT@OneIfPositive@check\the\numexpr #1#2#3#4\relax }% \def\XINT@OneIfPositive@check #1% {% - \xint@zero - #1\xint@OneIfPositive@backtomain 0\XINT@OneIfPositive@finish #1% + \xint@zero #1\xint@OneIfPositive@backtomain 0% + \XINT@OneIfPositive@finish #1% }% \def\XINT@OneIfPositive@finish #1\W\X\Y\Z{ 1}% \def\xint@OneIfPositive@backtomain 0\XINT@OneIfPositive@finish 0% @@ -1358,15 +1434,12 @@ \def\xintiGeq {\romannumeral0\xintigeq }% \def\xintigeq #1% {% - \expandafter\expandafter\expandafter - \xint@geq - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@geq\expandafter {\romannumeral-`0#1}% }% \let\xintGeq\xintiGeq \let\xintgeq\xintigeq \def\xint@geq #1#2% {% - \expandafter\expandafter\expandafter\XINT@geq@fork #2\Z #1\Z + \expandafter\XINT@geq@fork \romannumeral-`0#2\Z #1\Z }% \def\XINT@Geq #1#2{\romannumeral0\XINT@geq@fork #2\Z #1\Z }% \def\XINT@geq@fork #1#2\Z #3#4\Z @@ -1385,19 +1458,14 @@ }% \def\XINT@geq@secondiszero #1#2#3#4{ 1}% \def\XINT@geq@firstiszero #1#2#3#4{ 0}% -\def\XINT@geq@plusplus #1#2#3#4% - {\XINT@geq@pre {#4#2}{#3#1}}% -\def\XINT@geq@minusminus #1#2#3#4% - {\XINT@geq@pre {#2}{#1}}% -\def\XINT@geq@minusplus #1#2#3#4% - {\XINT@geq@pre {#4#2}{#1}}% -\def\XINT@geq@plusminus #1#2#3#4% - {\XINT@geq@pre {#2}{#3#1}}% +\def\XINT@geq@plusplus #1#2#3#4{\XINT@geq@pre {#4#2}{#3#1}}% +\def\XINT@geq@minusminus #1#2#3#4{\XINT@geq@pre {#2}{#1}}% +\def\XINT@geq@minusplus #1#2#3#4{\XINT@geq@pre {#4#2}{#1}}% +\def\XINT@geq@plusminus #1#2#3#4{\XINT@geq@pre {#2}{#3#1}}% \def\XINT@geq@pre #1% {% - \expandafter\XINT@geq@@pre\expandafter{% - \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z - }% + \expandafter\XINT@geq@@pre\expandafter + {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z }% }% \def\XINT@geq@@pre #1#2% {% @@ -1408,15 +1476,11 @@ }% \def\XINT@geq@A #1#2#3\W\X\Y\Z #4#5#6#7% {% - \xint@w - #4\xint@geq@az - \W\XINT@geq@B #1{#4#5#6#7}{#2}#3\W\X\Y\Z + \xint@w #4\xint@geq@az\W\XINT@geq@B #1{#4#5#6#7}{#2}#3\W\X\Y\Z }% \def\XINT@geq@B #1#2#3#4#5#6#7% {% - \xint@w - #4\xint@geq@bz - \W\XINT@geq@onestep #1#2{#7#6#5#4}{#3}% + \xint@w #4\xint@geq@bz\W\XINT@geq@onestep #1#2{#7#6#5#4}{#3}% }% \def\XINT@geq@onestep #1#2#3#4#5#6% {% @@ -1429,9 +1493,7 @@ \def\xint@geq@bz\W\XINT@geq@onestep #1\W\X\Y\Z { 1}% \def\xint@geq@az\W\XINT@geq@B #1#2#3#4#5#6#7% {% - \xint@w - #4\xint@geq@ez - \W\XINT@geq@Eenter #1% + \xint@w #4\xint@geq@ez\W\XINT@geq@Eenter #1% }% \def\XINT@geq@Eenter #1\W\X\Y\Z { 0}% \def\xint@geq@ez\W\XINT@geq@Eenter #1% @@ -1444,17 +1506,12 @@ \def\xintiMax {\romannumeral0\xintimax }% \def\xintimax #1% {% - \expandafter\expandafter\expandafter - \xint@max - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@max\expandafter {\romannumeral-`0#1}% }% \let\xintMax\xintiMax \let\xintmax\xintimax \def\xint@max #1#2% {% - \expandafter\expandafter\expandafter - \XINT@max@pre - \expandafter\expandafter\expandafter {#2}{#1}% + \expandafter\XINT@max@pre\expandafter {\romannumeral-`0#2}{#1}% }% \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}}% @@ -1497,17 +1554,12 @@ \def\xintiMin {\romannumeral0\xintimin }% \def\xintimin #1% {% - \expandafter\expandafter\expandafter - \xint@min - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@min\expandafter {\romannumeral-`0#1}% }% \let\xintMin\xintiMin \let\xintmin\xintimin \def\xint@min #1#2% {% - \expandafter\expandafter\expandafter - \XINT@min@pre - \expandafter\expandafter\expandafter {#2}{#1}% + \expandafter\XINT@min@pre\expandafter {\romannumeral-`0#2}{#1}% }% \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}}% @@ -1531,7 +1583,7 @@ \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% +\def\XINT@min@plusplus #1#2#3#4% {% \ifodd\XINT@Geq {#4#2}{#3#1} \expandafter\xint@secondoftwo@andstop @@ -1550,16 +1602,13 @@ \def\xintiSum {\romannumeral0\xintisum }% \def\xintisum #1{\xintisumexpr #1\relax }% \def\xintiSumExpr {\romannumeral0\xintisumexpr }% -\def\xintisumexpr -{% - \expandafter\expandafter\expandafter\XINT@sumexpr -}% +\def\xintisumexpr {\expandafter\XINT@sumexpr\romannumeral-`0}% \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% {% - \expandafter\expandafter\expandafter\XINT@sum@checksign #3\Z {#1}{#2}% + \expandafter\XINT@sum@checksign\romannumeral-`0#3\Z {#1}{#2}% }% \def\XINT@sum@checksign #1% {% @@ -1595,15 +1644,12 @@ \def\xintiMul {\romannumeral0\xintimul }% \def\xintimul #1% {% - \expandafter\expandafter\expandafter - \xint@mul - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@mul\expandafter {\romannumeral-`0#1}% }% \let\xintMul\xintiMul \let\xintmul\xintimul \def\xint@mul #1#2% -{\expandafter\expandafter\expandafter - \XINT@mul@fork #2\Z #1\Z +{% + \expandafter\XINT@mul@fork \romannumeral-`0#2\Z #1\Z }% \def\XINT@Mul #1#2{\romannumeral0\XINT@mul@fork #2\Z #1\Z }% \def\XINT@mul@fork #1#2\Z #3#4\Z @@ -1630,17 +1676,17 @@ }% \def\XINT@mul@minusplus #1#2#3% {% - \expandafter\xint@minus@andstop\romannumeral0\expandafter - \XINT@mul@choice@a - \expandafter{\romannumeral0\XINT@length {#1#3}}% - {\romannumeral0\XINT@length {#2}}{#2}{#1#3}% + \expandafter\xint@minus@andstop\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% {% - \expandafter\xint@minus@andstop\romannumeral0\expandafter - \XINT@mul@choice@a - \expandafter{\romannumeral0\XINT@length {#3}}% - {\romannumeral0\XINT@length {#1#2}}{#1#2}{#3}% + \expandafter\xint@minus@andstop\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% {% @@ -1688,38 +1734,20 @@ }% \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 + \ifnum #1<\numexpr\ifcase \numexpr (#2-3)/4\relax + \or 330\or 168\or 109\or 80\or 66\or 52\else 0\fi\relax + \expandafter\XINT@mul@choice@same + \else + \expandafter\XINT@mul@choice@permute \fi }% \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 + \ifnum #2<\numexpr\ifcase \numexpr (#1-3)/4\relax + \or 330\or 168\or 109\or 80\or 66\or 52\else 0\fi\relax + \expandafter\XINT@mul@choice@permute + \else + \expandafter\XINT@mul@choice@same \fi }% \def\XINT@mul@choice@same #1#2% @@ -1753,8 +1781,7 @@ }% \def\XINT@mul@Mr #1% {% - \expandafter\XINT@mul@Mr@checkifzeroorone - \expandafter{\the\numexpr #1}% + \expandafter\XINT@mul@Mr@checkifzeroorone\expandafter{\the\numexpr #1}% }% \def\XINT@mul@Mr@checkifzeroorone #1% {% @@ -1783,15 +1810,14 @@ }% \def\xint@mul@pr\Z\XINT@mul@Pr #1#2#3#4#5% {% - \xint@quatrezeros #1\XINT@mul@Mr@end@nocarry 0000\XINT@mul@Mr@end@carry - #1{#4}% + \xint@quatrezeros #1\XINT@mul@Mr@end@nocarry 0000% + \XINT@mul@Mr@end@carry #1{#4}% }% \def\XINT@mul@Mr@end@nocarry 0000\XINT@mul@Mr@end@carry 0000#1{ #1}% \def\XINT@mul@Mr@end@carry #1#2#3#4#5{ #5#4#3#2#1}% \def\XINT@mul@M #1% {% - \expandafter\XINT@mul@M@checkifzeroorone - \expandafter{\the\numexpr #1}% + \expandafter\XINT@mul@M@checkifzeroorone\expandafter{\the\numexpr #1}% }% \def\XINT@mul@M@checkifzeroorone #1% {% @@ -1807,8 +1833,7 @@ \def\XINT@mul@M@zero #1\Z\Z\Z\Z { 0}% \def\XINT@mul@M@one #1#2#3#4\Z\Z\Z\Z {% - \expandafter\xint@cleanupzeros@andstop - \romannumeral0\XINT@rev{#4}% + \expandafter\xint@cleanupzeros@andstop\romannumeral0\XINT@rev{#4}% }% \def\XINT@mul@N #1#2#3#4#5#6#7% {% @@ -2002,10 +2027,7 @@ \def\xintiSqr {\romannumeral0\xintisqr }% \def\xintisqr #1% {% - \expandafter\expandafter\expandafter - \XINT@sqr - \expandafter\expandafter\expandafter - {\xintiAbs{#1}}% fait l'expansion de #1 et se d\'ebarrasse du signe + \expandafter\XINT@sqr\expandafter {\romannumeral0\xintiabs{#1}}% }% \let\xintSqr\xintiSqr \let\xintsqr\xintisqr \def\XINT@sqr #1% @@ -2020,16 +2042,13 @@ \let\xintPrd\xintiPrd \let\xintprd\xintiprd \def\xintiProductExpr {\romannumeral0\xintiproductexpr }% -\def\xintiproductexpr -{% - \expandafter\expandafter\expandafter\XINT@productexpr -}% +\def\xintiproductexpr {\expandafter\XINT@productexpr\romannumeral-`0}% \let\xintProductExpr\xintiProductExpr \let\xintproductexpr\xintiproductexpr \def\XINT@productexpr {\XINT@prod@loop@a 1\Z }% \def\XINT@prod@loop@a #1\Z #2% {% - \expandafter\expandafter\expandafter\XINT@prod@loop@b #2\Z #1\Z \Z + \expandafter\XINT@prod@loop@b \romannumeral-`0#2\Z #1\Z \Z }% \def\XINT@prod@loop@b #1% {% @@ -2044,12 +2063,8 @@ \def\xintFac {\romannumeral0\xintfac }% \def\xintfac #1% {% - \expandafter\expandafter\expandafter - \XINT@fac@fork - \expandafter\expandafter\expandafter - {#1}% + \expandafter\XINT@fac@fork\expandafter{\the\numexpr #1}% }% -\def\XINT@Fac {\romannumeral0\XINT@fac@fork }% \def\XINT@fac@fork #1% {% \ifcase\XINT@Sgn {#1} @@ -2064,7 +2079,7 @@ }% \def\XINT@fac@checklength #1% {% - \ifnum\numexpr #1\relax>999999 + \ifnum #1>999999 \xint@afterfi{\expandafter\xintError:FactorialOfTooBigNumber \expandafter\space\expandafter 1\xint@gobble }% \else @@ -2130,8 +2145,7 @@ \def\xintiPow {\romannumeral0\xintipow }% \def\xintipow #1% {% - \expandafter\expandafter\expandafter\xint@pow - #1\Z% + \expandafter\xint@pow\romannumeral-`0#1\Z% }% \let\xintPow\xintiPow \let\xintpow\xintipow \def\xint@pow #1#2\Z @@ -2144,15 +2158,12 @@ }% \def\XINT@pow@Aneg #1#2#3% {% - \expandafter\expandafter\expandafter - \XINT@pow@Aneg@ - \expandafter\expandafter\expandafter - {#3}{#2}% + \expandafter\XINT@pow@Aneg@\expandafter{\the\numexpr #3}{#2}% }% \def\XINT@pow@Aneg@ #1% {% - \ifcase\XINT@Odd{#1} - \or \expandafter\XINT@pow@Aneg@Bodd + \ifodd #1 + \expandafter\XINT@pow@Aneg@Bodd \fi \XINT@pow@Anonneg@ {#1}% }% @@ -2162,10 +2173,7 @@ }% \def\XINT@pow@Anonneg #1#2#3% {% - \expandafter\expandafter\expandafter - \XINT@pow@Anonneg@ - \expandafter\expandafter\expandafter - {#3}{#1#2}% + \expandafter\XINT@pow@Anonneg@\expandafter {\the\numexpr #3}{#1#2}% }% \def\XINT@pow@Anonneg@ #1#2% {% @@ -2204,7 +2212,7 @@ \def\XINT@pow@BisZero #1#2{ 1}% \def\XINT@pow@checkBlength #1#2% {% - \ifnum\numexpr #1\relax >999999999 + \ifnum #1>999999999 \expandafter\XINT@pow@BtooBig \else \expandafter\XINT@pow@loop @@ -2287,16 +2295,12 @@ \def\xintiDivision {\romannumeral0\xintidivision }% \def\xintidivision #1% {% - \expandafter\expandafter\expandafter - \xint@division - \expandafter\expandafter\expandafter - {#1}% + \expandafter\xint@division\expandafter {\romannumeral-`0#1}% }% \let\xintDivision\xintiDivision \let\xintdivision\xintidivision \def\xint@division #1#2% {% - \expandafter\expandafter\expandafter - \XINT@div@fork #2\Z #1\Z + \expandafter\XINT@div@fork \romannumeral-`0#2\Z #1\Z }% \def\XINT@Division #1#2{\romannumeral0\XINT@div@fork #2\Z #1\Z }% \def\XINT@div@fork #1#2\Z #3#4\Z @@ -2375,33 +2379,30 @@ \ifnum #2=1 \expandafter\XINT@div@prepareB@BisOne \else - \xint@afterfi{\XINT@div@prepareB@e {000}{3}{4}{#2}}% - \fi + \expandafter\XINT@div@prepareB@e + \fi {000}{3}{4}{#2}% }% -\def\XINT@div@prepareB@BisOne #1{ {#1}{0}}% +\def\XINT@div@prepareB@BisOne #1#2#3#4#5{ {#5}{0}}% \def\XINT@div@prepareB@a #1% {% - \expandafter \XINT@div@prepareB@b \expandafter - {\the\numexpr 4*((#1+1)/4)}{#1}% -}% -\def\XINT@div@prepareB@b #1#2% -{% - \expandafter \XINT@div@prepareB@c \expandafter - {\the\numexpr #1-#2}{#1}% + \expandafter\XINT@div@prepareB@c\expandafter{\the\numexpr 4*((#1+1)/4)}{#1}% }% -\def\XINT@div@prepareB@c #1% +\def\XINT@div@prepareB@c #1#2% {% - \ifcase #1 - \expandafter\XINT@div@prepareB@di - \or \expandafter\XINT@div@prepareB@dii - \or \expandafter\XINT@div@prepareB@diii - \else \expandafter\XINT@div@prepareB@div - \fi + \ifcase \numexpr #1-#2\relax + \expandafter\XINT@div@prepareB@d + \or + \expandafter\XINT@div@prepareB@di + \or + \expandafter\XINT@div@prepareB@dii + \or + \expandafter\XINT@div@prepareB@diii + \fi {#1}% }% -\def\XINT@div@prepareB@di {\XINT@div@prepareB@e {}{0}}% -\def\XINT@div@prepareB@dii {\XINT@div@prepareB@e {0}{1}}% -\def\XINT@div@prepareB@diii {\XINT@div@prepareB@e {00}{2}}% -\def\XINT@div@prepareB@div {\XINT@div@prepareB@e {000}{3}}% +\def\XINT@div@prepareB@d {\XINT@div@prepareB@e {}{0}}% +\def\XINT@div@prepareB@di {\XINT@div@prepareB@e {0}{1}}% +\def\XINT@div@prepareB@dii {\XINT@div@prepareB@e {00}{2}}% +\def\XINT@div@prepareB@diii {\XINT@div@prepareB@e {000}{3}}% \def\XINT@div@prepareB@e #1#2#3#4% {% \XINT@div@prepareB@f #4#1\Z {#3}{#2}{#1}% @@ -2422,27 +2423,24 @@ }% \def\XINT@div@prepareA@b #1% {% - \expandafter\XINT@div@prepareA@c\expandafter - {\the\numexpr 4*((#1+1)/4)}{#1}% + \expandafter\XINT@div@prepareA@c\expandafter{\the\numexpr 4*((#1+1)/4)}{#1}% }% \def\XINT@div@prepareA@c #1#2% {% - \expandafter\XINT@div@prepareA@d \expandafter - {\the\numexpr #1-#2}{#1}% -}% -\def\XINT@div@prepareA@d #1% -{% - \ifcase #1 - \expandafter\XINT@div@prepareA@di - \or \expandafter\XINT@div@prepareA@dii - \or \expandafter\XINT@div@prepareA@diii - \else \expandafter\XINT@div@prepareA@div - \fi + \ifcase \numexpr #1-#2\relax + \expandafter\XINT@div@prepareA@d + \or + \expandafter\XINT@div@prepareA@di + \or + \expandafter\XINT@div@prepareA@dii + \or + \expandafter\XINT@div@prepareA@diii + \fi {#1}% }% -\def\XINT@div@prepareA@di {\XINT@div@prepareA@e {}}% -\def\XINT@div@prepareA@dii {\XINT@div@prepareA@e {0}}% -\def\XINT@div@prepareA@diii {\XINT@div@prepareA@e {00}}% -\def\XINT@div@prepareA@div {\XINT@div@prepareA@e {000}}% +\def\XINT@div@prepareA@d {\XINT@div@prepareA@e {}}% +\def\XINT@div@prepareA@di {\XINT@div@prepareA@e {0}}% +\def\XINT@div@prepareA@dii {\XINT@div@prepareA@e {00}}% +\def\XINT@div@prepareA@diii {\XINT@div@prepareA@e {000}}% \def\XINT@div@prepareA@e #1#2#3% {% \XINT@div@startswitch {#1#3}{#2}% @@ -2460,24 +2458,22 @@ }% \def\XINT@div@finished@a #1#2#3% {% - \expandafter \XINT@div@finished@b \expandafter - {\romannumeral0\XINT@cuz {#1}}% + \expandafter\XINT@div@finished@b\expandafter {\romannumeral0\XINT@cuz {#1}}% }% \def\XINT@div@finished@b #1#2#3#4#5% {% \ifcase \XINT@Sgn {#1} \xint@afterfi {\XINT@div@finished@c {0}}% \or - \xint@afterfi {\expandafter\XINT@div@finished@c - \expandafter - {\romannumeral0\XINT@dsh@checksignx #5\Z {#1}}}% + \xint@afterfi {\expandafter\XINT@div@finished@c\expandafter + {\romannumeral0\XINT@dsh@checksignx #5\Z {#1}}% + }% \fi {#2}% }% \def\XINT@div@finished@c #1#2% {% - \expandafter\space\expandafter - {\romannumeral0\XINT@rev@andcuz {#2}}{#1}% + \expandafter\space\expandafter {\romannumeral0\XINT@rev@andcuz {#2}}{#1}% }% \def\XINT@div@final@a #1% {% @@ -2539,14 +2535,14 @@ \XINT@div@final@f {#1}% {\romannumeral0\XINT@add@A 0{}#2000\W\X\Y\Z #4\W\X\Y\Z }% }% -\def\XINT@div@final@f #1#2#3% R,Q à développer,c +\def\XINT@div@final@f #1#2#3% R,Q \`a d\'evelopper,c {% \ifcase \XINT@Sgn {#1} \xint@afterfi {\XINT@div@final@end {0}}% \or - \xint@afterfi {\expandafter\XINT@div@final@end - \expandafter % pas de leading zeros dans #1=R - {\romannumeral0\XINT@dsh@checksignx #3\Z {#1}}}% + \xint@afterfi {\expandafter\XINT@div@final@end\expandafter + {\romannumeral0\XINT@dsh@checksignx #3\Z {#1}}% + }% \fi {#2}% }% @@ -2644,8 +2640,7 @@ \def\XINT@div@body@l #1#2#3#4#5#6#7% {% \expandafter\XINT@div@body@m - \the\numexpr 100000000+#2\relax - {#6}{#3}{#7}{#1#5}{#4}% + \the\numexpr 100000000+#2\relax {#6}{#3}{#7}{#1#5}{#4}% }% \def\XINT@div@body@m #1#2#3#4#5#6#7#8#9% {% @@ -2777,7 +2772,7 @@ \def\xintiFDg {\romannumeral0\xintifdg }% \def\xintifdg #1% {% - \expandafter\expandafter\expandafter\XINT@fdg #1\W\Z + \expandafter\XINT@fdg \romannumeral-`0#1\W\Z }% \let\xintFDg\xintiFDg \let\xintfdg\xintifdg \def\XINT@FDg #1{\romannumeral0\XINT@fdg #1\W\Z }% @@ -2792,10 +2787,7 @@ \def\xintiLDg {\romannumeral0\xintildg }% \def\xintildg #1% {% - \expandafter\expandafter\expandafter - \XINT@ldg - \expandafter\expandafter\expandafter - {#1}% + \expandafter\XINT@ldg\expandafter {\romannumeral-`0#1}% }% \let\xintLDg\xintiLDg \let\xintldg\xintildg \def\XINT@LDg #1{\romannumeral0\XINT@ldg {#1}}% @@ -2845,7 +2837,7 @@ \def\xintDSL {\romannumeral0\xintdsl }% \def\xintdsl #1% {% - \expandafter\expandafter\expandafter\XINT@dsl #1\Z + \expandafter\XINT@dsl \romannumeral-`0#1\Z }% \def\XINT@DSL #1{\romannumeral0\XINT@dsl #1\Z }% \def\XINT@dsl #1% @@ -2857,16 +2849,12 @@ \def\xintDSR {\romannumeral0\xintdsr }% \def\xintdsr #1% {% - \expandafter\expandafter\expandafter - \XINT@dsr@a - \expandafter\expandafter\expandafter - {#1}\W\Z + \expandafter\XINT@dsr@a\expandafter {\romannumeral-`0#1}\W\Z }% \def\XINT@DSR #1{\romannumeral0\XINT@dsr@a {#1}\W\Z }% \def\XINT@dsr@a {% - \expandafter\XINT@dsr@b - \romannumeral0\XINT@rev + \expandafter\XINT@dsr@b\romannumeral0\XINT@rev }% \def\XINT@dsr@b #1#2#3\Z {% @@ -2880,7 +2868,7 @@ \def\xintDSHr {\romannumeral0\xintdshr }% \def\xintdshr #1% {% - \expandafter\expandafter\expandafter\XINT@dshr@checkxpositive #1\Z + \expandafter\XINT@dshr@checkxpositive \the\numexpr #1\relax\Z }% \def\XINT@dshr@checkxpositive #1% {% @@ -2893,21 +2881,16 @@ \def\XINT@dshr@xzeroorneg #1\Z #2{ 0}% \def\XINT@dshr@xpositive #1\Z {% - \expandafter\xint@secondoftwo@andstop - \romannumeral0\xintdsx {#1}% + \expandafter\xint@secondoftwo@andstop\romannumeral0\xintdsx {#1}% }% \def\xintDSH {\romannumeral0\xintdsh }% \def\xintdsh #1#2% {% - \expandafter\expandafter\expandafter - \xint@dsh - \expandafter\expandafter\expandafter - {#2}{#1}% + \expandafter\xint@dsh\expandafter {\romannumeral-`0#2}{#1}% }% \def\xint@dsh #1#2% {% - \expandafter\expandafter\expandafter - \XINT@dsh@checksignx #2\Z {#1}% + \expandafter\XINT@dsh@checksignx \the\numexpr #2\relax\Z {#1}% }% \def\XINT@dsh@checksignx #1% {% @@ -2926,14 +2909,11 @@ \def\xintDSx {\romannumeral0\xintdsx }% \def\xintdsx #1#2% {% - \expandafter\expandafter\expandafter - \xint@dsx - \expandafter\expandafter\expandafter - {#2}{#1}% + \expandafter\xint@dsx\expandafter {\romannumeral-`0#2}{#1}% }% \def\xint@dsx #1#2% {% - \expandafter\expandafter\expandafter\XINT@dsx@checksignx #2\Z {#1}% + \expandafter\XINT@dsx@checksignx \the\numexpr #2\relax\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}}% @@ -2952,55 +2932,36 @@ }% \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}% + \xint@zero #1\XINT@dsx@xisNeg@Azero 0% + \XINT@dsx@xisNeg@checkx {#3}{#3}\Z {#1#2}% }% -\def\XINT@dsx@xisNeg@Azero #1#2#3#4#5#6#7#8{ 0}% +\def\XINT@dsx@xisNeg@Azero #1\Z #2{ 0}% \def\XINT@dsx@xisNeg@checkx #1% {% - \ifnum #1> 9 - \xint@afterfi {\xintError:TooBigDecimalShift\XINT@dsx@toobigx }% + \ifnum #1> 999999999 + \xint@afterfi + {\xintError:TooBigDecimalShift + \expandafter\space\expandafter 0\xint@gobble@iii }% \else \expandafter \XINT@dsx@zeroloop \fi }% -\def\XINT@dsx@toobigx #1#2#3{ 0}% \def\XINT@dsx@zeroloop #1% {% - \ifcase #1 - \XINT@dsx@exit - \or - \XINT@dsx@exiti - \or - \XINT@dsx@exitii - \or - \XINT@dsx@exitiii - \or - \XINT@dsx@exitiv - \or - \XINT@dsx@exitv - \or - \XINT@dsx@exitvi - \or - \XINT@dsx@exitvii - \else - \xint@afterfi - {\expandafter - \XINT@dsx@zeroloop - \expandafter {\the\numexpr #1-8}00000000% - }% - \fi + \ifnum #1<9 \XINT@dsx@exita\fi + \expandafter\XINT@dsx@zeroloop\expandafter + {\the\numexpr #1-8}00000000% +}% +\def\XINT@dsx@exita\fi\expandafter\XINT@dsx@zeroloop +{% + \fi\expandafter\XINT@dsx@exitb +}% +\def\XINT@dsx@exitb #1% +{% + \expandafter\expandafter\expandafter + \XINT@dsx@addzeros\csname xint@gobble@\romannumeral -#1\endcsname }% -\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@addzeros #1\Z #2{ #2#1}% \def\XINT@dsx@xisPos #1\Z #2% {% \XINT@dsx@checksignA #2\Z {#1}% @@ -3074,14 +3035,11 @@ }% \def\xint@split #1#2% {% - \expandafter\expandafter\expandafter - \XINT@split@checksizex - \expandafter\expandafter\expandafter - {#2}{#1}% + \expandafter\XINT@split@checksizex\expandafter{\the\numexpr #2}{#1}% }% -\def\XINT@split@checksizex #1% +\def\XINT@split@checksizex #1% 999999999 is anyhow very big, could be reduced {% - \ifnum\XINT@Len {#1} > 9 + \ifnum\numexpr\XINT@Abs{#1}\relax > 999999999 \xint@afterfi {\xintError:TooBigDecimalSplit\XINT@split@bigx }% \else \expandafter\XINT@split@xfork @@ -3105,77 +3063,51 @@ \xint@UDkrof }% \def\XINT@split@zerosplit #1\Z #2{ {#2}{}}% -\def\XINT@split@fromleft #1\Z #2% +\def\XINT@split@fromleft #1\Z #2% {% \XINT@split@fromleft@loop {#1}{}#2\W\W\W\W\W\W\W\W\Z }% \def\XINT@split@fromleft@loop #1% {% - \ifcase #1 - \XINT@split@fromleft@endsplit - \or - \XINT@split@fromleft@one@andend - \or - \XINT@split@fromleft@two@andend - \or - \XINT@split@fromleft@three@andend - \or - \XINT@split@fromleft@four@andend - \or - \XINT@split@fromleft@five@andend - \or - \XINT@split@fromleft@six@andend - \or - \XINT@split@fromleft@seven@andend - \else - \expandafter \XINT@split@fromleft@loop@perhaps - \expandafter - {\the\numexpr #1-8\expandafter\expandafter\expandafter }% - \expandafter - \XINT@split@fromleft@eight - \fi -}% -\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}% + \ifnum #1<8 \XINT@split@fromleft@exita\fi + \expandafter\XINT@split@fromleft@loop@perhaps\expandafter + {\the\numexpr #1-8\expandafter}\XINT@split@fromleft@eight }% +\def\XINT@split@fromleft@eight #1#2#3#4#5#6#7#8#9{#9{#1#2#3#4#5#6#7#8#9}}% \def\XINT@split@fromleft@loop@perhaps #1#2% {% - \xint@w #2\XINT@split@fromleft@toofar\W \XINT@split@fromleft@loop - {#1}% + \xint@w #2\XINT@split@fromleft@toofar\W\XINT@split@fromleft@loop {#1}% }% -\def\XINT@split@fromleft@toofar\W \XINT@split@fromleft@loop #1#2#3\Z +\def\XINT@split@fromleft@toofar\W\XINT@split@fromleft@loop #1#2#3\Z {% \XINT@split@fromleft@toofar@b #2\Z }% \def\XINT@split@fromleft@toofar@b #1\W #2\Z { {#1}{}}% -\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 #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 #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 #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 #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 #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 #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@exita\fi + \expandafter\XINT@split@fromleft@loop@perhaps\expandafter #1#2% + {\fi \XINT@split@fromleft@exitb #1}% +\def\XINT@split@fromleft@exitb\the\numexpr #1-8\expandafter +{% + \csname XINT@split@fromleft@endsplit@\romannumeral #1\endcsname +}% +\def\XINT@split@fromleft@endsplit@ #1#2\W #3\Z { {#1}{#2}}% +\def\XINT@split@fromleft@endsplit@i #1#2% + {\XINT@split@fromleft@checkiftoofar #2{#1#2}}% +\def\XINT@split@fromleft@endsplit@ii #1#2#3% + {\XINT@split@fromleft@checkiftoofar #3{#1#2#3}}% +\def\XINT@split@fromleft@endsplit@iii #1#2#3#4% + {\XINT@split@fromleft@checkiftoofar #4{#1#2#3#4}}% +\def\XINT@split@fromleft@endsplit@iv #1#2#3#4#5% + {\XINT@split@fromleft@checkiftoofar #5{#1#2#3#4#5}}% +\def\XINT@split@fromleft@endsplit@v #1#2#3#4#5#6% + {\XINT@split@fromleft@checkiftoofar #6{#1#2#3#4#5#6}}% +\def\XINT@split@fromleft@endsplit@vi #1#2#3#4#5#6#7% + {\XINT@split@fromleft@checkiftoofar #7{#1#2#3#4#5#6#7}}% +\def\XINT@split@fromleft@endsplit@vii #1#2#3#4#5#6#7#8% + {\XINT@split@fromleft@checkiftoofar #8{#1#2#3#4#5#6#7#8}}% \def\XINT@split@fromleft@checkiftoofar #1#2#3\W #4\Z {% - \xint@w #1\XINT@split@fromleft@wenttoofar\W - \space {#2}{#3}% + \xint@w #1\XINT@split@fromleft@wenttoofar\W\space {#2}{#3}% }% \def\XINT@split@fromleft@wenttoofar\W\space #1% {% @@ -3193,72 +3125,48 @@ }% \def\XINT@split@fromright@loop #1% {% - \ifcase #1 - \expandafter\XINT@split@fromright@endsplit - \or - \XINT@split@fromright@one@andend - \or - \XINT@split@fromright@two@andend - \or - \XINT@split@fromright@three@andend - \or - \XINT@split@fromright@four@andend - \or - \XINT@split@fromright@five@andend - \or - \XINT@split@fromright@six@andend - \or - \XINT@split@fromright@seven@andend - \else - \expandafter \XINT@split@fromright@loop@perhaps - \expandafter - {\the\numexpr - #1-8\expandafter\expandafter\expandafter }% - \expandafter - \XINT@split@fromright@eight - \fi + \ifnum #1<8 \XINT@split@fromright@exita\fi + \expandafter\XINT@split@fromright@loop@perhaps\expandafter + {\the\numexpr #1-8\expandafter }\XINT@split@fromright@eight }% -\def\XINT@split@fromright@endsplit #1#2\W #3\Z #4% +\def\XINT@split@fromright@eight #1#2#3#4#5#6#7#8#9{#9{#9#8#7#6#5#4#3#2#1}}% +\def\XINT@split@fromright@loop@perhaps #1#2% {% - \expandafter\space\expandafter {\romannumeral0\XINT@rev{#2}}{#1}% + \xint@w #2\XINT@split@fromright@toofar\W + \XINT@split@fromright@loop {#1}% }% -\def\XINT@split@fromright@eight #1#2#3#4#5#6#7#8#9% +\def\XINT@split@fromright@toofar\W\XINT@split@fromright@loop #1#2#3\Z { {}}% +\def\XINT@split@fromright@exita\fi + \expandafter\XINT@split@fromright@loop@perhaps\expandafter #1#2% + {\fi \XINT@split@fromright@exitb #1}% +\def\XINT@split@fromright@exitb\the\numexpr #1-8\expandafter {% - #9{#9#8#7#6#5#4#3#2#1}% + \csname XINT@split@fromright@endsplit@\romannumeral #1\endcsname }% -\def\XINT@split@fromright@loop@perhaps #1#2% +\def\XINT@split@fromright@endsplit@ #1#2\W #3\Z #4% {% - \xint@w #2\XINT@split@fromright@toofar\W\XINT@split@fromright@loop - {#1}% + \expandafter\space\expandafter {\romannumeral0\XINT@rev{#2}}{#1}% }% -\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 #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 #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 #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 #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 #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 #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@endsplit@i #1#2% + {\XINT@split@fromright@checkiftoofar #2{#2#1}}% +\def\XINT@split@fromright@endsplit@ii #1#2#3% + {\XINT@split@fromright@checkiftoofar #3{#3#2#1}}% +\def\XINT@split@fromright@endsplit@iii #1#2#3#4% + {\XINT@split@fromright@checkiftoofar #4{#4#3#2#1}}% +\def\XINT@split@fromright@endsplit@iv #1#2#3#4#5% + {\XINT@split@fromright@checkiftoofar #5{#5#4#3#2#1}}% +\def\XINT@split@fromright@endsplit@v #1#2#3#4#5#6% + {\XINT@split@fromright@checkiftoofar #6{#6#5#4#3#2#1}}% +\def\XINT@split@fromright@endsplit@vi #1#2#3#4#5#6#7% + {\XINT@split@fromright@checkiftoofar #7{#7#6#5#4#3#2#1}}% +\def\XINT@split@fromright@endsplit@vii #1#2#3#4#5#6#7#8% + {\XINT@split@fromright@checkiftoofar #8{#8#7#6#5#4#3#2#1}}% \def\XINT@split@fromright@checkiftoofar #1% {% \xint@w #1\XINT@split@fromright@wenttoofar\W - \XINT@split@fromright@endsplit + \XINT@split@fromright@endsplit@ }% -\def\XINT@split@fromright@wenttoofar\W\XINT@split@fromright@endsplit #1\Z #2% +\def\XINT@split@fromright@wenttoofar\W\XINT@split@fromright@endsplit@ #1\Z #2% { {}{#2}}% \XINT@restorecatcodes@endinput% \endinput |