summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-04-04 23:01:55 +0000
committerKarl Berry <karl@freefriends.org>2013-04-04 23:01:55 +0000
commit70fea5b516faf568355ede6880705208e8c7b81b (patch)
treec3bf9811ea43eaffe271d2727ce29a038d444fd0 /Master/texmf-dist/tex
parentdf46a8f34a086b257d8c3e2a744d2af10aaed9f4 (diff)
xint (4apr13)
git-svn-id: svn://tug.org/texlive/trunk@29649 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xint.sty635
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintgcd.sty22
2 files changed, 335 insertions, 322 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty
index 6e8aa246253..44e71fb4383 100644
--- a/Master/texmf-dist/tex/generic/xint/xint.sty
+++ b/Master/texmf-dist/tex/generic/xint/xint.sty
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% xint.dtx (with options: `package')
+%% xint.dtx (with options: `xint')
%%
%% IMPORTANT NOTICE:
%%
@@ -20,11 +20,13 @@
%% 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
+%% Part of the xint bundle (version 1.01 of 2013/04/04)
+%% xint: Expandable operations on long numbers
%% Copyright (C) 2013 by Jean-Francois Burnol
%%----------------------------------------------------------------
+%%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
@@ -132,7 +134,7 @@
\fi
\expandafter\x\csname ver@xint.sty\endcsname
\ProvidesPackage{xint}%
- [2013/03/28 v1.0 Expandable operations on long numbers (jfB)]%
+ [2013/04/04 v1.01 Expandable operations on long numbers (jfB)]%
\def\xint@gobble #1{}%
\def\xint@gobble@one #1{}%
\def\xint@gobble@two #1#2{}%
@@ -157,11 +159,12 @@
\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@UDzerofork #10\dummy #2#3\xint@UDkrof {#2}%
+\def\xint@UDsignfork #1-\dummy #2#3\xint@UDkrof {#2}%
+\def\xint@UDzerosfork #100\dummy #2#3\xint@UDkrof {#2}%
+\def\xint@UDonezerofork #110\dummy #2#3\xint@UDkrof {#2}%
+\def\xint@UDzerominusfork #10-\dummy #2#3\xint@UDkrof {#2}%
+\def\xint@UDsignsfork #1--\dummy #2#3\xint@UDkrof {#2}%
\def\xint@afterfi #1#2\fi {\fi #1}%
\def\xintRev {\romannumeral0\xintrev }%
\def\xintrev #1%
@@ -180,7 +183,7 @@
\xint@UDsignfork
#1\dummy \XINT@rev@negative
-\dummy \XINT@rev@nonnegative
- \xint@UDforksign
+ \xint@UDkrof
#1#2%
}%
\def\XINT@rev@negative #1#2\Z
@@ -341,7 +344,7 @@
\xint@UDsignfork
#1\dummy {{0}}%
-\dummy {{0}#1}%
- \xint@UDforksign
+ \xint@UDkrof
}%
\def\XINT@Length #1{\romannumeral0\XINT@length@loop {0}#1\R\R\R\R\R\R\R\R\Z }%
\def\XINT@length #1{\XINT@length@loop {0}#1\R\R\R\R\R\R\R\R\Z }%
@@ -410,7 +413,10 @@
}%
\def\xintRelaxArray #1%
{%
- \edef\xint@arrayname {\expandafter\xint@gobble\string #1}%
+ \edef\XINT@restoreescapechar {\escapechar\the\escapechar\relax}%
+ \escapechar -1
+ \edef\xint@arrayname {\string #1}%
+ \XINT@restoreescapechar
\expandafter\let\expandafter\xint@temp
\csname\xint@arrayname 0\endcsname
\count 255 0
@@ -425,7 +431,10 @@
}%
\def\xintAssignArray #1\to #2%
{%
- \edef\xint@arrayname {\expandafter\xint@gobble\string #2}%
+ \edef\XINT@restoreescapechar {\escapechar\the\escapechar\relax}%
+ \escapechar -1
+ \edef\xint@arrayname {\string #1}%
+ \XINT@restoreescapechar
\count 255 0
\expandafter\expandafter\expandafter
\XINT@assignarray@loop #1\xint@undef
@@ -500,7 +509,7 @@
#1-\dummy {\expandafter0}% zero
0#1\dummy {\expandafter-\expandafter1}% n\'egatif
0-\dummy {\expandafter1}% positif
- \xint@UDforkminuszero
+ \xint@UDkrof
\xint@z
}%
\def\xintOpp {\romannumeral0\xintopp }%
@@ -517,7 +526,7 @@
#1-\dummy 0% zero
0#1\dummy {}% negative
0-\dummy {-#1}% positive
- \xint@UDforkminuszero
+ \xint@UDkrof
}%
\def\xintAbs {\romannumeral0\xintabs }%
\def\xintabs #1%
@@ -529,13 +538,10 @@
\def\XINT@abs #1%
{%
\xint@UDsignfork
- #1\dummy \XINT@abs@isnegative
- -\dummy \XINT@abs@isnonnegative
- \xint@UDforksign
- #1%
+ #1\dummy \space
+ -\dummy { #1}%
+ \xint@UDkrof
}%
-\def\XINT@abs@isnegative #1{ }%
-\def\XINT@abs@isnonnegative #1{ #1}%
\def\xintAdd {\romannumeral0\xintadd }%
\def\xintadd #1%
{%
@@ -562,8 +568,8 @@
#1-\dummy \XINT@add@minusplus % #1 = -
#3-\dummy \XINT@add@plusminus % #3 = -
--\dummy \XINT@add@plusplus
- \xint@UDforksigns}%
- \xint@UDforkzero
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3%
}%
\def\XINT@add@secondiszero #1#2#3#4{ #4#2}%
@@ -682,8 +688,8 @@
#1\dummy \XINT@sub@secondiszero
#3\dummy \XINT@sub@firstiszero
0\dummy \XINT@sub@plusplus
- \xint@UDforkzero}%
- \xint@UDforksigns
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3%
}%
\def\XINT@sub@secondiszero #1#2#3#4{ #4#2}%
@@ -746,7 +752,7 @@
\xint@UDzerofork
#1\dummy \XINT@sub@C % une retenue
0\dummy \XINT@sub@D % pas de retenue
- \xint@UDforkzero
+ \xint@UDkrof
{#7}#2#3#4#5%
}%
\def\XINT@sub@D #1#2\W\X\Y\Z
@@ -828,14 +834,13 @@
}%
\def\xint@sub@F\W\XINT@sub@Eonestep #1#2#3#4%
{%
- \xint@sub@Fthreewayfork
+ \xint@UDonezerofork
#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
+ \xint@UDkrof
{#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%
@@ -876,7 +881,7 @@
#1\dummy {\expandafter\space\expandafter-%
\xint@cleanupzeros@nospace}%
0\dummy { -1}%
- \xint@UDforkzero
+ \xint@UDkrof
#3%
}%
\def\xint@sub@ez\W\XINT@sub@Eenter #1%
@@ -884,7 +889,7 @@
\xint@UDzerofork
#1\dummy \XINT@sub@K % il y a une retenue
0\dummy \XINT@sub@L % pas de retenue
- \xint@UDforkzero
+ \xint@UDkrof
}%
\def\XINT@sub@L #1\W\X\Y\Z
{\XINT@cuz@loop #1\W\W\W\W\W\W\W\Z }%
@@ -943,8 +948,8 @@
#10\dummy \XINT@cmp@zeroplus
#30\dummy \XINT@cmp@pluszero
00\dummy \XINT@cmp@plusplus
- \xint@UDforkzeros}%
- \xint@UDforksigns
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3%
}%
\def\XINT@cmp@minusplus #1#2#3#4{ 1}%
@@ -1007,7 +1012,7 @@
\xint@UDzerofork
#1\dummy \XINT@cmp@K % il y a une retenue
0\dummy \XINT@cmp@L % pas de retenue
- \xint@UDforkzero
+ \xint@UDkrof
}%
\def\XINT@cmp@K #1\Z { -1}%
\def\XINT@cmp@L #1{\XINT@OneIfPositive@main #1}%
@@ -1058,8 +1063,8 @@
#1-\dummy \XINT@geq@minusplus
#3-\dummy \XINT@geq@plusminus
--\dummy \XINT@geq@plusplus
- \xint@UDforksigns}%
- \xint@UDforkzero
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3%
}%
\def\XINT@geq@secondiszero #1#2#3#4{ 1}%
@@ -1118,7 +1123,7 @@
\xint@UDzerofork
#1\dummy { 0} % il y a une retenue
0\dummy { 1} % pas de retenue
- \xint@UDforkzero
+ \xint@UDkrof
}%
\def\xintMax {\romannumeral0\xintmax }%
\def\xintmax #1%
@@ -1145,8 +1150,8 @@
#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
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3%
}%
\def\XINT@max@zerozero #1#2#3#4{ 0}%
@@ -1195,8 +1200,8 @@
#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
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3%
}%
\def\XINT@min@zerozero #1#2#3#4{ 0}%
@@ -1276,10 +1281,10 @@
\xint@UDsignfork
#1\dummy \XINT@sum@pushneg
-\dummy \XINT@sum@pushpos
- \xint@UDforksign
+ \xint@UDkrof
#1%
}%
-\def\XINT@sum@skipzeroinput #1\xint@UDforksign #2\Z #3#4%
+\def\XINT@sum@skipzeroinput #1\xint@UDkrof #2\Z #3#4%
{%
\XINT@sum@xpxpnext {#3}{#4}%
}%
@@ -1375,8 +1380,8 @@
#1-\dummy \XINT@mul@minusplus % #1 = -
#3-\dummy \XINT@mul@plusminus % #3 = -
--\dummy \XINT@mul@plusplus
- \xint@UDforksigns}%
- \xint@UDforkzero
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3%
}%
\def\XINT@mul@zero #1#2#3#4{ 0}%
@@ -1765,7 +1770,7 @@
\xint@UDsignfork
#1\dummy \XINT@prod@firstisneg
-\dummy \XINT@prod@firstispos
- \xint@UDforksign
+ \xint@UDkrof
#1%
}%
\def\XINT@prod@returnzero #1\relax { 0}%
@@ -1795,7 +1800,7 @@
\xint@UDsignfork
#1\dummy \XINT@prod@neg
-\dummy \XINT@prod@pos
- \xint@UDforksign
+ \xint@UDkrof
#1%
}%
\def\XINT@prod@pos #1\Z #2#3%
@@ -2108,7 +2113,7 @@
\xint@UDsignfork
#1\dummy \XINT@pow@Aneg
-\dummy \XINT@pow@Anonneg
- \xint@UDforksign
+ \xint@UDkrof
#1{#2}%
}%
\def\XINT@pow@Aneg #1#2#3%
@@ -2215,12 +2220,10 @@
}%
\def\xintQuo {\romannumeral0\xintquo }%
\def\xintRem {\romannumeral0\xintrem }%
-\def\xintquo {%
- \expandafter
+\def\xintquo {\expandafter
\xint@firstoftwo@andstop
\romannumeral0\xintdivision }%
-\def\xintrem {%
- \expandafter
+\def\xintrem {\expandafter
\xint@secondoftwo@andstop
\romannumeral0\xintdivision }%
\def\xintDivision {\romannumeral0\xintdivision }%
@@ -2247,8 +2250,8 @@
#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
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3% #1#2=B, #3#4=A
}%
\def\XINT@div@BisZero #1#2#3#4%
@@ -2407,7 +2410,7 @@
\or
\xint@afterfi {\expandafter\XINT@div@finished@c
\expandafter
- {\romannumeral0\XINT@dsh@preparegobble {#1}{#5}}}%
+ {\romannumeral0\XINT@dsh@checksignx #5\Z {#1}}}%
\fi
{#2}%
}%
@@ -2437,42 +2440,59 @@
\expandafter
{\the\numexpr #1/#4\relax}{#2}%
}%
-\def\XINT@div@final@d #1#2#3#4#5%
+\def\XINT@div@final@d #1#2#3#4#5% q,A,Q,L,B puis c
{%
\expandafter
- \XINT@div@final@e
+ \XINT@div@final@da
\expandafter
- {\romannumeral0\xintsub {\xint@cleanupzeros@nospace #2}%
- {\romannumeral0\XINT@mul@M {#1}#5\Z\Z\Z\Z }}%
- {#1}{#2}{#3}{#4}{#5}%
+ {\romannumeral0\XINT@mul@M {#1}#5\Z\Z\Z\Z }%
+ {\romannumeral0\xint@cleanupzeros@andstop #2}%
+ {#1}{#3}{#5}%
}%
-\def\XINT@div@final@e #1#2%
+\def\XINT@div@final@da #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
+ \expandafter\XINT@div@final@db\expandafter {#2}{#1}%
+}%
+\def\XINT@div@final@db #1#2% A,qB, puis q,Q,B,c
+{%
+ \ifcase\XINT@Geq {#1}{#2}
+ \expandafter\XINT@div@final@dc % A < qB
+ \or\expandafter\XINT@div@final@e % A au moins qB
\fi
{#1}{#2}%
}%
-\def\XINT@div@final@f #1#2#3#4#5#6#7%
+\def\XINT@div@final@e #1#2#3#4#5% A,qB,q,Q,B,puis c
+{%
+ \expandafter\XINT@div@final@f
+ \expandafter{\romannumeral0\xintsub {#1}{#2}}%
+ {\romannumeral0\xintadd {\XINT@Rev@andcleanupzeros{#4}}{#3}}%
+}%
+\def\XINT@div@final@dc #1#2#3% A sans leading zeros,trash,q,Q,B,c
+{%
+ \expandafter\XINT@div@final@dd
+ \expandafter{\the\numexpr #3-1\relax}{#1}%
+}%
+\def\XINT@div@final@dd #1#2#3#4% q,A,Q,B puis c
+{%
+ \expandafter\XINT@div@final@f
+ \expandafter{\romannumeral0\xintsub
+ {#2}{\romannumeral0\XINT@mul@M {#1}#4\Z\Z\Z\Z }}%
+ {\romannumeral0\xintadd {\XINT@Rev@andcleanupzeros{#3}}{#1}}%
+}%
+\def\XINT@div@final@f #1#2#3% R,Q à développer,c
{%
\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}}}%
+ \expandafter % pas de leading zeros dans #1=R
+ {\romannumeral0\XINT@dsh@checksignx #3\Z {#1}}}%
\fi
- {\romannumeral0\xintadd {\XINT@Rev@andcleanupzeros{#4}}{#2}}%
+ {#2}%
}%
\def\XINT@div@final@end #1#2%
{%
- \expandafter\space\expandafter
- {#2}{#1}%
+ \expandafter\space\expandafter {#2}{#1}%
}%
\def\XINT@div@body@a #1%
{%
@@ -2649,7 +2669,7 @@
\xint@UDzerofork
#1\dummy \XINT@div@sub@C %
0\dummy \XINT@div@sub@D % pas de retenue
- \xint@UDforkzero
+ \xint@UDkrof
{#7}#2#3#4#5%
}%
\def\XINT@div@sub@D #1#2\W\X\Y\Z
@@ -2708,7 +2728,7 @@
#1-\dummy {\expandafter 0}% zero
0#1\dummy {\expandafter #2}% negative
0-\dummy {\expandafter #1}% positive
- \xint@UDforkminuszero
+ \xint@UDkrof
\xint@z
}%
\def\xintLDg {\romannumeral0\xintldg }%
@@ -2766,7 +2786,7 @@
\expandafter\expandafter\expandafter
\XINT@dsr@a
\expandafter\expandafter\expandafter
- {#1}\W\Z
+ {#1}\W\Z
}%
\def\XINT@DSR #1{\romannumeral0\XINT@dsr@a {#1}\W\Z }%
\def\XINT@dsr@a
@@ -2785,234 +2805,226 @@
}%
\def\xint@dsr@onedigit #1\XINT@rev #2{ 0}%
\def\XINT@dsr@removew #1\W { }%
+\def\xintDSHr {\romannumeral0\xintdshr }%
+\def\xintdshr #1%
+{\expandafter\expandafter\expandafter
+ \XINT@dshr@checkxpositive #1\Z
+}%
+\def\XINT@dshr@checkxpositive #1%
+{%
+ \xint@UDzerominusfork
+ 0#1\dummy \XINT@dshr@xzeroorneg
+ #1-\dummy \XINT@dshr@xzeroorneg
+ 0-\dummy \XINT@dshr@xpositive
+ \xint@UDkrof #1%
+}%
+\def\XINT@dshr@xzeroorneg #1\Z #2{ 0}%
+\def\XINT@dshr@xpositive #1\Z
+{%
+ \expandafter
+ \xint@secondoftwo@andstop
+ \romannumeral0\xintdsx {#1}%
+}%
\def\xintDSH {\romannumeral0\xintdsh }%
-\def\xintdsh #1%
+\def\xintdsh #1#2%
{%
\expandafter\expandafter\expandafter
- \xint@dsh
+ \xint@dsh
\expandafter\expandafter\expandafter
- {#1}%
+ {#2}{#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}%
+ \XINT@dsh@checksignx
+ #2\Z {#1}%
}%
-\def\XINT@DSH {\romannumeral0\XINT@dsh@checkxsize }%
-\def\XINT@dsh@checkxsize #1%
+\def\XINT@dsh@checksignx #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
+ \xint@UDzerominusfork
+ #1-\dummy \XINT@dsh@xiszero
+ 0#1\dummy \XINT@dsx@xisNeg
+ 0-\dummy {\XINT@dsh@xisPos #1}%
+ \xint@UDkrof
}%
-\def\XINT@dsh #1#2{\XINT@dsh@checkAsign #2\Z {#1}}%
-\def\XINT@dsh@checkAsign #1%
+\def\XINT@dsh@xiszero #1\Z #2{ #2}%
+\def\XINT@dsh@xisPos #1\Z #2%
{%
- \xint@UDzerominusfork
- #1-\dummy \XINT@dsh@AisZero
- 0#1\dummy \XINT@dsh@AisNeg
- 0-\dummy {\XINT@dsh@directionfork #1}%
- \xint@UDforkminuszero
+ \expandafter
+ \xint@firstoftwo@andstop
+ \romannumeral0\XINT@dsx@checksignA #2\Z {#1}%
}%
-\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%
+\def\xintDSx {\romannumeral0\xintdsx }%
+\def\xintdsx #1#2%
{%
- \expandafter\space
- \xint@UDzerofork
- #1\dummy {0}%
- 0\dummy {-#1}%
- \xint@UDforkzero
+ \expandafter\expandafter\expandafter
+ \xint@dsx
+ \expandafter\expandafter\expandafter
+ {#2}{#1}%
}%
-\def\XINT@dsh@directionfork #1\Z #2%
+\def\xint@dsx #1#2%
{%
- \XINT@dsh@checkxsign #2\Z {#1}%
+ \expandafter\expandafter\expandafter
+ \XINT@dsx@checksignx
+ #2\Z {#1}%
}%
-\def\XINT@dsh@checkxsign #1%
+\def\XINT@DSx #1#2{\romannumeral0\XINT@dsx@checksignx #1\Z {#2}}%
+\def\XINT@dsx #1#2{\XINT@dsx@checksignx #1\Z {#2}}%
+\def\XINT@dsx@checksignx #1%
{%
\xint@UDzerominusfork
- #1-\dummy \XINT@dsh@donothing
- 0#1\dummy \XINT@dsh@shiftleft
- 0-\dummy {\XINT@dsh@shiftright #1}%
- \xint@UDforkminuszero
+ #1-\dummy \XINT@dsx@xisZero
+ 0#1\dummy \XINT@dsx@xisNeg
+ 0-\dummy {\XINT@dsx@xisPos #1}%
+ \xint@UDkrof
}%
-\def\XINT@dsh@donothing #1\Z #2{ #2}%
-\def\XINT@dsh@shiftright #1\Z #2%
+\def\XINT@dsx@xisZero #1\Z #2{ {#2}{0}}%
+\def\XINT@dsx@xisNeg #1\Z
{%
- \ifnum \XINT@Length {#2} > #1
- \expandafter\XINT@dsh@preparegobble
+ \ifnum\XINT@Len {#1} > 9
+ \xint@afterfi {\xintError:TooBigDecimalShift
+ \XINT@dsx@toobigx }%
\else
- \expandafter\XINT@dsh@returnzero
+ \expandafter \XINT@dsx@zeroloop
\fi
- {#2}{#1}%
-}%
-\def\XINT@dsh@returnzero #1#2{ 0}%
-\def\XINT@dsh@preparegobble #1%
-{%
- \expandafter
- \XINT@dsh@preparegobble@
- \expandafter
- {\romannumeral0\XINT@rev{#1}}%
+ {#1}\Z
}%
-\def\XINT@dsh@preparegobble@ #1#2{\XINT@dsh@gobbleloop {#2}#1\Z }%
-\def\XINT@dsh@gobbleloop #1%
+\def\XINT@dsx@toobigx #1\Z #2{ #2}%
+\def\XINT@dsx@zeroloop #1%
{%
\ifcase #1
- \expandafter\XINT@dsh@endgobble
+ \expandafter \XINT@dsx@exit
\or
- \expandafter\XINT@dsh@gobble@one@andend
+ \expandafter \XINT@dsx@exiti
\or
- \expandafter\XINT@dsh@gobble@two@andend
+ \expandafter \XINT@dsx@exitii
\or
- \expandafter\XINT@dsh@gobble@three@andend
+ \expandafter \XINT@dsx@exitiii
\or
- \expandafter\XINT@dsh@gobble@four@andend
+ \expandafter \XINT@dsx@exitiv
\or
- \expandafter\XINT@dsh@gobble@five@andend
+ \expandafter \XINT@dsx@exitv
\or
- \expandafter\XINT@dsh@gobble@six@andend
+ \expandafter \XINT@dsx@exitvi
\or
- \expandafter\XINT@dsh@gobble@seven@andend
+ \expandafter \XINT@dsx@exitvii
\else
- \expandafter \XINT@dsh@gobbleloop
- \expandafter
- {\the\numexpr
- #1-8\expandafter\expandafter\expandafter }%
- \expandafter
- \xint@gobble@eight
+ \xint@afterfi
+ {\expandafter
+ \XINT@dsx@zeroloop
+ \expandafter {\the\numexpr #1-8}00000000%
+ }%
\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
+\def\XINT@dsx@exit #1\Z
+ {\XINT@dsx@addzeros {#1}}%
+\def\XINT@dsx@exiti #1\Z
+ {\XINT@dsx@addzeros {0#1}}%
+\def\XINT@dsx@exitii #1\Z
+ {\XINT@dsx@addzeros {00#1}}%
+\def\XINT@dsx@exitiii #1\Z
+ {\XINT@dsx@addzeros {000#1}}%
+\def\XINT@dsx@exitiv #1\Z
+ {\XINT@dsx@addzeros {0000#1}}%
+\def\XINT@dsx@exitv #1\Z
+ {\XINT@dsx@addzeros {00000#1}}%
+\def\XINT@dsx@exitvi #1\Z
+ {\XINT@dsx@addzeros {000000#1}}%
+\def\XINT@dsx@exitvii #1\Z
+ {\XINT@dsx@addzeros {0000000#1}}%
+\def\XINT@dsx@addzeros #1#2{ #2#1}%
+\def\XINT@dsx@xisPos #1\Z #2%
+{%
+ \XINT@dsx@checksignA #2\Z {#1}%
+}%
+\def\XINT@dsx@checksignA #1%
{%
- \XINT@rev{#1}%
+ \xint@UDzerominusfork
+ #1-\dummy \XINT@dsx@AisZero
+ 0#1\dummy \XINT@dsx@AisNeg
+ 0-\dummy {\XINT@dsx@AisPos #1}%
+ \xint@UDkrof
}%
-\def\XINT@dsh@shiftleft #1\Z
+\def\XINT@dsx@AisZero #1\Z #2{ {0}{0}}%
+\def\XINT@dsx@AisNeg #1\Z #2%
{%
- \XINT@dsh@zeroloop {#1}\Z
+ \expandafter
+ \XINT@dsx@AisNeg@dosplit@andcheckfirst
+ \romannumeral0\XINT@split@checksizex {#2}{#1}%
}%
-\def\XINT@dsh@zeroloop #1%
+\def\XINT@dsx@AisNeg@dosplit@andcheckfirst #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
+ \XINT@dsx@AisNeg@checkiffirstempty #1\Z
+}%
+\def\XINT@dsx@AisNeg@checkiffirstempty #1%
+{%
+ \xint@z #1\XINT@dsx@AisNeg@finish@zero\Z
+ \XINT@dsx@AisNeg@finish@notzero #1%
+}%
+\def\XINT@dsx@AisNeg@finish@zero\Z
+ \XINT@dsx@AisNeg@finish@notzero\Z #1%
+{%
+ \expandafter
+ \XINT@dsx@end
+ \expandafter {\romannumeral0\XINT@num {-#1}}{0}%
+}%
+\def\XINT@dsx@AisNeg@finish@notzero #1\Z #2%
+{%
+ \expandafter
+ \XINT@dsx@end
+ \expandafter {\romannumeral0\XINT@num {#2}}{-#1}%
+}%
+\def\XINT@dsx@AisPos #1\Z #2%
+{%
+ \expandafter
+ \XINT@dsx@AisPos@finish
+ \romannumeral0\XINT@split@checksizex {#2}{#1}%
+}%
+\def\XINT@dsx@AisPos@finish #1#2%
+{%
+ \expandafter
+ \XINT@dsx@end
+ \expandafter {\romannumeral0\XINT@num {#2}}%
+ {\romannumeral0\XINT@num {#1}}%
+}%
+\def\XINT@dsx@end #1#2%
+{%
+ \expandafter\space\expandafter{#2}{#1}%
}%
-\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
+ \expandafter
+ \xint@firstoftwo@andstop
+ \romannumeral0\xintdecsplit
}%
\def\xintdecsplitr
{%
- \expandafter
- \xint@secondoftwo@andstop
- \romannumeral0\xintdecsplit
+ \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%
+\def\xintdecsplit #1#2%
{%
\expandafter
- \XINT@split@checkifAzero
+ \xint@split
\expandafter
- {\romannumeral0\xintabs {#2}}{#1}% fait expansion de A
+ {\romannumeral0\xintabs {#2}}{#1}% fait expansion de A
}%
-\def\XINT@split@checkifAzero #1#2%
+\def\xint@split #1#2%
{%
- \ifcase \XINT@Sgn {#1}
- \expandafter\XINT@split@AisZero
- \fi
- \XINT@split@checkxsize {#2}{#1}%
+ \expandafter\expandafter\expandafter
+ \XINT@split@checksizex
+ \expandafter\expandafter\expandafter
+ {#2}{#1}%
}%
-\def\XINT@split@AisZero\XINT@split@checkxsize #1#2{ {0}{0}}%
-\def\XINT@split@checkxsize #1%
+\def\XINT@split@checksizex #1%
{%
\ifnum\XINT@Len {#1} > 9
- \expandafter\XINT@split@bigx
+ \xint@afterfi {\xintError:TooBigDecimalSplit
+ \XINT@split@bigx }%
\else
\expandafter\XINT@split@xfork
\fi
@@ -3021,25 +3033,23 @@
\def\XINT@split@bigx #1\Z #2%
{%
\ifcase\XINT@Sgn {#1}
- \or \xint@afterfi { {0}{#2}}%
+ \or \xint@afterfi { {}{#2}}% positive big x
\else
- \xint@afterfi
- {\expandafter\xintError:TooBigDecimalSplit
- \space{0}{0}}%
+ \xint@afterfi { {#2}{}}% negative big x
\fi
}%
\def\XINT@split@xfork #1%
{%
\xint@UDzerominusfork
- #1-\dummy \XINT@split@donothing
+ #1-\dummy \XINT@split@zerosplit
0#1\dummy \XINT@split@fromleft
- 0-\dummy {\XINT@split@splitright #1}%
- \xint@UDforkminuszero
+ 0-\dummy {\XINT@split@fromright #1}%
+ \xint@UDkrof
}%
-\def\XINT@split@donothing #1\Z #2{ {#2}{0}}%
+\def\XINT@split@zerosplit #1\Z #2{ {#2}{}}%
\def\XINT@split@fromleft #1\Z #2%
{%
- \XINT@split@fromleft@loop {#1}{}#2\W\W\W\W\W\W\W\W\Z %
+ \XINT@split@fromleft@loop {#1}{}#2\W\W\W\W\W\W\W\W\Z
}%
\def\XINT@split@fromleft@loop #1%
{%
@@ -3121,88 +3131,89 @@
{%
\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%
+\def\XINT@split@fromright #1\Z #2%
{%
\expandafter
- \XINT@split@@pre
+ \XINT@split@fromright@a
\expandafter
- {\romannumeral0\XINT@rev{#1}}%
+ {\romannumeral0\XINT@rev {#2}}{#1}{#2}%
}%
-\def\XINT@split@@pre #1#2%
+\def\XINT@split@fromright@a #1#2%
{%
- \XINT@split@loop {#2}{}#1\Z
+ \XINT@split@fromright@loop {#2}{}#1\W\W\W\W\W\W\W\W\Z
}%
-\def\XINT@split@loop #1%
+\def\XINT@split@fromright@loop #1%
{%
\ifcase #1
- \expandafter\XINT@split@endsplit
+ \expandafter\XINT@split@fromright@endsplit
\or
- \expandafter\XINT@split@one@andend
+ \expandafter\XINT@split@fromright@one@andend
\or
- \expandafter\XINT@split@two@andend
+ \expandafter\XINT@split@fromright@two@andend
\or
- \expandafter\XINT@split@three@andend
+ \expandafter\XINT@split@fromright@three@andend
\or
- \expandafter\XINT@split@four@andend
+ \expandafter\XINT@split@fromright@four@andend
\or
- \expandafter\XINT@split@five@andend
+ \expandafter\XINT@split@fromright@five@andend
\or
- \expandafter\XINT@split@six@andend
+ \expandafter\XINT@split@fromright@six@andend
\or
- \expandafter\XINT@split@seven@andend
+ \expandafter\XINT@split@fromright@seven@andend
\else
- \expandafter \XINT@split@loop
+ \expandafter \XINT@split@fromright@loop@perhaps
\expandafter
{\the\numexpr
#1-8\expandafter\expandafter\expandafter }%
\expandafter
- \XINT@split@eight
+ \XINT@split@fromright@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@fromright@endsplit #1#2\W #3\Z #4%
+{%
+ \expandafter
+ \space
+ \expandafter {\romannumeral0\XINT@rev{#2}}{#1}%
}%
-\def\XINT@split@endsplit@ #1#2%
+\def\XINT@split@fromright@eight #1#2#3#4#5#6#7#8#9%
{%
- \expandafter\space\expandafter {#2}{#1}%
+ #9{#9#8#7#6#5#4#3#2#1}%
+}%
+\def\XINT@split@fromright@loop@perhaps #1#2%
+{%
+ \xint@w #2\XINT@split@fromright@toofar\W\XINT@split@fromright@loop
+ {#1}%
}%
+\def\XINT@split@fromright@toofar\W\XINT@split@fromright@loop #1#2#3\Z
+ { {}}%
+\def\XINT@split@fromright@one@andend
+ {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@one }%
+\def\XINT@split@fromright@one #1#2{#2{#2#1}}%
+\def\XINT@split@fromright@two@andend
+ {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@two }%
+\def\XINT@split@fromright@two #1#2#3{#3{#3#2#1}}%
+\def\XINT@split@fromright@three@andend
+ {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@three }%
+\def\XINT@split@fromright@three #1#2#3#4{#4{#4#3#2#1}}%
+\def\XINT@split@fromright@four@andend
+ {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@four }%
+\def\XINT@split@fromright@four #1#2#3#4#5{#5{#5#4#3#2#1}}%
+\def\XINT@split@fromright@five@andend
+ {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@five }%
+\def\XINT@split@fromright@five #1#2#3#4#5#6{#6{#6#5#4#3#2#1}}%
+\def\XINT@split@fromright@six@andend
+ {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@six }%
+\def\XINT@split@fromright@six #1#2#3#4#5#6#7{#7{#7#6#5#4#3#2#1}}%
+\def\XINT@split@fromright@seven@andend
+ {\expandafter\XINT@split@fromright@checkiftoofar\XINT@split@fromright@seven }%
+\def\XINT@split@fromright@seven #1#2#3#4#5#6#7#8{#8{#8#7#6#5#4#3#2#1}}%
+\def\XINT@split@fromright@checkiftoofar #1%
+{%
+ \xint@w #1\XINT@split@fromright@wenttoofar\W
+ \XINT@split@fromright@endsplit
+}%
+\def\XINT@split@fromright@wenttoofar\W\XINT@split@fromright@endsplit #1\Z #2%
+ { {}{#2}}%
\XINT@restorecatcodes@endinput%
\endinput
%%
diff --git a/Master/texmf-dist/tex/generic/xint/xintgcd.sty b/Master/texmf-dist/tex/generic/xint/xintgcd.sty
index 3c7cc44b183..08993b3a5fc 100644
--- a/Master/texmf-dist/tex/generic/xint/xintgcd.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintgcd.sty
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% xint.dtx (with options: `gcd')
+%% xint.dtx (with options: `xintgcd')
%%
%% IMPORTANT NOTICE:
%%
@@ -20,11 +20,13 @@
%% 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
+%% Part of the xint bundle (version 1.01 of 2013/04/04)
%% xintgcd: Euclidean algorithm with xint package
%% Copyright (C) 2013 by Jean-Francois Burnol
%%----------------------------------------------------------------
+%%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
@@ -160,7 +162,7 @@
\fi
\expandafter\x\csname ver@xintgcd.sty\endcsname
\ProvidesPackage{xintgcd}%
- [2013/03/28 v1.0 Euclide algorithm with xint package (jfB)]%
+ [2013/04/04 v1.01 Euclide algorithm with xint package (jfB)]%
\def\xintGCD {\romannumeral0\xintgcd }%
\def\xintgcd #1%
{%
@@ -181,7 +183,7 @@
#1\dummy \XINT@gcd@BisZero
#3\dummy \XINT@gcd@AisZero
0\dummy \XINT@gcd@loop
- \xint@UDforkzero
+ \xint@UDkrof
{#1#2}{#3#4}%
}%
\def\XINT@gcd@AisZero #1#2{ #1}%
@@ -223,8 +225,8 @@
#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
+ \xint@UDkrof }%
+ \xint@UDkrof
{#2}{#4}#1#3{#3#4}{#1#2}% #1#2=B, #3#4=A
}%
\def\XINT@bezout@botharezero #1#2#3#4#5#6%
@@ -237,14 +239,14 @@
\xint@UDsignfork
#3\dummy { {0}{#3#1}{0}{1}{#1}}%
-\dummy { {0}{#3#1}{0}{-1}{#1}}%
- \xint@UDforksign
+ \xint@UDkrof
}%
\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
+ \xint@UDkrof
}%
\def\XINT@bezout@minusminus #1#2#3#4%
{%
@@ -379,7 +381,7 @@
#1\dummy \XINT@euc@BisZero
#3\dummy \XINT@euc@AisZero
0\dummy \XINT@euc@a
- \xint@UDforkzero
+ \xint@UDkrof
{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}}%
@@ -433,7 +435,7 @@
#1\dummy \XINT@bezalg@BisZero
#3\dummy \XINT@bezalg@AisZero
0\dummy \XINT@bezalg@a
- \xint@UDforkzero
+ \xint@UDkrof
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}}%