summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-04-02 22:25:48 +0000
committerKarl Berry <karl@freefriends.org>2013-04-02 22:25:48 +0000
commit6574ff6201be11b02c528187bda322fe9ac79d57 (patch)
tree3c5575c3e1f4108399d79f7fdc7c8186694f11bc /Master/texmf-dist/tex/generic/xint
parent45ce7e2312e083df79b2c4ec11801ed2277c9821 (diff)
xinit (2apr13)
git-svn-id: svn://tug.org/texlive/trunk@29610 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xint.sty3209
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintgcd.sty545
2 files changed, 3754 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty
new file mode 100644
index 00000000000..6e8aa246253
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xint/xint.sty
@@ -0,0 +1,3209 @@
+%%
+%% This is file `xint.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xint.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from xint.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.)
+%%----------------------------------------------------------------
+%% xint: Expandable operations on long numbers
+%% xintgcd: Euclidean algorithm 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 % :
+ \expandafter\let\expandafter\x\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{xint}{\numexpr not available, aborting input}%
+ \aftergroup\endinput
+ \else
+ \ifx\x\relax % plain-TeX, first loading
+ \else
+ \def\empty {}%
+ \ifx\x\empty % LaTeX, first loading,
+ % variable is initialized, but \ProvidesPackage not yet seen
+ \else
+ \y{xint}{I was already loaded, aborting input}%
+ \aftergroup\endinput
+ \fi
+ \fi
+ \fi
+ \def\ChangeCatcodesIfInputNotAborted
+ {%
+ \endgroup
+ \edef\XINT@restorecatcodes@endinput
+ {%
+ \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
+ }%
+ \def\XINT@setcatcodes
+ {%
+ \catcode61=12 % =
+ \catcode32=10 % space
+ \catcode13=5 % ^^M
+ \endlinechar=13 %
+ \catcode123=1 % {
+ \catcode125=2 % }
+ \catcode64=11 % @
+ \catcode35=6 % #
+ \catcode44=12 % ,
+ \catcode45=12 % -
+ \catcode46=12 % .
+ \catcode58=11 % : (made letter for error cs)
+ \catcode60=12 % <
+ \catcode62=12 % >
+ \catcode43=12 % +
+ \catcode42=12 % *
+ \catcode40=12 % (
+ \catcode41=12 % )
+ \catcode47=12 % /
+ }%
+ \XINT@setcatcodes
+ }%
+\ChangeCatcodesIfInputNotAborted
+\begingroup
+ \catcode91=12 % [
+ \catcode93=12 % ]
+ \catcode58=12 % : (does not really matter, was letter)
+ \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@xint.sty\endcsname
+\ProvidesPackage{xint}%
+ [2013/03/28 v1.0 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{}%
+\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@r #1\R {}%
+\def\xint@w #1\W {}%
+\def\xint@z #1\Z {}%
+\def\xint@zero #10{}%
+\def\xint@one #11{}%
+\def\xint@minus #1-{}%
+\def\xint@relax #1\relax {}%
+\def\xint@quatrezeros #10000{}%
+\def\xint@bracedundef {\xint@undef }%
+\def\xint@UDzerofork #10\dummy #2#3\xint@UDforkzero {#2}%
+\def\xint@UDzerosfork #100\dummy #2#3\xint@UDforkzeros {#2}%
+\def\xint@UDsignfork #1-\dummy #2#3\xint@UDforksign {#2}%
+\def\xint@UDsignsfork #1--\dummy #2#3\xint@UDforksigns {#2}%
+\def\xint@UDzerominusfork #10-\dummy #2#3\xint@UDforkminuszero {#2}%
+\def\xint@afterfi #1#2\fi {\fi #1}%
+\def\xintRev {\romannumeral0\xintrev }%
+\def\xintrev #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@rev
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@rev #1%
+{%
+ \XINT@rev@fork #1\Z
+}%
+\def\XINT@rev@fork #1#2%
+{%
+ \xint@UDsignfork
+ #1\dummy \XINT@rev@negative
+ -\dummy \XINT@rev@nonnegative
+ \xint@UDforksign
+ #1#2%
+}%
+\def\XINT@rev@negative #1#2\Z
+{%
+ \expandafter
+ \space
+ \expandafter
+ -%
+ \romannumeral0\XINT@rev {#2}%
+}%
+\def\XINT@rev@nonnegative #1\Z
+{%
+ \XINT@rev {#1}%
+}%
+\def\XINT@Rev {\romannumeral0\XINT@rev }%
+\let\xintReverseOrder \XINT@Rev
+\def\XINT@rev #1%
+{%
+ \XINT@rord@main {}#1%
+ \xint@UNDEF
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@UNDEF
+}%
+\def\XINT@rord@main #1#2#3#4#5#6#7#8#9%
+{%
+ \XINT@strip@undef #9\XINT@rord@cleanup\xint@undef
+ \XINT@rord@main {#9#8#7#6#5#4#3#2#1}%
+}%
+\def\XINT@rord@cleanup\xint@undef\XINT@rord@main #1#2\xint@UNDEF
+{%
+ \expandafter\space\XINT@strip@UNDEF #1%
+}%
+\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%
+{%
+ \xint@r #9\XINT@RQ@end\R
+ \XINT@RQ {#9#8#7#6#5#4#3#2#1}%
+}%
+\def\XINT@RQ@end\R\XINT@RQ #1#2\Z
+{%
+ \XINT@RQ@end@ #1\Z
+}%
+\def\XINT@RQ@end@ #1#2#3#4#5#6#7#8%
+{%
+ \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@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
+ \space
+ \the\numexpr #1#2#3#4\relax
+}%
+\def\xint@cleanupzeros@nospace #1#2#3#4%
+{%
+ \the\numexpr #1#2#3#4\relax
+}%
+\def\XINT@Rev@andcleanupzeros #1%
+{%
+ \romannumeral0\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
+}%
+\def\XINT@cuz #1%
+{%
+ \XINT@cuz@loop #1\W\W\W\W\W\W\W\Z%
+}%
+\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\xintNum {\romannumeral0\xintnum }%
+\def\xintnum #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@num
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\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\xintLen {\romannumeral0\xintlen }%
+\def\xintlen #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@length@fork #1\R\R\R\R\R\R\R\R\Z
+}%
+\def\XINT@Len #1{\romannumeral0\XINT@length@fork #1\R\R\R\R\R\R\R\R\Z }%
+\def\XINT@length@fork #1%
+{%
+ \expandafter\XINT@length@loop
+ \xint@UDsignfork
+ #1\dummy {{0}}%
+ -\dummy {{0}#1}%
+ \xint@UDforksign
+}%
+\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%
+{%
+ \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}%
+}%
+\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\xintAssign #1\to
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@assign@a #1{}\to
+}%
+\def\XINT@assign@a #1% attention to the # at the beginning of next line
+#{%
+ \def\xint@temp {#1}%
+ \ifx\empty\xint@temp
+ \expandafter\XINT@assign@b
+ \else
+ \expandafter\XINT@assign@B
+ \fi
+}%
+\def\XINT@assign@b #1#2\to #3%
+{%
+ \edef #3{#1}\def\xint@temp {#2}%
+ \ifx\empty\xint@temp
+ \else
+ \xint@afterfi{\XINT@assign@a #2\to }%
+ \fi
+}%
+\def\XINT@assign@B #1\to #2%
+{%
+ \edef #2{\xint@temp}%
+}%
+\def\xintRelaxArray #1%
+{%
+ \edef\xint@arrayname {\expandafter\xint@gobble\string #1}%
+ \expandafter\let\expandafter\xint@temp
+ \csname\xint@arrayname 0\endcsname
+ \count 255 0
+ \loop
+ \global\expandafter\let
+ \csname\xint@arrayname\the\count255\endcsname\relax
+ \ifnum \count 255 < \xint@temp
+ \advance\count 255 1
+ \repeat
+ \global\expandafter\let\csname\xint@arrayname 00\endcsname\relax
+ \global\let #1\relax
+}%
+\def\xintAssignArray #1\to #2%
+{%
+ \edef\xint@arrayname {\expandafter\xint@gobble\string #2}%
+ \count 255 0
+ \expandafter\expandafter\expandafter
+ \XINT@assignarray@loop #1\xint@undef
+ \csname\xint@arrayname 00\endcsname
+ \csname\xint@arrayname 0\endcsname
+ {\xint@arrayname}%
+ #2%
+}%
+\def\XINT@assignarray@loop #1%
+{%
+ \def\xint@temp {#1}%
+ \ifx\xint@bracedundef\xint@temp
+ \edef\xint@temp{\the\count 255 }%
+ \expandafter\let\csname\xint@arrayname0\endcsname\xint@temp
+ \expandafter\XINT@assignarray@end
+ \else
+ \advance\count 255 1
+ \expandafter\edef
+ \csname\xint@arrayname\the\count 255\endcsname{\xint@temp}%
+ \expandafter\XINT@assignarray@loop
+ \fi
+}%
+\def\XINT@assignarray@end {\expandafter\XINT@assignarray@@end }%
+\def\XINT@assignarray@@end #1%
+{%
+ \expandafter\XINT@assignarray@@@end\expandafter #1%
+}%
+\def\XINT@assignarray@@@end #1#2#3%
+{%
+ \expandafter\XINT@assignarray@@@@end
+ \expandafter #1\expandafter #2\expandafter{#3}%
+}%
+\def\XINT@assignarray@@@@end #1#2#3#4%
+{%
+ \def #4##1%
+ {\romannumeral0%
+ \expandafter\expandafter\expandafter
+ #1%
+ \expandafter\expandafter\expandafter
+ {##1}%
+ }%
+ \def #1##1%
+ {%
+ \ifnum ##1< 0
+ \xint@afterfi {\xintError:ArrayIndexIsNegative
+ \expandafter\space 0}%
+ \else
+ \xint@afterfi {%
+ \ifnum ##1> #2
+ \xint@afterfi {\xintError:ArrayIndexBeyondLimit
+ \expandafter\space 0}%
+ \else
+ \xint@afterfi
+ {\expandafter\expandafter\expandafter
+ \space\csname #3##1\endcsname}%
+ \fi}%
+ \fi
+ }%
+}%
+\let\xintDigitsOf\xintAssignArray
+\def\xintSgn {\romannumeral0\xintsgn }%
+\def\xintsgn #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@sgn #1\Z%
+}%
+\def\XINT@Sgn #1{\romannumeral0\XINT@sgn #1\Z }%
+\def\XINT@sgn #1%
+{%
+ \xint@xpxp@andstop
+ \xint@UDzerominusfork
+ #1-\dummy {\expandafter0}% zero
+ 0#1\dummy {\expandafter-\expandafter1}% n\'egatif
+ 0-\dummy {\expandafter1}% positif
+ \xint@UDforkminuszero
+ \xint@z
+}%
+\def\xintOpp {\romannumeral0\xintopp }%
+\def\xintopp #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@opp #1%
+}%
+\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
+ \xint@UDforkminuszero
+}%
+\def\xintAbs {\romannumeral0\xintabs }%
+\def\xintabs #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@abs #1%
+}%
+\def\XINT@Abs {\romannumeral0\XINT@abs }%
+\def\XINT@abs #1%
+{%
+ \xint@UDsignfork
+ #1\dummy \XINT@abs@isnegative
+ -\dummy \XINT@abs@isnonnegative
+ \xint@UDforksign
+ #1%
+}%
+\def\XINT@abs@isnegative #1{ }%
+\def\XINT@abs@isnonnegative #1{ #1}%
+\def\xintAdd {\romannumeral0\xintadd }%
+\def\xintadd #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@add
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@add #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@add@fork #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 }%
+\def\XINT@add@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@add@secondiszero
+ #3\dummy \XINT@add@firstiszero
+ 0\dummy
+ {\xint@UDsignsfork
+ #1#3\dummy \XINT@add@minusminus % #1 = #3 = -
+ #1-\dummy \XINT@add@minusplus % #1 = -
+ #3-\dummy \XINT@add@plusminus % #3 = -
+ --\dummy \XINT@add@plusplus
+ \xint@UDforksigns}%
+ \xint@UDforkzero
+ {#2}{#4}#1#3%
+}%
+\def\XINT@add@secondiszero #1#2#3#4{ #4#2}%
+\def\XINT@add@firstiszero #1#2#3#4{ #3#1}%
+\def\XINT@add@minusminus #1#2#3#4%
+{%
+ \expandafter\space\expandafter-%
+ \romannumeral0\XINT@add@pre {#2}{#1}%
+}%
+\def\XINT@add@minusplus #1#2#3#4%
+{%
+ \XINT@sub@pre {#4#2}{#1}%
+}%
+\def\XINT@add@plusminus #1#2#3#4%
+{%
+ \XINT@sub@pre {#3#1}{#2}%
+}%
+\def\XINT@add@plusplus #1#2#3#4%
+{%
+ \XINT@add@pre {#4#2}{#3#1}%
+}%
+\def\XINT@add@pre #1%
+{%
+ \expandafter\XINT@add@@pre\expandafter{%
+ \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z
+ }%
+}%
+\def\XINT@add@@pre #1#2%
+{%
+ \expandafter\XINT@add@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@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%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@sub
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@sub #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@sub@fork #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 }%
+\def\XINT@sub@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDsignsfork
+ #1#3\dummy \XINT@sub@minusminus
+ #1-\dummy \XINT@sub@minusplus % attention, #3=0 possible
+ #3-\dummy \XINT@sub@plusminus % attention, #1=0 possible
+ --\dummy {\xint@UDzerofork
+ #1\dummy \XINT@sub@secondiszero
+ #3\dummy \XINT@sub@firstiszero
+ 0\dummy \XINT@sub@plusplus
+ \xint@UDforkzero}%
+ \xint@UDforksigns
+ {#2}{#4}#1#3%
+}%
+\def\XINT@sub@secondiszero #1#2#3#4{ #4#2}%
+\def\XINT@sub@firstiszero #1#2#3#4{ -#3#1}%
+\def\XINT@sub@plusplus #1#2#3#4%
+{%
+ \XINT@sub@pre {#4#2}{#3#1}%
+}%
+\def\XINT@sub@minusminus #1#2#3#4%
+{%
+ \XINT@sub@pre {#1}{#2}%
+}%
+\def\XINT@sub@minusplus #1#2#3#4%
+{%
+ \xint@zero #4\xint@sub@mp0\XINT@add@pre {#4#2}{#1}%
+}%
+\def\xint@sub@mp0\XINT@add@pre #1#2{ #2}%
+\def\XINT@sub@plusminus #1#2#3#4%
+{%
+ \xint@zero #3\xint@sub@pm0\expandafter\space\expandafter-%
+ \romannumeral0\XINT@add@pre {#2}{#3#1}%
+}%
+\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
+ }%
+}%
+\def\XINT@sub@@pre #1#2%
+{%
+ \expandafter\XINT@sub@A
+ \expandafter1\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@sub@A #1#2#3\W\X\Y\Z #4#5#6#7%
+{%
+ \xint@w
+ #4\xint@sub@az
+ \W\XINT@sub@B #1{#4#5#6#7}{#2}#3\W\X\Y\Z
+}%
+\def\XINT@sub@B #1#2#3#4#5#6#7%
+{%
+ \xint@w
+ #4\xint@sub@bz
+ \W\XINT@sub@onestep #1#2{#7#6#5#4}{#3}%
+}%
+\def\XINT@sub@onestep #1#2#3#4#5#6%
+{\expandafter
+ \XINT@sub@backtoA\the\numexpr 11#5#4#3#2-#6+#1-1\relax.%
+}%
+\def\XINT@sub@backtoA #1#2#3.#4%
+{%
+ \XINT@sub@A #2{#3#4}%
+}%
+\def\xint@sub@bz
+ \W\XINT@sub@onestep #1#2#3#4#5#6#7%
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@sub@C % une retenue
+ 0\dummy \XINT@sub@D % pas de retenue
+ \xint@UDforkzero
+ {#7}#2#3#4#5%
+}%
+\def\XINT@sub@D #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@sub@C #1#2#3#4#5%
+{%
+ \xint@w
+ #2\xint@sub@cz
+ \W\XINT@sub@AC@onestep {#5#4#3#2}{#1}%
+}%
+\def\XINT@sub@AC@onestep #1%
+{\expandafter
+ \XINT@sub@backtoC\the\numexpr 11#1-1\relax.%
+}%
+\def\XINT@sub@backtoC #1#2#3.#4%
+{%
+ \XINT@sub@AC@checkcarry #2{#3#4}% la retenue va \^etre examin\'ee
+}%
+\def\XINT@sub@AC@checkcarry #1%
+{%
+ \xint@one #1\xint@sub@AC@nocarry 1\XINT@sub@C
+}%
+\def\xint@sub@AC@nocarry 1\XINT@sub@C #1#2\W\X\Y\Z
+{%
+ \expandafter
+ \XINT@cuz@loop
+ \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\W\W\W\W\W\W\W\Z
+}%
+\def\xint@sub@cz\W\XINT@sub@AC@onestep #1%
+{%
+ \XINT@cuz
+}%
+\def\xint@sub@az\W\XINT@sub@B #1#2#3#4#5#6#7%
+{%
+ \xint@w
+ #4\xint@sub@ez
+ \W\XINT@sub@Eenter #1{#3}#4#5#6#7%
+}%
+\def\XINT@sub@Eenter #1#2%
+{%
+ \expandafter
+ \XINT@sub@E\expandafter1\expandafter{\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
+ \W\X\Y\Z #1%
+}%
+\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}%
+}%
+\def\XINT@sub@Eonestep #1#2%
+{\expandafter
+ \XINT@sub@backtoE\the\numexpr 110000-#2+#1-1\relax.%
+}%
+\def\XINT@sub@backtoE #1#2#3.#4%
+{%
+ \XINT@sub@E #2{#3#4}%
+}%
+\def\xint@sub@F\W\XINT@sub@Eonestep #1#2#3#4%
+{%
+ \xint@sub@Fthreewayfork
+ #4#1\dummy {\XINT@sub@Fdec 0}% soustraire 1. Et faire signe -
+ #1#4\dummy {\XINT@sub@Finc 1}% additionner 1. Et faire signe -
+ 10\dummy \XINT@sub@DD % terminer. Mais avec signe -
+ \xint@sub@Fforkthreeway
+ {#3}%
+}%
+\def\xint@sub@Fthreewayfork #110\dummy #2#3\xint@sub@Fforkthreeway {#2}%
+\def\XINT@sub@DD
+{\expandafter\space\expandafter-\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}%
+}%
+\def\XINT@sub@Fdec@onestep #1#2%
+{\expandafter
+ \XINT@sub@backtoFdec\the\numexpr 11#2+#1-1\relax.%
+}%
+\def\XINT@sub@backtoFdec #1#2#3.#4%
+{%
+ \XINT@sub@Fdec #2{#3#4}%
+}%
+\def\xint@sub@Fdec@finish\W\XINT@sub@Fdec@onestep #1#2%
+{%
+ \expandafter\space\expandafter-\romannumeral0\XINT@cuz
+}%
+\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}%
+}%
+\def\XINT@sub@Finc@onestep #1#2%
+{\expandafter
+ \XINT@sub@backtoFinc\the\numexpr 10#2+#1\relax.%
+}%
+\def\XINT@sub@backtoFinc #1#2#3.#4%
+{%
+ \XINT@sub@Finc #2{#3#4}%
+}%
+\def\xint@sub@Finc@finish\W\XINT@sub@Finc@onestep #1#2#3%
+{%
+ \xint@UDzerofork
+ #1\dummy {\expandafter\space\expandafter-%
+ \xint@cleanupzeros@nospace}%
+ 0\dummy { -1}%
+ \xint@UDforkzero
+ #3%
+}%
+\def\xint@sub@ez\W\XINT@sub@Eenter #1%
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@sub@K % il y a une retenue
+ 0\dummy \XINT@sub@L % pas de retenue
+ \xint@UDforkzero
+}%
+\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
+ \XINT@sub@KK\expandafter1\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
+}%
+\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}%
+}%
+\def\XINT@sub@KK@onestep #1#2%
+{\expandafter
+ \XINT@sub@backtoKK\the\numexpr 110000-#2+#1-1\relax.%
+}%
+\def\XINT@sub@backtoKK #1#2#3.#4%
+{%
+ \XINT@sub@KK #2{#3#4}%
+}%
+\def\xint@sub@KK@finish\W\XINT@sub@KK@onestep #1#2#3%
+{%
+ \expandafter\space\expandafter-\romannumeral
+ 0\XINT@cuz@loop #3\W\W\W\W\W\W\W\Z
+}%
+\def\xintCmp {\romannumeral0\xintcmp }%
+\def\xintcmp #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@cmp
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@cmp #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@cmp@fork #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
+{%
+ \xint@UDsignsfork
+ #1#3\dummy \XINT@cmp@minusminus
+ #1-\dummy \XINT@cmp@minusplus
+ #3-\dummy \XINT@cmp@plusminus
+ --\dummy {\xint@UDzerosfork
+ #1#3\dummy \XINT@cmp@zerozero
+ #10\dummy \XINT@cmp@zeroplus
+ #30\dummy \XINT@cmp@pluszero
+ 00\dummy \XINT@cmp@plusplus
+ \xint@UDforkzeros}%
+ \xint@UDforksigns
+ {#2}{#4}#1#3%
+}%
+\def\XINT@cmp@minusplus #1#2#3#4{ 1}%
+\def\XINT@cmp@plusminus #1#2#3#4{ -1}%
+\def\XINT@cmp@zerozero #1#2#3#4{ 0}%
+\def\XINT@cmp@zeroplus #1#2#3#4{ 1}%
+\def\XINT@cmp@pluszero #1#2#3#4{ -1}%
+\def\XINT@cmp@plusplus #1#2#3#4%
+{%
+ \XINT@cmp@pre {#4#2}{#3#1}%
+}%
+\def\XINT@cmp@minusminus #1#2#3#4%
+{%
+ \XINT@cmp@pre {#1}{#2}%
+}%
+\def\XINT@cmp@pre #1%
+{%
+ \expandafter\XINT@cmp@@pre\expandafter{%
+ \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z
+ }%
+}%
+\def\XINT@cmp@@pre #1#2%
+{%
+ \expandafter\XINT@cmp@A
+ \expandafter1\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@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
+}%
+\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}%
+}%
+\def\XINT@cmp@onestep #1#2#3#4#5#6%
+{\expandafter
+ \XINT@cmp@backtoA\the\numexpr 11#5#4#3#2-#6+#1-1\relax.%
+}%
+\def\XINT@cmp@backtoA #1#2#3.#4%
+{%
+ \XINT@cmp@A #2{#3#4}%
+}%
+\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%
+}%
+\def\XINT@cmp@Eenter #1\Z { -1}%
+\def\xint@cmp@ez\W\XINT@cmp@Eenter #1%
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@cmp@K % il y a une retenue
+ 0\dummy \XINT@cmp@L % pas de retenue
+ \xint@UDforkzero
+}%
+\def\XINT@cmp@K #1\Z { -1}%
+\def\XINT@cmp@L #1{\XINT@OneIfPositive@main #1}%
+\def\XINT@OneIfPositive #1%
+{%
+ \XINT@OneIfPositive@main #1\W\X\Y\Z%
+}%
+\def\XINT@OneIfPositive@main #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
+}%
+\def\XINT@OneIfPositive@check #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%
+ {\XINT@OneIfPositive@main }%
+\def\xintGeq {\romannumeral0\xintgeq }%
+\def\xintgeq #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@geq
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@geq #1#2%
+{\expandafter\expandafter\expandafter
+ \XINT@geq@fork #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
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@geq@secondiszero % |#1#2|=0
+ #3\dummy \XINT@geq@firstiszero % |#1#2|>0
+ 0\dummy {\xint@UDsignsfork
+ #1#3\dummy \XINT@geq@minusminus
+ #1-\dummy \XINT@geq@minusplus
+ #3-\dummy \XINT@geq@plusminus
+ --\dummy \XINT@geq@plusplus
+ \xint@UDforksigns}%
+ \xint@UDforkzero
+ {#2}{#4}#1#3%
+}%
+\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@pre #1%
+{%
+ \expandafter\XINT@geq@@pre\expandafter{%
+ \romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z
+ }%
+}%
+\def\XINT@geq@@pre #1#2%
+{%
+ \expandafter\XINT@geq@A
+ \expandafter1\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@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
+}%
+\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}%
+}%
+\def\XINT@geq@onestep #1#2#3#4#5#6%
+{\expandafter
+ \XINT@geq@backtoA\the\numexpr 11#5#4#3#2-#6+#1-1\relax.%
+}%
+\def\XINT@geq@backtoA #1#2#3.#4%
+{%
+ \XINT@geq@A #2{#3#4}%
+}%
+\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%
+}%
+\def\XINT@geq@Eenter #1\W\X\Y\Z { 0}%
+\def\xint@geq@ez\W\XINT@geq@Eenter #1%
+{%
+ \xint@UDzerofork
+ #1\dummy { 0} % il y a une retenue
+ 0\dummy { 1} % pas de retenue
+ \xint@UDforkzero
+}%
+\def\xintMax {\romannumeral0\xintmax }%
+\def\xintmax #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@max
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@max #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@max@fork #2\Z #1\Z
+}%
+\def\XINT@Max #1#2{\romannumeral0\XINT@max@fork #2\Z #1\Z }%
+\def\XINT@max@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDsignsfork
+ #1#3\dummy \XINT@max@minusminus % A < 0, B < 0
+ #1-\dummy \XINT@max@minusplus % B < 0, A >= 0
+ #3-\dummy \XINT@max@plusminus % A < 0, B >= 0
+ --\dummy {\xint@UDzerosfork
+ #1#3\dummy \XINT@max@zerozero % A = B = 0
+ #10\dummy \XINT@max@zeroplus % B = 0, A > 0
+ #30\dummy \XINT@max@pluszero % A = 0, B > 0
+ 00\dummy \XINT@max@plusplus % A, B > 0
+ \xint@UDforkzeros}%
+ \xint@UDforksigns
+ {#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%
+{%
+ \ifodd\XINT@Geq {#4#2}{#3#1}
+ \xint@afterfi { #4#2}%
+ \else
+ \xint@afterfi { #3#1}%
+ \fi
+}%
+\def\XINT@max@minusminus #1#2#3#4%
+{%
+ \ifodd\XINT@Geq {#1}{#2}
+ \xint@afterfi { -#2}%
+ \else
+ \xint@afterfi { -#1}%
+ \fi
+}%
+\def\xintMin {\romannumeral0\xintmin }%
+\def\xintmin #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@min
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@min #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@min@fork #2\Z #1\Z
+}%
+\def\XINT@Min #1#2{\romannumeral0\XINT@min@fork #2\Z #1\Z }%
+\def\XINT@min@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDsignsfork
+ #1#3\dummy \XINT@min@minusminus % A < 0, B < 0
+ #1-\dummy \XINT@min@minusplus % B < 0, A >= 0
+ #3-\dummy \XINT@min@plusminus % A < 0, B >= 0
+ --\dummy {\xint@UDzerosfork
+ #1#3\dummy \XINT@min@zerozero % A = B = 0
+ #10\dummy \XINT@min@zeroplus % B = 0, A > 0
+ #30\dummy \XINT@min@pluszero % A = 0, B > 0
+ 00\dummy \XINT@min@plusplus % A, B > 0
+ \xint@UDforkzeros}%
+ \xint@UDforksigns
+ {#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@plusplus #1#2#3#4%
+{%
+ \ifodd\XINT@Geq {#4#2}{#3#1}
+ \xint@afterfi { #3#1}%
+ \else
+ \xint@afterfi { #4#2}%
+ \fi
+}%
+\def\XINT@min@minusminus #1#2#3#4%
+{%
+ \ifodd\XINT@Geq {#1}{#2}
+ \xint@afterfi { -#1}%
+ \else
+ \xint@afterfi { -#2}%
+ \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%
+{%
+ \expandafter\expandafter\expandafter
+ \xintsumexpr #1\relax
+}%
+\def\xintsumexpr #1%
+{%
+ \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%
+}%
+\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
+ \xint@UDforksign
+ #1%
+}%
+\def\XINT@sum@skipzeroinput #1\xint@UDforksign #2\Z #3#4%
+{%
+ \XINT@sum@xpxpnext {#3}{#4}%
+}%
+\def\XINT@sum@pushpos #1#2\Z #3#4%
+{%
+ \XINT@sum@xpxpnext {#3{#1#2}}{#4}%
+}%
+\def\XINT@sum@pushneg #1#2\Z #3#4%
+{%
+ \XINT@sum@xpxpnext {#3}{#4{#2}}%
+}%
+\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%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@mul
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@mul #1#2%
+{\expandafter\expandafter\expandafter
+ \XINT@mul@fork #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
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@mul@zero
+ #3\dummy \XINT@mul@zero
+ 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
+ \xint@UDforksigns}%
+ \xint@UDforkzero
+ {#2}{#4}#1#3%
+}%
+\def\XINT@mul@zero #1#2#3#4{ 0}%
+\def\XINT@mul@minusminus #1#2#3#4%
+{%
+ \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@minusplus #1#2#3#4%
+{%
+ \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
+}%
+\def\XINT@mul@plusminus #1#2#3#4%
+{%
+ \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
+}%
+\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}%
+}%
+\def\xint@mul@add@az\W\XINT@mul@add@AB #1#2%
+{%
+ \XINT@mul@add@AC@checkcarry #1%
+}%
+\def\XINT@mul@add@AB #1#2#3#4\W\X\Y\Z #5#6#7#8%
+{%
+ \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
+}%
+\def\xint@mul@add@AC@nocarry 0\XINT@mul@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@mul@add@C #1#2#3#4#5%
+{%
+ \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.%
+}%
+\def\XINT@mul@add@CC #1#2#3.#4%
+{%
+ \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.%
+}%
+\def\XINT@mul@add@CDw #1.#2#3\X\Y\Z
+{%
+ \XINT@mul@add@end #1#3%
+}%
+\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@add@CDx #1.#2#3\Y\Z
+{%
+ \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.%
+}%
+\def\XINT@mul@add@CDy #1.#2#3\Z
+{%
+ \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
+}%
+\def\XINT@mul@Ar #1#2#3#4#5#6%
+{%
+ \xint@z #6\xint@mul@br\Z\XINT@mul@Br #1{#6#5#4#3}{#2}%
+}%
+\def\xint@mul@br\Z\XINT@mul@Br #1#2%
+{%
+ \XINT@sum@AC@checkcarry #1%
+}%
+\def\XINT@mul@Br #1#2#3#4\W\X\Y\Z #5#6#7#8%
+{\expandafter
+ \XINT@mul@ABEAr\the\numexpr #1+10#2+#8#7#6#5\relax.{#3}#4\W\X\Y\Z
+}%
+\def\XINT@mul@ABEAr #1#2#3#4#5#6.#7%
+{%
+ \XINT@mul@Ar #2{#7#6#5#4#3}%
+}%
+\def\XINT@mul@Mr #1%
+{%
+ \expandafter
+ \XINT@mul@Mr@checkifzeroorone
+ \expandafter{\the\numexpr #1\relax}%
+}%
+\def\XINT@mul@Mr@checkifzeroorone #1%
+{%
+ \ifcase #1
+ \expandafter\XINT@mul@Mr@zero
+ \or
+ \expandafter\XINT@mul@Mr@one
+ \else
+ \expandafter\XINT@mul@Nr
+ \fi
+ {0000}{}{#1}%
+}%
+\def\XINT@mul@Mr@zero #1\Z\Z\Z\Z { 0000}%
+\def\XINT@mul@Mr@one #1#2#3#4\Z\Z\Z\Z { #4}%
+\def\XINT@mul@Nr #1#2#3#4#5#6#7%
+{%
+ \xint@z #4\xint@mul@pr\Z\XINT@mul@Pr {#1}{#3}{#7#6#5#4}{#2}{#3}%
+}%
+\def\XINT@mul@Pr #1#2#3%
+{\expandafter
+ \XINT@mul@Lr\the\numexpr 10000#1+#2*#3\relax
+}%
+\def\XINT@mul@Lr 1#1#2#3#4#5#6#7#8#9%
+{%
+ \XINT@mul@Nr {#1#2#3#4}{#9#8#7#6#5}%
+}%
+\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}%
+}%
+\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\relax}%
+}%
+\def\XINT@mul@M@checkifzeroorone #1%
+{%
+ \ifcase #1
+ \expandafter\XINT@mul@M@zero
+ \or
+ \expandafter\XINT@mul@M@one
+ \else
+ \expandafter\XINT@mul@N
+ \fi
+ {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 {%
+ \expandafter
+ \xint@cleanupzeros@andstop
+ \romannumeral0\XINT@rev{#4}%
+}%
+\def\XINT@mul@N #1#2#3#4#5#6#7%
+{%
+ \xint@z #4\xint@mul@p\Z\XINT@mul@P {#1}{#3}{#7#6#5#4}{#2}{#3}%
+}%
+\def\XINT@mul@P #1#2#3%
+{\expandafter
+ \XINT@mul@L\the\numexpr 10000#1+#2*#3\relax
+}%
+\def\XINT@mul@L 1#1#2#3#4#5#6#7#8#9%
+{%
+ \XINT@mul@N {#1#2#3#4}{#5#6#7#8#9}%
+}%
+\def\xint@mul@p\Z\XINT@mul@P #1#2#3#4#5%
+{%
+ \XINT@mul@M@end #1#4%
+}%
+\def\XINT@mul@M@end #1#2#3#4#5#6#7#8%
+{\expandafter\space
+ \the\numexpr #1#2#3#4#5#6#7#8\relax
+}%
+\def\XINT@mul@enter #1\W\X\Y\Z #2#3#4#5%
+{%
+ \xint@w
+ #5\xint@mul@enterw
+ #4\xint@mul@enterx
+ #3\xint@mul@entery
+ #2\xint@mul@enterz
+ \W\XINT@mul@start {#2#3#4#5}#1\W\X\Y\Z
+}%
+\def\xint@mul@enterw
+ #1\xint@mul@enterx
+ #2\xint@mul@entery
+ #3\xint@mul@enterz
+ \W\XINT@mul@start #4#5\W\X\Y\Z \X\Y\Z
+{%
+ \XINT@mul@M {#3#2#1}#5\Z\Z\Z\Z
+}%
+\def\xint@mul@enterx
+ #1\xint@mul@entery
+ #2\xint@mul@enterz
+ \W\XINT@mul@start #3#4\W\X\Y\Z \Y\Z
+{%
+ \XINT@mul@M {#2#1}#4\Z\Z\Z\Z
+}%
+\def\xint@mul@entery
+ #1\xint@mul@enterz
+ \W\XINT@mul@start #2#3\W\X\Y\Z \Z
+{%
+ \XINT@mul@M {#1}#3\Z\Z\Z\Z
+}%
+\def\XINT@mul@start #1#2\W\X\Y\Z
+{\expandafter
+ \XINT@mul@main \expandafter
+ {\romannumeral0\XINT@mul@Mr {#1}#2\Z\Z\Z\Z}#2\W\X\Y\Z
+}%
+\def\XINT@mul@main #1#2\W\X\Y\Z #3#4#5#6%
+{%
+ \xint@w
+ #6\xint@mul@mainw
+ #5\xint@mul@mainx
+ #4\xint@mul@mainy
+ #3\xint@mul@mainz
+ \W\XINT@mul@compute {#1}{#3#4#5#6}#2\W\X\Y\Z
+}%
+\def\XINT@mul@compute #1#2#3\W\X\Y\Z
+{\expandafter
+ \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
+}%
+\def\xint@mul@mainw
+ #1\xint@mul@mainx
+ #2\xint@mul@mainy
+ #3\xint@mul@mainz
+ \W\XINT@mul@compute #4#5#6\W\X\Y\Z \X\Y\Z
+{%
+ \expandafter
+ \XINT@mul@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@mul@mainx
+ #1\xint@mul@mainy
+ #2\xint@mul@mainz
+ \W\XINT@mul@compute #3#4#5\W\X\Y\Z \Y\Z
+{%
+ \expandafter
+ \XINT@mul@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@mul@mainy
+ #1\xint@mul@mainz
+ \W\XINT@mul@compute #2#3#4\W\X\Y\Z \Z
+{%
+ \expandafter
+ \XINT@mul@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@mul@mainz\W\XINT@mul@compute #1#2#3\W\X\Y\Z
+{%
+ \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%
+{%
+ \XINT@pprod@checkifempty #1\Z
+}%
+\def\XINT@pprod@checkifempty #1%
+{%
+ \xint@relax #1\XINT@pprod@emptyproduct\relax
+ \XINT@pprod@RQfirst #1%
+}%
+\def\XINT@pprod@emptyproduct #1\Z { 1}%
+\def\XINT@pprod@RQfirst #1\Z
+{%
+ \expandafter\XINT@pprod@getnext\expandafter
+ {\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z}%
+}%
+\def\XINT@pprod@getnext #1#2%
+{%
+ \XINT@pprod@checkiffinished #2\Z {#1}%
+}%
+\def\XINT@pprod@checkiffinished #1%
+{%
+ \xint@relax #1\XINT@pprod@end\relax
+ \XINT@pprod@compute #1%
+}%
+\def\XINT@pprod@compute #1\Z #2%
+{%
+ \expandafter
+ \XINT@pprod@getnext
+ \expandafter
+ {\romannumeral0\XINT@prod@mul@enter #2\W\X\Y\Z #1\W\X\Y\Z}%
+}%
+\def\XINT@pprod@end\relax\XINT@pprod@compute #1\Z #2%
+{%
+ \expandafter
+ \xint@cleanupzeros@andstop
+ \romannumeral0\XINT@rev {#2}%
+}%
+\def\xintProductExpr {\romannumeral0\xintproductexpr }%
+\def\xintPrd {\romannumeral0\xintprd }%
+\def\xintprd #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xintproductexpr #1\relax
+}%
+\def\xintproductexpr #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@UDforksign
+ #1%
+}%
+\def\XINT@prod@returnzero #1\relax { 0}%
+\def\XINT@prod@firstisneg #1#2\Z
+{%
+ \expandafter\XINT@prod@xpxpnext\expandafter
+ 0\expandafter{\romannumeral0\XINT@RQ {}#2\R\R\R\R\R\R\R\R\Z}%
+}%
+\def\XINT@prod@firstispos #1\Z
+{%
+ \expandafter\XINT@prod@xpxpnext\expandafter
+ 1\expandafter{\romannumeral0\XINT@RQ {}#1\R\R\R\R\R\R\R\R\Z }%
+}%
+\def\XINT@prod@xpxpnext #1#2#3%
+{%
+ \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
+ -\dummy \XINT@prod@pos
+ \xint@UDforksign
+ #1%
+}%
+\def\XINT@prod@pos #1\Z #2#3%
+{%
+ \expandafter
+ \XINT@prod@xpxpnext
+ \expandafter
+ #3%
+ \expandafter
+ {\romannumeral0\XINT@prod@mul@enter #2\W\X\Y\Z #1\W\X\Y\Z }%
+}%
+\def\XINT@prod@neg #1#2\Z #3#4%
+{%
+ \expandafter
+ \XINT@prod@xpxpnext
+ \expandafter
+ {\the\numexpr 1-#4\expandafter}%
+ \expandafter
+ {\romannumeral0\XINT@prod@mul@enter #3\W\X\Y\Z #2\W\X\Y\Z }%
+}%
+\def\XINT@prod@end\relax\XINT@prod@checksign #1\Z #2#3%
+{%
+ \expandafter
+ \xint@prod@cleanupzeros
+ \romannumeral0\XINT@rev {#2#3}%
+}%
+\def\xint@prod@cleanupzeros #1#2#3#4#5%
+{%
+ \expandafter\space\the\numexpr (2*#1-1)*#2#3#4#5\relax
+}%
+\def\XINT@prod@add@A #1#2#3#4#5#6%
+{%
+ \xint@w
+ #3\xint@prod@add@az
+ \W\XINT@prod@add@AB #1{#3#4#5#6}{#2}%
+}%
+\def\xint@prod@add@az\W\XINT@prod@add@AB #1#2%
+{%
+ \XINT@prod@add@AC@checkcarry #1%
+}%
+\def\XINT@prod@add@AC@checkcarry #1%
+{%
+ \xint@zero #1\xint@prod@add@AC@nocarry 0\XINT@prod@add@C
+}%
+\def\xint@prod@add@AC@nocarry 0\XINT@prod@add@C
+{%
+ \XINT@prod@add@F
+}%
+\def\XINT@prod@add@AB #1#2#3#4\W\X\Y\Z #5#6#7#8%
+{%
+ \XINT@prod@add@ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z
+}%
+\def\XINT@prod@add@ABE #1#2#3#4#5#6%
+{\expandafter
+ \XINT@prod@add@ABEA\the\numexpr #1+10#5#4#3#2+#6\relax
+}%
+\def\XINT@prod@add@ABEA #1#2#3#4#5#6#7%
+{%
+ \XINT@prod@add@A #2{#7#6#5#4#3}%<-- attention on met donc \`a droite
+}%
+\def\XINT@prod@add@C #1#2#3#4#5%
+{%
+ \xint@w
+ #5\xint@prod@add@cw
+ #4\xint@prod@add@cx
+ #3\xint@prod@add@cy
+ #2\xint@prod@add@cz
+ \W\XINT@prod@add@CD {#5#4#3#2}{#1}%
+}%
+\def\XINT@prod@add@CD #1%
+{\expandafter
+ \XINT@prod@add@CC\the\numexpr 1+10#1\relax
+}%
+\def\XINT@prod@add@CC #1#2#3#4#5#6#7%
+{%
+ \XINT@prod@add@AC@checkcarry #2{#7#6#5#4#3}%
+}%
+\def\xint@prod@add@cw
+ #1\xint@prod@add@cx
+ #2\xint@prod@add@cy
+ #3\xint@prod@add@cz
+ \W\XINT@prod@add@CD
+{\expandafter
+ \XINT@prod@add@CDw\the\numexpr 1+10#1#2#3\relax
+}%
+\def\XINT@prod@add@CDw #1#2#3#4#5#6%
+{%
+ \xint@quatrezeros #2#3#4#5\XINT@prod@add@endDw@zeros
+ 0000\XINT@prod@add@endDw #2#3#4#5%
+}%
+\def\XINT@prod@add@endDw@zeros 0000\XINT@prod@add@endDw 0000#1\X\Y\Z{ #1}%
+\def\XINT@prod@add@endDw #1#2#3#4#5\X\Y\Z{ #5#4#3#2#1}%
+\def\xint@prod@add@cx
+ #1\xint@prod@add@cy
+ #2\xint@prod@add@cz
+ \W\XINT@prod@add@CD
+{\expandafter
+ \XINT@prod@add@CDx\the\numexpr 1+100#1#2\relax
+}%
+\def\XINT@prod@add@CDx #1#2#3#4#5#6%
+{%
+ \xint@quatrezeros #2#3#4#5\XINT@prod@add@endDx@zeros
+ 0000\XINT@prod@add@endDx #2#3#4#5%
+}%
+\def\XINT@prod@add@endDx@zeros 0000\XINT@prod@add@endDx 0000#1\Y\Z{ #1}%
+\def\XINT@prod@add@endDx #1#2#3#4#5\Y\Z{ #5#4#3#2#1}%
+\def\xint@prod@add@cy
+ #1\xint@prod@add@cz
+ \W\XINT@prod@add@CD
+{\expandafter
+ \XINT@prod@add@CDy\the\numexpr 1+1000#1\relax
+}%
+\def\XINT@prod@add@CDy #1#2#3#4#5#6%
+{%
+ \xint@quatrezeros #2#3#4#5\XINT@prod@add@endDy@zeros
+ 0000\XINT@prod@add@endDy #2#3#4#5%
+}%
+\def\XINT@prod@add@endDy@zeros 0000\XINT@prod@add@endDy 0000#1\Z{ #1}%
+\def\XINT@prod@add@endDy #1#2#3#4#5\Z{ #5#4#3#2#1}%
+\def\xint@prod@add@cz\W\XINT@prod@add@CD #1#2{ #21000}%
+\def\XINT@prod@add@F #1#2#3#4#5%
+{%
+ \xint@w
+ #5\xint@prod@add@Gw
+ #4\xint@prod@add@Gx
+ #3\xint@prod@add@Gy
+ #2\xint@prod@add@Gz
+ \W\XINT@prod@add@G {#2#3#4#5}{#1}%
+}%
+\def\XINT@prod@add@G #1#2%
+{%
+ \XINT@prod@add@F {#2#1}%
+}%
+\def\xint@prod@add@Gw
+ #1\xint@prod@add@Gx
+ #2\xint@prod@add@Gy
+ #3\xint@prod@add@Gz
+ \W\XINT@prod@add@G #4%
+{%
+ \xint@quatrezeros #3#2#10\XINT@prod@add@endGw@zeros
+ 0000\XINT@prod@add@endGw #3#2#10%
+}%
+\def\XINT@prod@add@endGw@zeros 0000\XINT@prod@add@endGw 0000#1\X\Y\Z{ #1}%
+\def\XINT@prod@add@endGw #1#2#3#4#5\X\Y\Z{ #5#1#2#3#4}%
+\def\xint@prod@add@Gx
+ #1\xint@prod@add@Gy
+ #2\xint@prod@add@Gz
+ \W\XINT@prod@add@G #3%
+{%
+ \xint@quatrezeros #2#100\XINT@prod@add@endGx@zeros
+ 0000\XINT@prod@add@endGx #2#100%
+}%
+\def\XINT@prod@add@endGx@zeros 0000\XINT@prod@add@endGx 0000#1\Y\Z{ #1}%
+\def\XINT@prod@add@endGx #1#2#3#4#5\Y\Z{ #5#1#2#3#4}%
+\def\xint@prod@add@Gy
+ #1\xint@prod@add@Gz
+ \W\XINT@prod@add@G #2%
+{%
+ \xint@quatrezeros #1000\XINT@prod@add@endGy@zeros
+ 0000\XINT@prod@add@endGy #1000%
+}%
+\def\XINT@prod@add@endGy@zeros 0000\XINT@prod@add@endGy 0000#1\Z{ #1}%
+\def\XINT@prod@add@endGy #1#2#3#4#5\Z{ #5#1#2#3#4}%
+\def\xint@prod@add@Gz\W\XINT@prod@add@G #1#2{ #2}%
+\def\XINT@prod@mul@enter #1\W\X\Y\Z #2#3#4#5%
+{%
+ \xint@w
+ #5\xint@prod@mul@enterw
+ #4\xint@prod@mul@enterx
+ #3\xint@prod@mul@entery
+ #2\xint@prod@mul@enterz
+ \W\XINT@prod@mul@start {#2#3#4#5}#1\W\X\Y\Z
+}%
+\def\xint@prod@mul@enterw
+ #1\xint@prod@mul@enterx
+ #2\xint@prod@mul@entery
+ #3\xint@prod@mul@enterz
+ \W\XINT@prod@mul@start #4#5\W\X\Y\Z \X\Y\Z
+{%
+ \XINT@mul@Mr {#3#2#1}#5\Z\Z\Z\Z
+}%
+\def\xint@prod@mul@enterx
+ #1\xint@prod@mul@entery
+ #2\xint@prod@mul@enterz
+ \W\XINT@prod@mul@start #3#4\W\X\Y\Z \Y\Z
+{%
+ \XINT@mul@Mr {#2#1}#4\Z\Z\Z\Z
+}%
+\def\xint@prod@mul@entery
+ #1\xint@prod@mul@enterz
+ \W\XINT@prod@mul@start #2#3\W\X\Y\Z \Z
+{%
+ \XINT@mul@Mr {#1}#3\Z\Z\Z\Z
+}%
+\def\XINT@prod@mul@start #1#2\W\X\Y\Z
+{\expandafter
+ \XINT@prod@mul@main \expandafter
+ {\romannumeral0%
+ \XINT@mul@Mr {#1}#2\Z\Z\Z\Z
+ }#2\W\X\Y\Z
+}%
+\def\XINT@prod@mul@main #1#2\W\X\Y\Z #3#4#5#6%
+{%
+ \xint@w
+ #6\xint@prod@mul@mainw
+ #5\xint@prod@mul@mainx
+ #4\xint@prod@mul@mainy
+ #3\xint@prod@mul@mainz
+ \W\XINT@prod@mul@compute {#1}{#3#4#5#6}#2\W\X\Y\Z
+}%
+\def\XINT@prod@mul@compute #1#2#3\W\X\Y\Z
+{\expandafter
+ \XINT@prod@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@prod@mul@mainw
+ #1\xint@prod@mul@mainx
+ #2\xint@prod@mul@mainy
+ #3\xint@prod@mul@mainz
+ \W\XINT@prod@mul@compute #4#5#6\W\X\Y\Z \X\Y\Z
+{%
+ \expandafter
+ \XINT@prod@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@prod@mul@mainx
+ #1\xint@prod@mul@mainy
+ #2\xint@prod@mul@mainz
+ \W\XINT@prod@mul@compute #3#4#5\W\X\Y\Z \Y\Z
+{%
+ \expandafter
+ \XINT@prod@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@prod@mul@mainy
+ #1\xint@prod@mul@mainz
+ \W\XINT@prod@mul@compute #2#3#4\W\X\Y\Z \Z
+{%
+ \expandafter
+ \XINT@prod@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@prod@mul@mainz\W\XINT@prod@mul@compute #1#2#3\W\X\Y\Z
+{ #1}%
+\def\xintFac {\romannumeral0\xintfac }%
+\def\xintfac #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@fac@fork
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\XINT@Fac {\romannumeral0\XINT@fac@fork }%
+\def\XINT@fac@fork #1%
+{%
+ \ifcase\xintSgn {#1}
+ \xint@afterfi{\expandafter\space\expandafter 1\xint@gobble }%
+ \or
+ \expandafter\XINT@fac@checklength
+ \else
+ \xint@afterfi{\xintError:FactorialOfNegativeNumber
+ \expandafter\space\expandafter 1\xint@gobble }%
+ \fi
+ {#1}%
+}%
+\def\XINT@fac@checklength #1%
+{%
+ \ifnum\xintLen {#1} > 9
+ \xint@afterfi{\xintError:FactorialOfTooBigNumber
+ \expandafter\space\expandafter 1\xint@gobble@three }%
+ \else
+ \expandafter\XINT@fac@loop
+ \fi
+ {1}{#1}{}%
+}%
+\def\XINT@fac@loop #1#2#3%
+{%
+ \ifnum #1<#2
+ \expandafter
+ \XINT@fac@loop
+ \expandafter
+ {\the\numexpr #1+1\expandafter }%
+ \else
+ \expandafter\XINT@fac@docomputation
+ \fi
+ {#2}{#3{#1}}%
+}%
+\def\XINT@fac@docomputation #1#2%
+{%
+ \XINT@posprod #2\relax
+}%
+\def\xintPow {\romannumeral0\xintpow }%
+\def\xintpow #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@pow
+ #1\Z%
+}%
+\def\xint@pow #1#2\Z
+{%
+ \xint@UDsignfork
+ #1\dummy \XINT@pow@Aneg
+ -\dummy \XINT@pow@Anonneg
+ \xint@UDforksign
+ #1{#2}%
+}%
+\def\XINT@pow@Aneg #1#2#3%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@pow@Aneg@
+ \expandafter\expandafter\expandafter
+ {#3}{#2}%
+}%
+\def\XINT@pow@Aneg@ #1%
+{%
+ \ifcase\XINT@Odd{#1}
+ \or \expandafter\XINT@pow@Aneg@Bodd
+ \fi
+ \XINT@pow@Anonneg@ {#1}%
+}%
+\def\XINT@pow@Aneg@Bodd #1%
+{%
+ \expandafter\XINT@opp\romannumeral0\XINT@pow@Anonneg@
+}%
+\def\XINT@pow@Anonneg #1#2#3%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@pow@Anonneg@
+ \expandafter\expandafter\expandafter
+ {#3}{#1#2}%
+}%
+\def\XINT@pow@Anonneg@ #1#2%
+{%
+ \ifcase\XINT@Cmp {#2}{1}
+ \expandafter\XINT@pow@AisOne
+ \or
+ \expandafter\XINT@pow@AatleastTwo
+ \else
+ \expandafter\XINT@pow@AisZero
+ \fi
+ {#1}{#2}%
+}%
+\def\XINT@pow@AisOne #1#2{ 1}%
+\def\XINT@pow@AisZero #1#2%
+{%
+ \ifcase\XINT@Sgn {#1}
+ \xint@afterfi { 1}%
+ \or
+ \xint@afterfi { 0}%
+ \else
+ \xint@afterfi {\xintError:DivisionByZero\space 0}%
+ \fi
+}%
+\def\XINT@pow@AatleastTwo #1%
+{%
+ \ifcase\XINT@Sgn {#1}
+ \expandafter\XINT@pow@BisZero
+ \or
+ \expandafter\XINT@pow@checkBlength
+ \else
+ \expandafter\XINT@pow@BisNegative
+ \fi
+ {#1}%
+}%
+\def\XINT@pow@BisNegative #1#2{\xintError:FractionRoundedToZero\space 0}%
+\def\XINT@pow@BisZero #1#2{ 1}%
+\def\XINT@pow@checkBlength #1#2%
+{%
+ \ifnum\xintLen{#1} >9
+ \expandafter\XINT@pow@BtooBig
+ \else
+ \expandafter\XINT@pow@loop
+ \fi
+ {#1}{#2}\XINT@posprod
+ \xint@UNDEF
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@UNDEF
+}%
+\def\XINT@pow@BtooBig #1\xint@UNDEF #2\xint@UNDEF
+ {\xintError:ExponentTooBig\space 0}%
+\def\XINT@pow@loop #1#2%
+{%
+ \ifnum #1 = 1
+ \expandafter\XINT@pow@loop@end
+ \else
+ \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}}}%
+ \fi
+ {{#2}}%
+}%
+\def\XINT@pow@loop@end {\romannumeral0\XINT@rord@main {}\relax }%
+\def\XINT@pow@loop@a #1%
+{%
+ \ifnum #1 = 1
+ \expandafter\XINT@pow@loop
+ \else
+ \expandafter\XINT@pow@loop@throwaway
+ \fi
+}%
+\def\XINT@pow@loop@throwaway #1#2#3%
+{%
+ \XINT@pow@loop {#1}{#2}%
+}%
+\def\xintQuo {\romannumeral0\xintquo }%
+\def\xintRem {\romannumeral0\xintrem }%
+\def\xintquo {%
+ \expandafter
+ \xint@firstoftwo@andstop
+ \romannumeral0\xintdivision }%
+\def\xintrem {%
+ \expandafter
+ \xint@secondoftwo@andstop
+ \romannumeral0\xintdivision }%
+\def\xintDivision {\romannumeral0\xintdivision }%
+\def\xintdivision #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@division
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@division #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@div@fork #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
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@div@BisZero
+ #3\dummy \XINT@div@AisZero
+ 0\dummy
+ {\xint@UDsignfork
+ #1\dummy \XINT@div@BisNegative % B < 0
+ #3\dummy \XINT@div@AisNegative % A < 0, B > 0
+ -\dummy \XINT@div@plusplus % B > 0, A > 0
+ \xint@UDforksign }%
+ \xint@UDforkzero
+ {#2}{#4}#1#3% #1#2=B, #3#4=A
+}%
+\def\XINT@div@BisZero #1#2#3#4%
+ {\xintError:DivisionByZero\space {0}{0}}%
+\def\XINT@div@AisZero #1#2#3#4{ {0}{0}}%
+\def\XINT@div@plusplus #1#2#3#4%
+{%
+ \XINT@div@prepare {#3#1}{#4#2}%
+}%
+\def\XINT@div@BisNegative #1#2#3#4%
+{%
+ \expandafter\XINT@div@BisNegative@post
+ \romannumeral0\XINT@div@fork #1\Z #4#2\Z
+}%
+\def\XINT@div@BisNegative@post #1#2%
+{%
+ \expandafter\space\expandafter
+ {\romannumeral0\XINT@opp #1}{#2}%
+}%
+\def\XINT@div@AisNegative #1#2#3#4%
+{%
+ \expandafter\XINT@div@AisNegative@post
+ \romannumeral0\XINT@div@prepare {#3#1}{#2}{#3#1}%
+}%
+\def\XINT@div@AisNegative@post #1#2%
+{%
+ \ifcase\xintSgn {#2}
+ \expandafter \XINT@div@AisNegative@zerorem
+ \or
+ \expandafter \XINT@div@AisNegative@posrem
+ \fi
+ {#1}{#2}%
+}%
+\def\XINT@div@AisNegative@zerorem #1#2#3%
+{%
+ \expandafter\space\expandafter
+ {\romannumeral0\XINT@opp #1}{0}%
+}%
+\def\XINT@div@AisNegative@posrem #1%
+{%
+ \expandafter
+ \XINT@div@AisNegative@posrem@b
+ \expandafter
+ {\romannumeral0\xintopp {\XINT@Add{#1}{1}}}%
+}%
+\def\XINT@div@AisNegative@posrem@b #1#2#3%
+{%
+ \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
+}%
+\def\XINT@div@prepareB@a #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
+ {\the\numexpr #1-#2\relax}{#1}%
+}%
+\def\XINT@div@prepareB@c #1%
+{%
+ \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
+}%
+\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@e #1#2#3#4%
+{%
+ \XINT@div@prepareB@f #4#1\Z {#3}{#2}{#1}%
+}%
+\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}%
+}%
+\def\XINT@div@prepareB@g #1#2#3#4#5#6%
+{%
+ \XINT@div@prepareA@a {#6#5}{#2}{#3}{#1}{#4}%
+}%
+\def\XINT@div@prepareA@a #1%
+{%
+ \expandafter
+ \XINT@div@prepareA@b
+ \expandafter
+ {\romannumeral0\XINT@length {#1}}{#1}% A >0 ici
+}%
+\def\XINT@div@prepareA@b #1%
+{%
+ \expandafter\XINT@div@prepareA@c\expandafter
+ {\the\numexpr 4*((#1+1)/4)\relax}{#1}%
+}%
+\def\XINT@div@prepareA@c #1#2%
+{%
+ \expandafter\XINT@div@prepareA@d \expandafter
+ {\the\numexpr #1-#2\relax}{#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
+}%
+\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@e #1#2#3%
+{%
+ \XINT@div@startswitch {#1#3}{#2}%
+}%
+\def\XINT@div@startswitch #1#2#3#4%
+{%
+ \ifnum #2 > #4
+ \expandafter\XINT@div@body@a
+ \else
+ \ifnum #2 = #4
+ \expandafter\expandafter\expandafter
+ \XINT@div@final@a
+ \else
+ \expandafter\expandafter\expandafter
+ \XINT@div@finished@a
+ \fi\fi {#1}{#4}{#3}{0000}{#2}%
+}%
+\def\XINT@div@finished@a #1#2#3%
+{%
+ \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@preparegobble {#1}{#5}}}%
+ \fi
+ {#2}%
+}%
+\def\XINT@div@finished@c #1#2%
+{%
+ \expandafter
+ \space
+ \expandafter
+ {\romannumeral0\expandafter\xint@cleanupzeros@andstop
+ \romannumeral0\XINT@rev {#2}}{#1}%
+}%
+\def\XINT@div@final@a #1%
+{%
+ \XINT@div@final@b #1\Z
+}%
+\def\XINT@div@final@b #1#2#3#4#5\Z
+{%
+ \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@c #1#2#3#4%
+{%
+ \expandafter
+ \XINT@div@final@d
+ \expandafter
+ {\the\numexpr #1/#4\relax}{#2}%
+}%
+\def\XINT@div@final@d #1#2#3#4#5%
+{%
+ \expandafter
+ \XINT@div@final@e
+ \expandafter
+ {\romannumeral0\xintsub {\xint@cleanupzeros@nospace #2}%
+ {\romannumeral0\XINT@mul@M {#1}#5\Z\Z\Z\Z }}%
+ {#1}{#2}{#3}{#4}{#5}%
+}%
+\def\XINT@div@final@e #1#2%
+{%
+ \ifnum\xintSgn{#1} < 0
+ \expandafter\XINT@div@final@d % en arri\`ere toute
+ \expandafter{\the\numexpr #2-1\expandafter
+ \expandafter\expandafter }%
+ \expandafter\xint@gobble@two
+ \else
+ \expandafter\XINT@div@final@f
+ \fi
+ {#1}{#2}%
+}%
+\def\XINT@div@final@f #1#2#3#4#5#6#7%
+{%
+ \ifcase \XINT@Sgn {#1}
+ \xint@afterfi {\XINT@div@final@end {0}}%
+ \or
+ \xint@afterfi {\expandafter\XINT@div@final@end
+ \expandafter
+ {\romannumeral0\XINT@dsh@preparegobble {#1}{#7}}}%
+ \fi
+ {\romannumeral0\xintadd {\XINT@Rev@andcleanupzeros{#4}}{#2}}%
+}%
+\def\XINT@div@final@end #1#2%
+{%
+ \expandafter\space\expandafter
+ {#2}{#1}%
+}%
+\def\XINT@div@body@a #1%
+{%
+ \XINT@div@body@b #1\Z
+}%
+\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}%
+}%
+\def\XINT@div@body@c #1#2#3%
+{%
+ \XINT@div@body@d {#3}{}#1\Z {#2}{#3}%
+}%
+\def\XINT@div@body@d #1#2#3#4#5#6%
+{%
+ \ifnum #1 > 0
+ \expandafter
+ \XINT@div@body@d
+ \expandafter
+ {\the\numexpr #1-4\expandafter }%
+ \else
+ \expandafter
+ \XINT@div@body@e
+ \fi
+ {#6#5#4#3#2}%
+}%
+\def\XINT@div@body@e #1#2\Z #3%
+{%
+ \XINT@div@body@f {#3}{#1}{#2}%
+}%
+\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}%
+}%
+\def\XINT@div@body@g #1#2#3%
+{%
+ \expandafter
+ \XINT@div@body@h
+ \romannumeral0\XINT@div@sub@xpxp
+ {\romannumeral0\XINT@prod@mul@enter #3\W\X\Y\Z #1\W\X\Y\Z }%
+ {#2}\Z
+ {#3}{#1}%
+}%
+\def\XINT@div@body@h #1#2#3#4#5#6#7#8#9\Z
+{%
+ \ifnum #1#2#3#4>0
+ \xint@afterfi{\XINT@div@body@i {#1#2#3#4#5#6#7#8}}%
+ \else
+ \expandafter\XINT@div@body@k
+ \fi
+ {#1#2#3#4#5#6#7#8#9}%
+}%
+\def\XINT@div@body@i #1#2#3#4#5#6%
+{%
+ \expandafter\XINT@div@body@j
+ \expandafter{\the\numexpr (#1+(#6+1)/2)/(#6+1)-1\relax }%
+ {#2}{#3}{#4}{#5}{#6}%
+}%
+\def\XINT@div@body@j #1#2#3#4%
+{%
+ \expandafter
+ \XINT@div@body@l
+ \expandafter{\romannumeral0\XINT@div@sub@xpxp
+ {\romannumeral0\XINT@prod@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}%
+}%
+\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}%
+}%
+\def\XINT@div@body@m #1#2#3#4#5#6#7#8#9%
+{%
+ \ifnum #2#3#4#5>0
+ \xint@afterfi {\XINT@div@body@n {#9#8#7#6#5#4#3#2}}%
+ \else
+ \xint@afterfi {\XINT@div@body@n {#9#8#7#6}}%
+ \fi
+}%
+\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 }%
+}%
+\def\XINT@div@body@o #1#2#3#4%
+{%
+ \XINT@div@body@p {#3}{#2}{}#4\Z {#1}%
+}%
+\def\XINT@div@body@p #1#2#3#4#5#6#7%
+{%
+ \ifnum #1 > #2
+ \xint@afterfi
+ {\ifnum #4#5#6#7 > 0
+ \expandafter\XINT@div@body@q
+ \else
+ \expandafter\XINT@div@body@repeatp
+ \fi }%
+ \else
+ \expandafter\XINT@div@gotofinal@a
+ \fi
+ {#1}{#2}{#3}#4#5#6#7%
+}%
+\def\XINT@div@body@repeatp #1#2#3#4#5#6#7%
+{%
+ \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}%
+}%
+\def\XINT@div@gotofinal@a #1#2#3#4\Z %
+{%
+ \XINT@div@gotofinal@b #3\Z {#4}{#1}%
+}%
+\def\XINT@div@gotofinal@b 0000#1\Z #2#3#4#5%
+{%
+ \XINT@div@final@a {#2}{#3}{#5}{#1#4}{#3}%
+}%
+\def\XINT@div@sub@xpxp #1%
+{%
+ \expandafter
+ \XINT@div@sub@xpxp@
+ \expandafter
+ {#1}%
+}%
+\def\XINT@div@sub@xpxp@ #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@div@sub@xpxp@@
+ #2\W\X\Y\Z #1\W\X\Y\Z
+}%
+\def\XINT@div@sub@xpxp@@
+{%
+ \XINT@div@sub@A 1{}%
+}%
+\def\XINT@div@sub@A #1#2#3#4#5#6%
+{%
+ \xint@w
+ #3\xint@div@sub@az
+ \W\XINT@div@sub@B #1{#3#4#5#6}{#2}%
+}%
+\def\XINT@div@sub@B #1#2#3#4\W\X\Y\Z #5#6#7#8%
+{%
+ \xint@w
+ #5\xint@div@sub@bz
+ \W\XINT@div@sub@onestep #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z
+}%
+\def\XINT@div@sub@onestep #1#2#3#4#5#6%
+{\expandafter
+ \XINT@div@sub@backtoA\the\numexpr 11#5#4#3#2-#6+#1-1\relax.%
+}%
+\def\XINT@div@sub@backtoA #1#2#3.#4%
+{%
+ \XINT@div@sub@A #2{#3#4}%
+}%
+\def\xint@div@sub@bz
+ \W\XINT@div@sub@onestep #1#2#3#4#5#6#7%
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@div@sub@C %
+ 0\dummy \XINT@div@sub@D % pas de retenue
+ \xint@UDforkzero
+ {#7}#2#3#4#5%
+}%
+\def\XINT@div@sub@D #1#2\W\X\Y\Z
+{%
+ \expandafter\space
+ \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@div@sub@C #1#2#3#4#5%
+{%
+ \xint@w
+ #2\xint@div@sub@cz
+ \W\XINT@div@sub@AC@onestep {#5#4#3#2}{#1}%
+}%
+\def\XINT@div@sub@AC@onestep #1%
+{\expandafter
+ \XINT@div@sub@backtoC\the\numexpr 11#1-1\relax.%
+}%
+\def\XINT@div@sub@backtoC #1#2#3.#4%
+{%
+ \XINT@div@sub@AC@checkcarry #2{#3#4}% la retenue va \^etre examin\'ee
+}%
+\def\XINT@div@sub@AC@checkcarry #1%
+{%
+ \xint@one #1\xint@div@sub@AC@nocarry 1\XINT@div@sub@C
+}%
+\def\xint@div@sub@AC@nocarry 1\XINT@div@sub@C #1#2\W\X\Y\Z
+{%
+ \expandafter\space
+ \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@div@sub@cz\W\XINT@div@sub@AC@onestep #1#2{ #2}%
+\def\xint@div@sub@az\W\XINT@div@sub@B #1#2#3#4\Z { #3}%
+\def\xintFDg {\romannumeral0\xintfdg }%
+\def\xintfdg #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@fdg #1\W\Z
+}%
+\def\XINT@FDg #1{\romannumeral0\XINT@fdg #1\W\Z }%
+\def\XINT@fdg #1#2%
+{%
+ \xint@xpxp@andstop
+ \xint@UDzerominusfork
+ #1-\dummy {\expandafter 0}% zero
+ 0#1\dummy {\expandafter #2}% negative
+ 0-\dummy {\expandafter #1}% positive
+ \xint@UDforkminuszero
+ \xint@z
+}%
+\def\xintLDg {\romannumeral0\xintldg }%
+\def\xintldg #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@ldg
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\XINT@LDg #1{\romannumeral0\XINT@ldg {#1}}%
+\def\XINT@ldg #1%
+{%
+ \expandafter
+ \XINT@ldg@
+ \romannumeral0\XINT@rev {#1}\Z
+}%
+\def\XINT@ldg@ #1%
+{%
+ \expandafter\space\expandafter #1\xint@z
+}%
+\def\xintOdd {\romannumeral0\xintodd }%
+\def\xintodd #1%
+{%
+ \ifodd\xintLDg{#1}
+ \xint@afterfi{ 1}%
+ \else
+ \xint@afterfi{ 0}%
+ \fi
+}%
+\def\XINT@Odd #1%
+{\romannumeral0%
+ \ifodd\XINT@LDg{#1}
+ \xint@afterfi{ 1}%
+ \else
+ \xint@afterfi{ 0}%
+ \fi
+}%
+\def\xintDSL {\romannumeral0\xintdsl }%
+\def\xintdsl #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@dsl #1\Z
+}%
+\def\XINT@DSL #1{\romannumeral0\XINT@dsl #1\Z }%
+\def\XINT@dsl #1%
+{%
+ \xint@zero #1\xint@dsl@zero 0\XINT@dsl@ #1%
+}%
+\def\xint@dsl@zero 0\XINT@dsl@ 0#1\Z { 0}%
+\def\XINT@dsl@ #1\Z { #10}%
+\def\xintDSR {\romannumeral0\xintdsr }%
+\def\xintdsr #1%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@dsr@a
+ \expandafter\expandafter\expandafter
+ {#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
+}%
+\def\XINT@dsr@b #1#2#3\Z
+{%
+ \xint@w #2\xint@dsr@onedigit\W
+ \xint@minus #2\xint@dsr@onedigit-%
+ \expandafter
+ \XINT@dsr@removew
+ \romannumeral0\XINT@rev {#2#3}%
+}%
+\def\xint@dsr@onedigit #1\XINT@rev #2{ 0}%
+\def\XINT@dsr@removew #1\W { }%
+\def\xintDSH {\romannumeral0\xintdsh }%
+\def\xintdsh #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@dsh
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@dsh #1#2%
+{%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \XINT@dsh@checkxsize
+ \expandafter\expandafter\expandafter
+ \xint@exchangetwo@keepbraces
+ \expandafter\expandafter\expandafter
+ {#2}{#1}%
+}%
+\def\XINT@DSH {\romannumeral0\XINT@dsh@checkxsize }%
+\def\XINT@dsh@checkxsize #1%
+{%
+ \ifnum\XINT@Len {#1} > 9
+ \expandafter\XINT@dsh@bigx
+ \else
+ \expandafter\XINT@dsh
+ \fi
+ {#1}%
+}%
+\def\XINT@dsh@bigx #1#2%
+{%
+ \ifcase\XINT@Sgn {#1}
+ \or \xint@afterfi { 0}%
+ \else \xint@afterfi
+ {%
+ \ifodd\XINT@Sgn {#2}
+ \xint@afterfi{\xintError:TooBigDecimalShift
+ \space0}%
+ \else \xint@afterfi { 0}%
+ \fi
+ }%
+ \fi
+}%
+\def\XINT@dsh #1#2{\XINT@dsh@checkAsign #2\Z {#1}}%
+\def\XINT@dsh@checkAsign #1%
+{%
+ \xint@UDzerominusfork
+ #1-\dummy \XINT@dsh@AisZero
+ 0#1\dummy \XINT@dsh@AisNeg
+ 0-\dummy {\XINT@dsh@directionfork #1}%
+ \xint@UDforkminuszero
+}%
+\def\XINT@dsh@AisZero #1\Z #2{ 0}%
+\def\XINT@dsh@AisNeg {\expandafter\XINT@dsh@neg@checkifreturnedzero
+ \romannumeral0\XINT@dsh@directionfork }%
+\def\XINT@dsh@neg@checkifreturnedzero #1%
+{%
+ \expandafter\space
+ \xint@UDzerofork
+ #1\dummy {0}%
+ 0\dummy {-#1}%
+ \xint@UDforkzero
+}%
+\def\XINT@dsh@directionfork #1\Z #2%
+{%
+ \XINT@dsh@checkxsign #2\Z {#1}%
+}%
+\def\XINT@dsh@checkxsign #1%
+{%
+ \xint@UDzerominusfork
+ #1-\dummy \XINT@dsh@donothing
+ 0#1\dummy \XINT@dsh@shiftleft
+ 0-\dummy {\XINT@dsh@shiftright #1}%
+ \xint@UDforkminuszero
+}%
+\def\XINT@dsh@donothing #1\Z #2{ #2}%
+\def\XINT@dsh@shiftright #1\Z #2%
+{%
+ \ifnum \XINT@Length {#2} > #1
+ \expandafter\XINT@dsh@preparegobble
+ \else
+ \expandafter\XINT@dsh@returnzero
+ \fi
+ {#2}{#1}%
+}%
+\def\XINT@dsh@returnzero #1#2{ 0}%
+\def\XINT@dsh@preparegobble #1%
+{%
+ \expandafter
+ \XINT@dsh@preparegobble@
+ \expandafter
+ {\romannumeral0\XINT@rev{#1}}%
+}%
+\def\XINT@dsh@preparegobble@ #1#2{\XINT@dsh@gobbleloop {#2}#1\Z }%
+\def\XINT@dsh@gobbleloop #1%
+{%
+ \ifcase #1
+ \expandafter\XINT@dsh@endgobble
+ \or
+ \expandafter\XINT@dsh@gobble@one@andend
+ \or
+ \expandafter\XINT@dsh@gobble@two@andend
+ \or
+ \expandafter\XINT@dsh@gobble@three@andend
+ \or
+ \expandafter\XINT@dsh@gobble@four@andend
+ \or
+ \expandafter\XINT@dsh@gobble@five@andend
+ \or
+ \expandafter\XINT@dsh@gobble@six@andend
+ \or
+ \expandafter\XINT@dsh@gobble@seven@andend
+ \else
+ \expandafter \XINT@dsh@gobbleloop
+ \expandafter
+ {\the\numexpr
+ #1-8\expandafter\expandafter\expandafter }%
+ \expandafter
+ \xint@gobble@eight
+ \fi
+}%
+\def\XINT@dsh@gobble@one@andend
+ {\expandafter\XINT@dsh@endgobble\xint@gobble@one }%
+\def\XINT@dsh@gobble@two@andend
+ {\expandafter\XINT@dsh@endgobble\xint@gobble@two }%
+\def\XINT@dsh@gobble@three@andend
+ {\expandafter\XINT@dsh@endgobble\xint@gobble@three }%
+\def\XINT@dsh@gobble@four@andend
+ {\expandafter\XINT@dsh@endgobble\xint@gobble@four }%
+\def\XINT@dsh@gobble@five@andend
+ {\expandafter\XINT@dsh@endgobble\xint@gobble@five }%
+\def\XINT@dsh@gobble@six@andend
+ {\expandafter\XINT@dsh@endgobble\xint@gobble@six }%
+\def\XINT@dsh@gobble@seven@andend
+ {\expandafter\XINT@dsh@endgobble\xint@gobble@seven }%
+\def\XINT@dsh@endgobble #1\Z
+{%
+ \XINT@rev{#1}%
+}%
+\def\XINT@dsh@shiftleft #1\Z
+{%
+ \XINT@dsh@zeroloop {#1}\Z
+}%
+\def\XINT@dsh@zeroloop #1%
+{%
+ \ifcase #1
+ \expandafter \XINT@dsh@exit
+ \or
+ \expandafter \XINT@dsh@exiti
+ \or
+ \expandafter \XINT@dsh@exitii
+ \or
+ \expandafter \XINT@dsh@exitiii
+ \or
+ \expandafter \XINT@dsh@exitiv
+ \or
+ \expandafter \XINT@dsh@exitv
+ \or
+ \expandafter \XINT@dsh@exitvi
+ \or
+ \expandafter \XINT@dsh@exitvii
+ \else
+ \expandafter \XINT@dsh@zeroloop
+ \expandafter
+ {\the\numexpr
+ #1-8\expandafter\expandafter\expandafter }%
+ \expandafter
+ \XINT@dsh@addeightzeros
+ \fi
+}%
+\def\XINT@dsh@addeightzeros {00000000}%
+\def\XINT@dsh@exit #1\Z
+ {\XINT@dsh@addzeros {#1}}%
+\def\XINT@dsh@exiti #1\Z
+ {\XINT@dsh@addzeros {0#1}}%
+\def\XINT@dsh@exitii #1\Z
+ {\XINT@dsh@addzeros {00#1}}%
+\def\XINT@dsh@exitiii #1\Z
+ {\XINT@dsh@addzeros {000#1}}%
+\def\XINT@dsh@exitiv #1\Z
+ {\XINT@dsh@addzeros {0000#1}}%
+\def\XINT@dsh@exitv #1\Z
+ {\XINT@dsh@addzeros {00000#1}}%
+\def\XINT@dsh@exitvi #1\Z
+ {\XINT@dsh@addzeros {000000#1}}%
+\def\XINT@dsh@exitvii #1\Z
+ {\XINT@dsh@addzeros {0000000#1}}%
+\def\XINT@dsh@addzeros #1#2{ #2#1}%
+\def\xintDecSplitL {\romannumeral0\xintdecsplitl }%
+\def\xintDecSplitR {\romannumeral0\xintdecsplitr }%
+\def\xintdecsplitl
+{%
+ \expandafter
+ \xint@firstoftwo@andstop
+ \romannumeral0\xintdecsplit
+}%
+\def\xintdecsplitr
+{%
+ \expandafter
+ \xint@secondoftwo@andstop
+ \romannumeral0\xintdecsplit
+}%
+\def\xintDecSplit {\romannumeral0\xintdecsplit }%
+\def\xintdecsplit #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@split
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@split #1#2%
+{%
+ \expandafter
+ \XINT@split@checkifAzero
+ \expandafter
+ {\romannumeral0\xintabs {#2}}{#1}% fait expansion de A
+}%
+\def\XINT@split@checkifAzero #1#2%
+{%
+ \ifcase \XINT@Sgn {#1}
+ \expandafter\XINT@split@AisZero
+ \fi
+ \XINT@split@checkxsize {#2}{#1}%
+}%
+\def\XINT@split@AisZero\XINT@split@checkxsize #1#2{ {0}{0}}%
+\def\XINT@split@checkxsize #1%
+{%
+ \ifnum\XINT@Len {#1} > 9
+ \expandafter\XINT@split@bigx
+ \else
+ \expandafter\XINT@split@xfork
+ \fi
+ #1\Z
+}%
+\def\XINT@split@bigx #1\Z #2%
+{%
+ \ifcase\XINT@Sgn {#1}
+ \or \xint@afterfi { {0}{#2}}%
+ \else
+ \xint@afterfi
+ {\expandafter\xintError:TooBigDecimalSplit
+ \space{0}{0}}%
+ \fi
+}%
+\def\XINT@split@xfork #1%
+{%
+ \xint@UDzerominusfork
+ #1-\dummy \XINT@split@donothing
+ 0#1\dummy \XINT@split@fromleft
+ 0-\dummy {\XINT@split@splitright #1}%
+ \xint@UDforkminuszero
+}%
+\def\XINT@split@donothing #1\Z #2{ {#2}{0}}%
+\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
+ \expandafter\XINT@split@fromleft@endsplit
+ \or
+ \expandafter\XINT@split@fromleft@one@andend
+ \or
+ \expandafter\XINT@split@fromleft@two@andend
+ \or
+ \expandafter\XINT@split@fromleft@three@andend
+ \or
+ \expandafter\XINT@split@fromleft@four@andend
+ \or
+ \expandafter\XINT@split@fromleft@five@andend
+ \or
+ \expandafter\XINT@split@fromleft@six@andend
+ \or
+ \expandafter\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#2\W #3\Z
+ { {#1}{#2}}%
+\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}%
+}%
+\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
+{%
+ \space {#1}{}%
+}%
+\def\XINT@split@fromleft@one@andend
+ {\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 #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 #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 #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 #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 #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 #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
+{%
+ \xint@w #1\XINT@split@fromleft@wenttoofar\W
+ \space {#2}{#3}%
+}%
+\def\XINT@split@fromleft@wenttoofar\W\space #1%
+{%
+ \XINT@split@fromleft@wenttoofar@b #1\Z
+}%
+\def\XINT@split@fromleft@wenttoofar@b #1\W #2\Z
+{%
+ \space {#1}%
+}%
+\def\XINT@split@splitright #1\Z #2%
+{%
+ \ifnum \XINT@Length {#2} > #1
+ \expandafter\XINT@split@pre
+ \else
+ \expandafter\XINT@split@quotientiszero
+ \fi
+ {#2}{#1}%
+}%
+\def\XINT@split@quotientiszero #1#2{ {0}{#1}}%
+\def\XINT@split@pre #1%
+{%
+ \expandafter
+ \XINT@split@@pre
+ \expandafter
+ {\romannumeral0\XINT@rev{#1}}%
+}%
+\def\XINT@split@@pre #1#2%
+{%
+ \XINT@split@loop {#2}{}#1\Z
+}%
+\def\XINT@split@loop #1%
+{%
+ \ifcase #1
+ \expandafter\XINT@split@endsplit
+ \or
+ \expandafter\XINT@split@one@andend
+ \or
+ \expandafter\XINT@split@two@andend
+ \or
+ \expandafter\XINT@split@three@andend
+ \or
+ \expandafter\XINT@split@four@andend
+ \or
+ \expandafter\XINT@split@five@andend
+ \or
+ \expandafter\XINT@split@six@andend
+ \or
+ \expandafter\XINT@split@seven@andend
+ \else
+ \expandafter \XINT@split@loop
+ \expandafter
+ {\the\numexpr
+ #1-8\expandafter\expandafter\expandafter }%
+ \expandafter
+ \XINT@split@eight
+ \fi
+}%
+\def\XINT@split@eight #1#2#3#4#5#6#7#8#9{{#1#2#3#4#5#6#7#8#9}}%
+\def\XINT@split@one@andend
+ {\expandafter\XINT@split@endsplit\XINT@split@one }%
+\def\XINT@split@one #1#2{{#1#2000}}%
+\def\XINT@split@two@andend
+ {\expandafter\XINT@split@endsplit\XINT@split@two }%
+\def\XINT@split@two #1#2#3{{#1#2#300}}%
+\def\XINT@split@three@andend
+ {\expandafter\XINT@split@endsplit\XINT@split@three }%
+\def\XINT@split@three #1#2#3#4{{#1#2#3#40}}%
+\def\XINT@split@four@andend
+ {\expandafter\XINT@split@endsplit\XINT@split@four }%
+\def\XINT@split@four #1#2#3#4#5{{#1#2#3#4#5}}%
+\def\XINT@split@five@andend
+ {\expandafter\XINT@split@endsplit\XINT@split@five }%
+\def\XINT@split@five #1#2#3#4#5#6{{#1#2#3#4#5#6000}}%
+\def\XINT@split@six@andend
+ {\expandafter\XINT@split@endsplit\XINT@split@six }%
+\def\XINT@split@six #1#2#3#4#5#6#7{{#1#2#3#4#5#6#700}}%
+\def\XINT@split@seven@andend
+ {\expandafter\XINT@split@endsplit\XINT@split@seven }%
+\def\XINT@split@seven #1#2#3#4#5#6#7#8{{#1#2#3#4#5#6#7#80}}%
+\def\XINT@split@endsplit #1#2\Z
+{%
+ \expandafter\expandafter\expandafter\XINT@split@endsplit@
+ \expandafter\expandafter\expandafter
+ {\romannumeral0\XINT@rev
+ {\Z\W\W\W\W\W\W\W #1\XINT@cuz@loop0\romannumeral}}%
+ {\romannumeral0\XINT@rev{#2}}%
+}%
+\def\XINT@split@endsplit@ #1#2%
+{%
+ \expandafter\space\expandafter {#2}{#1}%
+}%
+\XINT@restorecatcodes@endinput%
+\endinput
+%%
+%% End of file `xint.sty'.
diff --git a/Master/texmf-dist/tex/generic/xint/xintgcd.sty b/Master/texmf-dist/tex/generic/xint/xintgcd.sty
new file mode 100644
index 00000000000..3c7cc44b183
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xint/xintgcd.sty
@@ -0,0 +1,545 @@
+%%
+%% This is file `xintgcd.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xint.dtx (with options: `gcd')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from xintgcd.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.)
+%%----------------------------------------------------------------
+%% xint: Expandable operations on long numbers
+%% xintgcd: Euclidean algorithm 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@xintgcd.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{xintgcd}{\numexpr not available, aborting input}%
+ \aftergroup\endinput
+ \else
+ \ifx\x\relax % plain-TeX, first loading of xintgcd.sty
+ \ifx\w\relax % but xint.sty not yet loaded.
+ \y{xintgcd}{Package xint is required}%
+ \y{xintgcd}{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{xintgcd}{Package xint is required}%
+ \y{xintgcd}{Will try \string\RequirePackage{xint}}%
+ \def\z{\endgroup\RequirePackage{xint}}%
+ \fi
+ \else
+ \y{xintgcd}{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{xintgcd}{Loading of package xint failed, aborting input}%
+ \aftergroup\endinput
+ \fi
+ \ifx\w\empty % LaTeX, user gave a file name at the prompt
+ \y{xintgcd}{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@gcd@restorecatcodes@endinput
+ {%
+ \catcode36=\the\catcode36 % $
+ \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
+ \catcode36=3 % $
+ }%
+\x
+\begingroup
+ \catcode91=12 % [
+ \catcode93=12 % ]
+ \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@xintgcd.sty\endcsname
+\ProvidesPackage{xintgcd}%
+ [2013/03/28 v1.0 Euclide algorithm with xint package (jfB)]%
+\def\xintGCD {\romannumeral0\xintgcd }%
+\def\xintgcd #1%
+{%
+ \expandafter
+ \XINT@gcd
+ \expandafter
+ {\romannumeral0\xintabs {#1}}%
+}%
+\def\XINT@gcd #1#2%
+{%
+ \expandafter
+ \XINT@gcd@fork
+ \romannumeral0\xintabs {#2}\Z #1\Z
+}%
+\def\XINT@gcd@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@gcd@BisZero
+ #3\dummy \XINT@gcd@AisZero
+ 0\dummy \XINT@gcd@loop
+ \xint@UDforkzero
+ {#1#2}{#3#4}%
+}%
+\def\XINT@gcd@AisZero #1#2{ #1}%
+\def\XINT@gcd@BisZero #1#2{ #2}%
+\def\XINT@gcd@CheckRem #1#2\Z
+{%
+ \xint@zero #1\xint@gcd@end0\XINT@gcd@loop {#1#2}%
+}%
+\def\xint@gcd@end0\XINT@gcd@loop #1#2{ #2}%
+\def\XINT@gcd@loop #1#2%
+{%
+ \expandafter\expandafter\expandafter
+ \XINT@gcd@CheckRem
+ \expandafter\xint@secondoftwo
+ \romannumeral0\XINT@div@prepare {#1}{#2}\Z
+ {#1}%
+}%
+\def\xintBezout {\romannumeral0\xintbezout }%
+\def\xintbezout #1%
+{%
+ \expandafter\expandafter\expandafter
+ \xint@bezout
+ \expandafter\expandafter\expandafter
+ {#1}%
+}%
+\def\xint@bezout #1#2%
+{\expandafter\expandafter\expandafter
+ \XINT@bezout@fork #2\Z #1\Z
+}%
+\def\XINT@bezout@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDzerosfork
+ #1#3\dummy \XINT@bezout@botharezero
+ #10\dummy \XINT@bezout@secondiszero
+ #30\dummy \XINT@bezout@firstiszero
+ 00\dummy
+ {\xint@UDsignsfork
+ #1#3\dummy \XINT@bezout@minusminus % A < 0, B < 0
+ #1-\dummy \XINT@bezout@minusplus % A > 0, B < 0
+ #3-\dummy \XINT@bezout@plusminus % A < 0, B > 0
+ --\dummy \XINT@bezout@plusplus % A > 0, B > 0
+ \xint@UDforksigns }%
+ \xint@UDforkzeros
+ {#2}{#4}#1#3{#3#4}{#1#2}% #1#2=B, #3#4=A
+}%
+\def\XINT@bezout@botharezero #1#2#3#4#5#6%
+{%
+ \xintError:NoBezoutForZeros
+ \space {0}{0}{0}{0}{0}%
+}%
+\def\XINT@bezout@firstiszero #1#2#3#4#5#6%
+{%
+ \xint@UDsignfork
+ #3\dummy { {0}{#3#1}{0}{1}{#1}}%
+ -\dummy { {0}{#3#1}{0}{-1}{#1}}%
+ \xint@UDforksign
+}%
+\def\XINT@bezout@secondiszero #1#2#3#4#5#6%
+{%
+ \xint@UDsignfork
+ #4\dummy{ {#4#2}{0}{-1}{0}{#2}}%
+ -\dummy{ {#4#2}{0}{1}{0}{#2}}%
+ \xint@UDforksign
+}%
+\def\XINT@bezout@minusminus #1#2#3#4%
+{%
+ \expandafter\XINT@bezout@mm@post
+ \romannumeral0\XINT@bezout@loop@a 1{#1}{#2}1001%
+}%
+\def\XINT@bezout@mm@post #1#2%
+{%
+ \expandafter
+ \XINT@bezout@mm@postb
+ \expandafter
+ {\romannumeral0\xintopp{#2}}{\romannumeral0\xintopp{#1}}%
+}%
+\def\XINT@bezout@mm@postb #1#2%
+{%
+ \expandafter
+ \XINT@bezout@mm@postc
+ \expandafter {#2}{#1}%
+}%
+\def\XINT@bezout@mm@postc #1#2#3#4#5%
+{%
+ \space {#4}{#5}{#1}{#2}{#3}%
+}%
+\def\XINT@bezout@minusplus #1#2#3#4%
+{%
+ \expandafter\XINT@bezout@mp@post
+ \romannumeral0\XINT@bezout@loop@a 1{#1}{#4#2}1001%
+}%
+\def\XINT@bezout@mp@post #1#2%
+{%
+ \expandafter
+ \XINT@bezout@mp@postb
+ \expandafter
+ {\romannumeral0\xintopp {#2}}{#1}%
+}%
+\def\XINT@bezout@mp@postb #1#2#3#4#5%
+{%
+ \space {#4}{#5}{#2}{#1}{#3}%
+}%
+\def\XINT@bezout@plusminus #1#2#3#4%
+{%
+ \expandafter\XINT@bezout@pm@post
+ \romannumeral0\XINT@bezout@loop@a 1{#3#1}{#2}1001%
+}%
+\def\XINT@bezout@pm@post #1%
+{%
+ \expandafter
+ \XINT@bezout@pm@postb
+ \expandafter
+ {\romannumeral0\xintopp{#1}}%
+}%
+\def\XINT@bezout@pm@postb #1#2#3#4#5%
+{%
+ \space {#4}{#5}{#1}{#2}{#3}%
+}%
+\def\XINT@bezout@plusplus #1#2#3#4%
+{%
+ \expandafter\XINT@bezout@pp@post
+ \romannumeral0\XINT@bezout@loop@a 1{#3#1}{#4#2}1001%
+}%
+\def\XINT@bezout@pp@post #1#2#3#4#5%
+{%
+ \space {#4}{#5}{#1}{#2}{#3}%
+}%
+\def\XINT@bezout@loop@a #1#2#3%
+{%
+ \expandafter\XINT@bezout@loop@b
+ \expandafter{\the\numexpr -#1\expandafter }%
+ \romannumeral0\XINT@div@prepare {#2}{#3}{#2}%
+}%
+\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}}%
+ {#1}{#3}{#4}{#5}{#6}%
+}%
+\def\XINT@bezout@loop@c #1#2%
+{%
+ \expandafter
+ \XINT@bezout@loop@d
+ \expandafter
+ {#2}{#1}%
+}%
+\def\XINT@bezout@loop@d #1#2#3#4#5%
+{%
+ \XINT@bezout@loop@e #4\Z {#3}{#5}{#2}{#1}%
+}%
+\def\XINT@bezout@loop@e #1#2\Z
+{%
+ \xint@zero #1\xint@bezout@loop@exit0\XINT@bezout@loop@f
+ {#1#2}%
+}%
+\def\XINT@bezout@loop@f #1#2%
+{%
+ \XINT@bezout@loop@a {#2}{#1}%
+}%
+\def\xint@bezout@loop@exit0\XINT@bezout@loop@f #1#2%
+{%
+ \ifcase #2
+ \or \expandafter\XINT@bezout@exiteven
+ \else\expandafter\XINT@bezout@exitodd
+ \fi
+}%
+\def\XINT@bezout@exiteven #1#2#3#4#5%
+{%
+ \space {#5}{#4}{#1}%
+}%
+\def\XINT@bezout@exitodd #1#2#3#4#5%
+{%
+ \space {-#5}{-#4}{#1}%
+}%
+\def\xintEuclideAlgorithm {\romannumeral0\xinteuclidealgorithm }%
+\def\xinteuclidealgorithm #1%
+{%
+ \expandafter
+ \XINT@euc
+ \expandafter
+ {\romannumeral0\xintabs {#1}}%
+}%
+\def\XINT@euc #1#2%
+{%
+ \expandafter
+ \XINT@euc@fork
+ \romannumeral0\xintabs {#2}\Z #1\Z
+}%
+\def\XINT@euc@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@euc@BisZero
+ #3\dummy \XINT@euc@AisZero
+ 0\dummy \XINT@euc@a
+ \xint@UDforkzero
+ {0}{#1#2}{#3#4}{{#3#4}{#1#2}}{}\Z
+}%
+\def\XINT@euc@AisZero #1#2#3#4#5#6{ {1}{0}{#2}{#2}{0}{0}}%
+\def\XINT@euc@BisZero #1#2#3#4#5#6{ {1}{0}{#3}{#3}{0}{0}}%
+\def\XINT@euc@a #1#2#3%
+{%
+ \expandafter
+ \XINT@euc@b
+ \expandafter {\the\numexpr #1+1\expandafter }%
+ \romannumeral0\XINT@div@prepare {#2}{#3}{#2}%
+}%
+\def\XINT@euc@b #1#2#3#4%
+{%
+ \XINT@euc@c #3\Z {#1}{#3}{#4}{{#2}{#3}}%
+}%
+\def\XINT@euc@c #1#2\Z
+{%
+ \xint@zero #1\xint@euc@end0\XINT@euc@a
+}%
+\def\xint@euc@end0\XINT@euc@a #1#2#3#4\Z%
+{%
+ \expandafter\xint@euc@end@
+ \romannumeral0%
+ \XINT@rord@main {}#4{{#1}{#3}}%
+ \xint@UNDEF
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@UNDEF
+}%
+\def\xint@euc@end@ #1#2#3%
+{%
+ \space {#1}{#3}{#2}%
+}%
+\def\xintBezoutAlgorithm {\romannumeral0\xintbezoutalgorithm }%
+\def\xintbezoutalgorithm #1%
+{%
+ \expandafter
+ \XINT@bezalg
+ \expandafter
+ {\romannumeral0\xintabs {#1}}%
+}%
+\def\XINT@bezalg #1#2%
+{%
+ \expandafter
+ \XINT@bezalg@fork
+ \romannumeral0\xintabs {#2}\Z #1\Z
+}%
+\def\XINT@bezalg@fork #1#2\Z #3#4\Z
+{%
+ \xint@UDzerofork
+ #1\dummy \XINT@bezalg@BisZero
+ #3\dummy \XINT@bezalg@AisZero
+ 0\dummy \XINT@bezalg@a
+ \xint@UDforkzero
+ 0{#1#2}{#3#4}1001{{#3#4}{#1#2}}{}\Z
+}%
+\def\XINT@bezalg@AisZero #1#2#3\Z{ {1}{0}{0}{1}{#2}{#2}{1}{0}{0}{0}{0}{1}}%
+\def\XINT@bezalg@BisZero #1#2#3#4\Z{ {1}{0}{0}{1}{#3}{#3}{1}{0}{0}{0}{0}{1}}%
+\def\XINT@bezalg@a #1#2#3%
+{%
+ \expandafter
+ \XINT@bezalg@b
+ \expandafter {\the\numexpr #1+1\expandafter }%
+ \romannumeral0\XINT@div@prepare {#2}{#3}{#2}%
+}%
+\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}}%
+ {#1}{#2}{#3}{#4}{#5}{#6}%
+}%
+\def\XINT@bezalg@c #1#2#3#4#5#6%
+{%
+ \expandafter\XINT@bezalg@d\expandafter
+ {#2}{#3}{#4}{#5}{#6}{#1}%
+}%
+\def\XINT@bezalg@d #1#2#3#4#5#6#7#8%
+{%
+ \XINT@bezalg@e #4\Z {#2}{#4}{#5}{#1}{#6}{#7}{#8}{{#3}{#4}{#1}{#6}}%
+}%
+\def\XINT@bezalg@e #1#2\Z
+{%
+ \xint@zero #1\xint@bezalg@end0\XINT@bezalg@a
+}%
+\def\xint@bezalg@end0\XINT@bezalg@a #1#2#3#4#5#6#7#8\Z
+{%
+ \expandafter\xint@bezalg@end@
+ \romannumeral0%
+ \XINT@rord@main {}#8{{#1}{#3}}%
+ \xint@UNDEF
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@undef\xint@undef\xint@undef\xint@undef
+ \xint@UNDEF
+}%
+\def\xint@bezalg@end@ #1#2#3#4%
+{%
+ \space {#1}{#3}{0}{1}{#2}{#4}{1}{0}%
+}%
+\def\xintTypesetEuclideAlgorithm #1#2%
+{% l'algo remplace #1 et #2 par |#1| et |#2|
+ \par
+ \begingroup
+ \xintAssignArray\xintEuclideAlgorithm {#1}{#2}\to\U
+ \edef\A{\U2}\edef\B{\U4}\edef\N{\U1}%
+ \setbox 0 \vbox{\halign {$##$\cr \A\cr \B \cr}}%
+ \noindent
+ \count 255 1
+ \loop
+ \hbox to \wd 0 {\hfil$\U{\the\numexpr 2*\count 255\relax}$}%
+ ${} = \U{\the\numexpr 2*\count 255 + 3\relax}
+ \times \U{\the\numexpr 2*\count 255 + 2\relax}
+ + \U{\the\numexpr 2*\count 255 + 4\relax}$%
+ \ifnum \count 255 < \N
+ \hfill\break
+ \advance \count 255 1
+ \repeat
+ \par
+ \endgroup
+}%
+\def\xintTypesetBezoutAlgorithm #1#2%
+{%
+ \par
+ \begingroup
+ \parindent0pt
+ \xintAssignArray\xintBezoutAlgorithm {#1}{#2}\to\BEZ
+ \edef\A{\BEZ2}\edef\B{\BEZ6}\edef\N{\BEZ1}% A = |#1|, B = |#2|
+ \setbox 0 \vbox{\halign {$##$\cr \A\cr \B \cr}}%
+ \count 255 1
+ \loop
+ \noindent
+ \hbox to \wd 0 {\hfil$\BEZ{\the\numexpr 4*\count 255 - 2\relax}$}%
+ ${} = \BEZ{\the\numexpr 4*\count 255 + 5\relax}
+ \times \BEZ{\the\numexpr 4*\count 255 + 2\relax}
+ + \BEZ{\the\numexpr 4*\count 255 + 6\relax}$\hfill\break
+ \hbox to \wd 0 {\hfil$\BEZ{\the\numexpr 4*\count 255 +7\relax}$}%
+ ${} = \BEZ{\the\numexpr 4*\count 255 + 5\relax}
+ \times \BEZ{\the\numexpr 4*\count 255 + 3\relax}
+ + \BEZ{\the\numexpr 4*\count 255 - 1\relax}$\hfill\break
+ \hbox to \wd 0 {\hfil$\BEZ{\the\numexpr 4*\count 255 +8\relax}$}%
+ ${} = \BEZ{\the\numexpr 4*\count 255 + 5\relax}
+ \times \BEZ{\the\numexpr 4*\count 255 + 4\relax}
+ + \BEZ{\the\numexpr 4*\count 255 \relax}$
+ \endgraf
+ \ifnum \count 255 < \N
+ \advance \count 255 1
+ \repeat
+ \par
+ \edef\U{\BEZ{\the\numexpr 4*\N + 4\relax}}%
+ \edef\V{\BEZ{\the\numexpr 4*\N + 3\relax}}%
+ \edef\D{\BEZ5}%
+ \ifodd\N\relax
+ $\U\times\A - \V\times \B = -\D$%
+ \else
+ $\U\times\A - \V\times\B = \D$%
+ \fi
+ \par
+ \endgroup
+}%
+\XINT@gcd@restorecatcodes@endinput%
+\endinput
+%%
+%% End of file `xintgcd.sty'.