diff options
author | Karl Berry <karl@freefriends.org> | 2016-03-13 21:18:24 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-03-13 21:18:24 +0000 |
commit | 1dece60d27697bab91c26ad47b09149c34bfe189 (patch) | |
tree | 086aeeeb33674fa6afe46f67828f1fa5944271f0 /Master/texmf-dist/tex | |
parent | 1dd15ac4ccc619c707b7418b3710e5f379f72f08 (diff) |
xint (13mar16)
git-svn-id: svn://tug.org/texlive/trunk@40014 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xint.sty | 879 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintbinhex.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintcfrac.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintcore.sty | 203 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintexpr.sty | 399 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintfrac.sty | 1868 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintgcd.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintkernel.sty | 10 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintseries.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttools.sty | 6 |
10 files changed, 2080 insertions, 1309 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty index 9c485509d83..85e1274744c 100644 --- a/Master/texmf-dist/tex/generic/xint/xint.sty +++ b/Master/texmf-dist/tex/generic/xint/xint.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xint: Expandable operations on big integers %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty (loaded by xintcore.sty) \XINT_providespackage \ProvidesPackage{xint}% - [2015/11/22 v1.2e Expandable operations on big integers (jfB)]% + [2016/03/12 1.2f Expandable operations on big integers (JFB)]% \long\def\xint_firstofthree #1#2#3{#1}% \long\def\xint_secondofthree #1#2#3{#2}% \long\def\xint_thirdofthree #1#2#3{#3}% @@ -378,9 +378,7 @@ \fi { -1}{ 1}% }% -%%%%%%%%%%%% \def\XINT_cmp_aa {\expandafter\XINT_cmp_w\the\numexpr\XINT_cmp_a \xint_c_i }% -%%%%%%%%%%%% \def\XINT_cmp_a #1!#2!#3!#4!#5\W #6!#7!#8!#9!% {% \XINT_cmp_b #1!#6!#2!#7!#3!#8!#4!#9!#5\W @@ -441,7 +439,6 @@ {% \XINT_cmp_k #1#2!% }% -%%%%%%%%%%%% \def\XINT_cmp_k #1#2\W {% \xint_UDzerofork @@ -533,8 +530,8 @@ {% \expandafter\XINT_geq_fork\expandafter #1\romannumeral`&&@#3\Z #2\Z }% -\let\XINT_geq_pre \xintiigeq % TEMPORAIRE -\let\XINT_Geq \xintGeq % TEMPORAIRE ATTENTION FAIT xintNum +\let\XINT_geq_pre \xintiigeq % TEMPORAIRE (oui, mais depuis quand ?) +\let\XINT_Geq \xintGeq % TEMPORAIRE ATTENTION FAIT xintNum (et alors?) \def\XINT_geq #1#2\Z #3% {% \expandafter\XINT_geq_fork\expandafter #1\romannumeral0\xintnum{#3}\Z #2\Z @@ -590,7 +587,7 @@ \else \expandafter\xint_secondoftwo \fi - \XINT_geq_aa {\XINT_geq_distinctlengths {#1}{#2}} + \XINT_geq_aa {\XINT_geq_distinctlengths {#1}{#2}}% }% \def\XINT_geq_distinctlengths #1#2#3\W #4\W {% @@ -601,9 +598,7 @@ \fi { 1}{ 0}% }% -%%%%%%%%%%%% \def\XINT_geq_aa {\expandafter\XINT_geq_w\the\numexpr\XINT_geq_a \xint_c_i }% -%%%%%%%%%%%% \def\XINT_geq_a #1!#2!#3!#4!#5\W #6!#7!#8!#9!% {% \XINT_geq_b #1!#6!#2!#7!#3!#8!#4!#9!#5\W @@ -664,7 +659,6 @@ {% \XINT_geq_k #1#2!% }% -%%%%%%%%%%%% \def\XINT_geq_k #1#2\W {% \xint_UDzerofork @@ -1012,7 +1006,7 @@ 0-{\XINT_dsx_xisPos #1}% \krof }% -\def\XINT_dsx_xisZero #1\Z #2{ {#2}{0}}% attention comme x > 0 +\def\XINT_dsx_xisZero #1\Z #2{{#2}{0}}% attention comme x > 0 \def\XINT_dsx_xisNeg_checkA #1\Z #2% {% \XINT_dsx_xisNeg_checkA_ #2\Z {#1}% @@ -1020,34 +1014,21 @@ \def\XINT_dsx_xisNeg_checkA_ #1#2\Z #3% {% \xint_gob_til_zero #1\XINT_dsx_xisNeg_Azero 0% - \XINT_dsx_xisNeg_checkx {#3}{#3}{}\Z {#1#2}% + \XINT_dsx_zeroloop #3.{}\Z {#1#2}% }% \def\XINT_dsx_xisNeg_Azero #1\Z #2{ 0}% -\def\XINT_dsx_xisNeg_checkx #1% +\def\XINT_dsx_addzerosnofuss #1{\XINT_dsx_zeroloop #1.{}\Z }% +\def\XINT_dsx_zeroloop #1.#2% {% - \ifnum #1>1000000 - \xint_afterfi - {\xintError:TooBigDecimalShift - \expandafter\space\expandafter 0\xint_gobble_iv }% - \else - \expandafter \XINT_dsx_zeroloop - \fi -}% -\def\XINT_dsx_addzerosnofuss #1{\XINT_dsx_zeroloop {#1}{}\Z }% -\def\XINT_dsx_zeroloop #1#2% -{% - \ifnum #1<\xint_c_ix \XINT_dsx_exita\fi - \expandafter\XINT_dsx_zeroloop\expandafter - {\the\numexpr #1-\xint_c_viii}{#200000000}% -}% -\def\XINT_dsx_exita\fi\expandafter\XINT_dsx_zeroloop -{% - \fi\expandafter\XINT_dsx_exitb + \ifnum #1<\xint_c_ix \expandafter\XINT_dsx_exita\fi + \expandafter\XINT_dsx_zeroloop\the\numexpr #1-\xint_c_viii.{#200000000}% }% -\def\XINT_dsx_exitb #1#2% +\def\XINT_dsx_exita + \expandafter\XINT_dsx_zeroloop\the\numexpr #1-\xint_c_viii.#2% {% \expandafter\expandafter\expandafter - \XINT_dsx_addzeros\csname xint_gobble_\romannumeral -#1\endcsname #2% + \XINT_dsx_addzeros\csname xint_gobble_\expandafter + \romannumeral\numexpr \xint_c_viii-(#1)\endcsname #2% }% \def\XINT_dsx_addzeros #1\Z #2{ #2#1}% \def\XINT_dsx_xisPos #1\Z #2% @@ -1062,28 +1043,23 @@ 0-{\XINT_dsx_AisPos #1}% \krof }% -\def\XINT_dsx_AisZero #1\Z #2{ {0}{0}}% +\def\XINT_dsx_AisZero #1\Z #2{{0}{0}}% \def\XINT_dsx_AisNeg #1\Z #2% {% - \expandafter\XINT_dsx_AisNeg_dosplit_andcheckfirst - \romannumeral0\XINT_split_checksizex {#2}{#1}% -}% -\def\XINT_dsx_AisNeg_dosplit_andcheckfirst #1% -{% - \XINT_dsx_AisNeg_checkiffirstempty #1\Z + \expandafter\XINT_dsx_AisNeg_checkiffirstempty + \romannumeral0\XINT_split_xfork #2.#1\W\W\W\W\W\W\W\W\Z }% \def\XINT_dsx_AisNeg_checkiffirstempty #1% {% - \xint_gob_til_Z #1\XINT_dsx_AisNeg_finish_zero\Z + \xint_gob_til_dot #1\XINT_dsx_AisNeg_finish_zero.% \XINT_dsx_AisNeg_finish_notzero #1% }% -\def\XINT_dsx_AisNeg_finish_zero\Z - \XINT_dsx_AisNeg_finish_notzero\Z #1% +\def\XINT_dsx_AisNeg_finish_zero.\XINT_dsx_AisNeg_finish_notzero.#1.% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {-#1}}{0}% }% -\def\XINT_dsx_AisNeg_finish_notzero #1\Z #2% +\def\XINT_dsx_AisNeg_finish_notzero #1.#2.% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {#2}}{-#1}% @@ -1091,57 +1067,39 @@ \def\XINT_dsx_AisPos #1\Z #2% {% \expandafter\XINT_dsx_AisPos_finish - \romannumeral0\XINT_split_checksizex {#2}{#1}% + \romannumeral0\XINT_split_xfork #2.#1\W\W\W\W\W\W\W\W\Z }% -\def\XINT_dsx_AisPos_finish #1#2% +\def\XINT_dsx_AisPos_finish #1.#2.% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {#2}}% {\romannumeral0\XINT_num {#1}}% }% -\edef\XINT_dsx_end #1#2% -{% - \noexpand\expandafter\space\noexpand\expandafter{#2}{#1}% -}% -\def\xintDecSplitL {\romannumeral0\xintdecsplitl }% -\def\xintDecSplitR {\romannumeral0\xintdecsplitr }% -\def\xintdecsplitl -{% - \expandafter\xint_firstoftwo_thenstop - \romannumeral0\xintdecsplit -}% -\def\xintdecsplitr -{% - \expandafter\xint_secondoftwo_thenstop - \romannumeral0\xintdecsplit -}% +\def\XINT_dsx_end #1#2{\expandafter{#2}{#1}}% \def\xintDecSplit {\romannumeral0\xintdecsplit }% \def\xintdecsplit #1#2% {% - \expandafter \xint_split \expandafter - {\romannumeral0\xintiiabs {#2}}{#1}% fait expansion de A + \expandafter\XINT_split_finish + \romannumeral0\expandafter\XINT_split_xfork + \the\numexpr #1\expandafter.\romannumeral0\xintiiabs {#2}\W\W\W\W\W\W\W\W\Z }% -\def\xint_split #1#2% +\def\xintDecSplitL {\romannumeral0\xintdecsplitl }% +\def\xintdecsplitl #1#2% {% - \expandafter\XINT_split_checksizex\expandafter{\the\numexpr #2}{#1}% + \expandafter\XINT_splitl_finish + \romannumeral0\expandafter\XINT_split_xfork + \the\numexpr #1\expandafter.\romannumeral0\xintiiabs {#2}\W\W\W\W\W\W\W\W\Z }% -\def\XINT_split_checksizex #1% 999999999 is anyhow very big, could be reduced +\def\xintDecSplitR {\romannumeral0\xintdecsplitr }% +\def\xintdecsplitr #1#2% {% - \ifnum\numexpr\XINT_Abs{#1}>999999999 - \xint_afterfi {\xintError:TooBigDecimalSplit\XINT_split_bigx }% - \else - \expandafter\XINT_split_xfork - \fi - #1\Z -}% -\def\XINT_split_bigx #1\Z #2% -{% - \ifcase\XINT_cntSgn #1\Z - \or \xint_afterfi { {}{#2}}% positive big x - \else - \xint_afterfi { {#2}{}}% negative big x - \fi + \expandafter\XINT_splitr_finish + \romannumeral0\expandafter\XINT_split_xfork + \the\numexpr #1\expandafter.\romannumeral0\xintiiabs {#2}\W\W\W\W\W\W\W\W\Z }% +\def\XINT_split_finish #1.#2.{{#1}{#2}}% +\def\XINT_splitl_finish #1.#2.{{#1}}% +\def\XINT_splitr_finish #1.#2.{{#2}}% \def\XINT_split_xfork #1% {% \xint_UDzerominusfork @@ -1150,36 +1108,35 @@ 0-{\XINT_split_fromright #1}% \krof }% -\def\XINT_split_zerosplit #1\Z #2{ {#2}{}}% -\def\XINT_split_fromleft #1\Z #2% +\def\XINT_split_zerosplit #1.#2\W\W\W\W\W\W\W\W\Z{ #2..}% +\def\XINT_split_fromleft #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 + \XINT_split_fromleft_loop #1.{}%#2\W\W\W\W\W\W\W\W\Z }% -\def\XINT_split_fromleft_loop #1% +\def\XINT_split_fromleft_loop #1.% {% - \ifnum #1<\xint_c_viii\XINT_split_fromleft_exita\fi - \expandafter\XINT_split_fromleft_loop_perhaps\expandafter - {\the\numexpr #1-\xint_c_viii\expandafter}\XINT_split_fromleft_eight + \ifnum #1<\xint_c_viii\expandafter\XINT_split_fromleft_exita\fi + \expandafter\XINT_split_fromleft_loop_perhaps + \the\numexpr #1-\xint_c_viii\expandafter.\XINT_split_fromleft_eight }% \def\XINT_split_fromleft_eight #1#2#3#4#5#6#7#8#9{#9{#1#2#3#4#5#6#7#8#9}}% -\def\XINT_split_fromleft_loop_perhaps #1#2% +\def\XINT_split_fromleft_loop_perhaps #1.#2% {% \xint_gob_til_W #2\XINT_split_fromleft_toofar\W - \XINT_split_fromleft_loop {#1}% + \XINT_split_fromleft_loop #1.% }% -\def\XINT_split_fromleft_toofar\W\XINT_split_fromleft_loop #1#2#3\Z +\def\XINT_split_fromleft_toofar\W\XINT_split_fromleft_loop #1.#2#3\Z {% \XINT_split_fromleft_toofar_b #2\Z }% -\def\XINT_split_fromleft_toofar_b #1\W #2\Z { {#1}{}}% -\def\XINT_split_fromleft_exita\fi - \expandafter\XINT_split_fromleft_loop_perhaps\expandafter #1#2% - {\fi \XINT_split_fromleft_exitb #1}% -\def\XINT_split_fromleft_exitb\the\numexpr #1-\xint_c_viii\expandafter +\def\XINT_split_fromleft_toofar_b #1\W #2\Z { #1..}% +\def\XINT_split_fromleft_exita + \expandafter\XINT_split_fromleft_loop_perhaps + \the\numexpr #1-\xint_c_viii\expandafter.\XINT_split_fromleft_eight {% \csname XINT_split_fromleft_endsplit_\romannumeral #1\endcsname }% -\def\XINT_split_fromleft_endsplit_ #1#2\W #3\Z { {#1}{#2}}% +\def\XINT_split_fromleft_endsplit_ #1#2\W #3\Z { #1.#2.}% \def\XINT_split_fromleft_endsplit_i #1#2% {\XINT_split_fromleft_checkiftoofar #2{#1#2}}% \def\XINT_split_fromleft_endsplit_ii #1#2#3% @@ -1196,47 +1153,41 @@ {\XINT_split_fromleft_checkiftoofar #8{#1#2#3#4#5#6#7#8}}% \def\XINT_split_fromleft_checkiftoofar #1#2#3\W #4\Z {% - \xint_gob_til_W #1\XINT_split_fromleft_wenttoofar\W - \space {#2}{#3}% + \xint_gob_til_W #1\XINT_split_fromleft_wenttoofar\W \space#2.#3.% }% -\def\XINT_split_fromleft_wenttoofar\W\space #1% +\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 { {#1}}% -\def\XINT_split_fromright #1\Z #2% -{% - \expandafter \XINT_split_fromright_a \expandafter - {\romannumeral0\xintreverseorder {#2}}{#1}{#2}% -}% -\def\XINT_split_fromright_a #1#2% +\def\XINT_split_fromleft_wenttoofar_b #1\W #2\Z { #1.}% +\def\XINT_split_fromright #1.#2\W\W\W\W\W\W\W\W\Z {% - \XINT_split_fromright_loop {#2}{}#1\W\W\W\W\W\W\W\W\Z + \expandafter\XINT_split_fromright_loop + \the\numexpr #1\expandafter.\expandafter{\expandafter}% + \romannumeral0\xintreverseorder{#2}\W\W\W\W\W\W\W\W\Z #2.% }% -\def\XINT_split_fromright_loop #1% +\def\XINT_split_fromright_loop #1.% {% - \ifnum #1<\xint_c_viii\XINT_split_fromright_exita\fi - \expandafter\XINT_split_fromright_loop_perhaps\expandafter - {\the\numexpr #1-\xint_c_viii\expandafter }\XINT_split_fromright_eight + \ifnum #1<\xint_c_viii\expandafter\XINT_split_fromright_exita\fi + \expandafter\XINT_split_fromright_loop_perhaps + \the\numexpr #1-\xint_c_viii\expandafter.\XINT_split_fromright_eight }% \def\XINT_split_fromright_eight #1#2#3#4#5#6#7#8#9{#9{#9#8#7#6#5#4#3#2#1}}% -\def\XINT_split_fromright_loop_perhaps #1#2% +\def\XINT_split_fromright_loop_perhaps #1.#2% {% \xint_gob_til_W #2\XINT_split_fromright_toofar\W - \XINT_split_fromright_loop {#1}% + \XINT_split_fromright_loop #1.% }% -\def\XINT_split_fromright_toofar\W\XINT_split_fromright_loop #1#2#3\Z { {}}% -\def\XINT_split_fromright_exita\fi - \expandafter\XINT_split_fromright_loop_perhaps\expandafter #1#2% - {\fi \XINT_split_fromright_exitb #1}% -\def\XINT_split_fromright_exitb\the\numexpr #1-\xint_c_viii\expandafter +\def\XINT_split_fromright_toofar\W\XINT_split_fromright_loop #1\Z {.}% +\def\XINT_split_fromright_exita + \expandafter\XINT_split_fromright_loop_perhaps + \the\numexpr #1-\xint_c_viii\expandafter.\XINT_split_fromright_eight {% \csname XINT_split_fromright_endsplit_\romannumeral #1\endcsname }% -\edef\XINT_split_fromright_endsplit_ #1#2\W #3\Z #4% +\def\XINT_split_fromright_endsplit_ #1#2\W #3\Z #4.% {% - \noexpand\expandafter\space\noexpand\expandafter - {\noexpand\romannumeral0\noexpand\xintreverseorder {#2}}{#1}% + \xintreverseorder {#2}.#1.% }% \def\XINT_split_fromright_endsplit_i #1#2% {\XINT_split_fromright_checkiftoofar #2{#2#1}}% @@ -1257,8 +1208,8 @@ \xint_gob_til_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}}% +\def\XINT_split_fromright_wenttoofar\W + \XINT_split_fromright_endsplit_ #1\Z {.}% \def\xintiiSqrt {\romannumeral0\xintiisqrt }% \def\xintiiSqrtR {\romannumeral0\xintiisqrtr }% \def\xintiiSquareRoot {\romannumeral0\xintiisquareroot }% @@ -1284,159 +1235,649 @@ \edef\XINT_sqrt_isneg #1\Z {\noexpand\xintError:RootOfNegative\space 11}% \def\XINT_sqrt #1\Z {% - \expandafter\XINT_sqrt_start\expandafter {\romannumeral0\xintlength {#1}}{#1}% + \expandafter\XINT_sqrt_start\romannumeral0\xintlength {#1}.#1.% }% -\def\XINT_sqrt_start #1% +\def\XINT_sqrt_start #1.% {% - \ifnum #1<\xint_c_x - \expandafter\XINT_sqrt_small_a - \else - \expandafter\XINT_sqrt_big_a - \fi - {#1}% + \ifnum #1<\xint_c_x\xint_dothis\XINT_sqrt_small_a\fi + \xint_orthat\XINT_sqrt_big_a #1.% }% -\def\XINT_sqrt_small_a #1{\XINT_sqrt_a {#1}\XINT_sqrt_small_d }% -\def\XINT_sqrt_big_a #1{\XINT_sqrt_a {#1}\XINT_sqrt_big_d }% -\def\XINT_sqrt_a #1% +\def\XINT_sqrt_small_a #1.{\XINT_sqrt_a #1.\XINT_sqrt_small_d }% +\def\XINT_sqrt_big_a #1.{\XINT_sqrt_a #1.\XINT_sqrt_big_d }% +\def\XINT_sqrt_a #1.% {% \ifodd #1 - \expandafter\XINT_sqrt_bB + \expandafter\XINT_sqrt_bO \else - \expandafter\XINT_sqrt_bA + \expandafter\XINT_sqrt_bE \fi - {#1}% + #1.% }% -\def\XINT_sqrt_bA #1#2#3% +\def\XINT_sqrt_bE #1.#2#3#4% {% - \XINT_sqrt_bA_b #3\Z #2{#1}{#3}% + \XINT_sqrt_c {#3#4}#2{#1}#3#4% }% -\def\XINT_sqrt_bA_b #1#2#3\Z +\def\XINT_sqrt_bO #1.#2#3% {% - \XINT_sqrt_c {#1#2}% + \XINT_sqrt_c #3#2{#1}#3% }% -\def\XINT_sqrt_bB #1#2#3% +\def\XINT_sqrt_c #1#2% {% - \XINT_sqrt_bB_b #3\Z #2{#1}{#3}% + \expandafter #2% + \the\numexpr \ifnum #1>\xint_c_ii + \ifnum #1>\xint_c_vi + \ifnum #1>12 \ifnum #1>20 \ifnum #1>30 + \ifnum #1>42 \ifnum #1>56 \ifnum #1>72 + \ifnum #1>90 + 10\else 9\fi \else 8\fi \else 7\fi \else 6\fi \else 5\fi + \else 4\fi \else 3\fi \else 2\fi \else 1\fi .% }% -\def\XINT_sqrt_bB_b #1#2\Z +\def\XINT_sqrt_small_d #1.#2% {% - \XINT_sqrt_c #1% + \expandafter\XINT_sqrt_small_e + \the\numexpr #1\ifcase \numexpr #2/\xint_c_ii-\xint_c_i\relax + \or 0\or 00\or 000\or 0000\fi .% }% -\def\XINT_sqrt_c #1#2% +\def\XINT_sqrt_small_e #1.#2.% {% - \expandafter #2\expandafter - {\the\numexpr\ifnum #1>\xint_c_iii - \ifnum #1>\xint_c_viii - \ifnum #1>15 \ifnum #1>24 \ifnum #1>35 - \ifnum #1>48 \ifnum #1>63 \ifnum #1>80 - 10\else 9\fi \else 8\fi \else 7\fi \else 6\fi - \else 5\fi \else 4\fi \else 3\fi \else 2\fi \relax }% + \expandafter\XINT_sqrt_small_ea\the\numexpr #1*#1-#2.#1.% }% -\def\XINT_sqrt_small_d #1#2% +\def\XINT_sqrt_small_ea #1% {% - \expandafter\XINT_sqrt_small_e\expandafter - {\the\numexpr #1\ifcase \numexpr #2/\xint_c_ii-\xint_c_i\relax - \or 0\or 00\or 000\or 0000\fi }% + \if0#1\xint_dothis\XINT_sqrt_small_ez\fi + \if-#1\xint_dothis\XINT_sqrt_small_eb\fi + \xint_orthat\XINT_sqrt_small_f #1% }% -\def\XINT_sqrt_small_e #1#2% +\def\XINT_sqrt_small_ez 0.#1.{\expandafter{\the\numexpr#1+\xint_c_i + \expandafter}\expandafter{\the\numexpr #1*\xint_c_ii+\xint_c_i}}% +\def\XINT_sqrt_small_eb -#1.#2.% {% - \expandafter\XINT_sqrt_small_f\expandafter {\the\numexpr #1*#1-#2}{#1}% + \expandafter\XINT_sqrt_small_ec \the\numexpr + (#1-\xint_c_i+#2)/(\xint_c_ii*#2).#1.#2.% }% -\def\XINT_sqrt_small_f #1#2% +\def\XINT_sqrt_small_ec #1.#2.#3.% {% - \expandafter\XINT_sqrt_small_g\expandafter - {\the\numexpr ((#1+#2)/(\xint_c_ii*#2))-\xint_c_i}{#1}{#2}% + \expandafter\XINT_sqrt_small_f \the\numexpr + -#2+\xint_c_ii*#3*#1+#1*#1\expandafter.\the\numexpr #3+#1.% }% -\def\XINT_sqrt_small_g #1% +\def\XINT_sqrt_small_f #1.#2.% {% - \ifnum #1>\xint_c_ - \expandafter\XINT_sqrt_small_h - \else + \expandafter\XINT_sqrt_small_g + \the\numexpr (#1+#2)/(\xint_c_ii*#2)-\xint_c_i.#1.#2.% +}% +\def\XINT_sqrt_small_g #1#2.% +{% + \if 0#1% \expandafter\XINT_sqrt_small_end + \else + \expandafter\XINT_sqrt_small_h \fi - {#1}% + #1#2.% }% -\def\XINT_sqrt_small_h #1#2#3% +\def\XINT_sqrt_small_h #1.#2.#3.% {% - \expandafter\XINT_sqrt_small_f\expandafter - {\the\numexpr #2-\xint_c_ii*#1*#3+#1*#1\expandafter}\expandafter - {\the\numexpr #3-#1}% + \expandafter\XINT_sqrt_small_f + \the\numexpr #2-\xint_c_ii*#1*#3+#1*#1\expandafter.% + \the\numexpr #3-#1.% }% -\def\XINT_sqrt_small_end #1#2#3{ {#3}{#2}}% -\def\XINT_sqrt_big_d #1#2% +\def\XINT_sqrt_small_end #1.#2.#3.{{#3}{#2}}% +\def\XINT_sqrt_big_d #1.#2% {% - \ifodd #2 - \expandafter\expandafter\expandafter\XINT_sqrt_big_eB - \else - \expandafter\expandafter\expandafter\XINT_sqrt_big_eA - \fi - \expandafter {\the\numexpr #2/\xint_c_ii }{#1}% + \ifodd #2 \xint_dothis{\expandafter\XINT_sqrt_big_eO}\fi + \xint_orthat{\expandafter\XINT_sqrt_big_eE}% + \the\numexpr (#2-\xint_c_i)/\xint_c_ii.#1;% +}% +\def\XINT_sqrt_big_eE #1;#2#3#4#5#6#7#8#9% +{% + \XINT_sqrt_big_eE_a #1;{#2#3#4#5#6#7#8#9}% +}% +\def\XINT_sqrt_big_eE_a #1.#2;#3% +{% + \expandafter\XINT_sqrt_bigormed_f + \romannumeral0\XINT_sqrt_small_e #2000.#3.#1;% +}% +\def\XINT_sqrt_big_eO #1;#2#3#4#5#6#7#8#9% +{% + \XINT_sqrt_big_eO_a #1;{#2#3#4#5#6#7#8#9}% }% -\def\XINT_sqrt_big_eA #1#2#3% +\def\XINT_sqrt_big_eO_a #1.#2;#3#4% {% - \XINT_sqrt_big_eA_a #3\Z {#2}{#1}{#3}% + \expandafter\XINT_sqrt_bigormed_f + \romannumeral0\XINT_sqrt_small_e #20000.#3#4.#1;% }% -\def\XINT_sqrt_big_eA_a #1#2#3#4#5#6#7#8#9\Z +\def\XINT_sqrt_bigormed_f #1#2#3;% {% - \XINT_sqrt_big_eA_b {#1#2#3#4#5#6#7#8}% + \ifnum#3<\xint_c_ix + \xint_dothis {\csname XINT_sqrt_med_f\romannumeral#3\endcsname}% + \fi + \xint_orthat\XINT_sqrt_big_f #1.#2.#3;% +}% +\def\XINT_sqrt_med_fv {\XINT_sqrt_med_fa .}% +\def\XINT_sqrt_med_fvi {\XINT_sqrt_med_fa 0.}% +\def\XINT_sqrt_med_fvii {\XINT_sqrt_med_fa 00.}% +\def\XINT_sqrt_med_fviii{\XINT_sqrt_med_fa 000.}% +\def\XINT_sqrt_med_fa #1.#2.#3.#4;% +{% + \expandafter\XINT_sqrt_med_fb + \the\numexpr (#30#1-5#1)/(\xint_c_ii*#2).#1.#2.#3.% +}% +\def\XINT_sqrt_med_fb #1.#2.#3.#4.#5.% +{% + \expandafter\XINT_sqrt_small_ea + \the\numexpr (#40#2-\xint_c_ii*#3*#1)*10#2+(#1*#1-#5)\expandafter.% + \the\numexpr #30#2-#1.% +}% +\def\XINT_sqrt_big_f #1;#2#3#4#5#6#7#8#9% +{% + \XINT_sqrt_big_fa #1;{#2#3#4#5#6#7#8#9}% +}% +\def\XINT_sqrt_big_fa #1.#2.#3;#4% +{% + \expandafter\XINT_sqrt_big_ga + \the\numexpr #3-\xint_c_viii\expandafter.% + \romannumeral0\XINT_sqrt_med_fa 000.#1.#2.;#4.% +}% +\def\XINT_sqrt_big_ga #1.#2#3% +{% + \ifnum #1>\xint_c_viii + \expandafter\XINT_sqrt_big_gb\else + \expandafter\XINT_sqrt_big_ka + \fi #1.#3.#2.% +}% +\def\XINT_sqrt_big_gb #1.#2.#3.% +{% + \expandafter\XINT_sqrt_big_gc + \the\numexpr (\xint_c_ii*#2-\xint_c_i)*\xint_c_x^viii/(\xint_c_iv*#3).% + #3.#2.#1;% +}% +\def\XINT_sqrt_big_gc #1.#2.#3.% +{% + \expandafter\XINT_sqrt_big_gd + \romannumeral0\xintiiadd + {\xintiiSub {#300000000}{\xintDouble{\xintiiMul{#2}{#1}}}00000000}% + {\xintiiSqr {#1}}.% + \romannumeral0\xintiisub{#200000000}{#1}.% +}% +\def\XINT_sqrt_big_gd #1.#2.% +{% + \expandafter\XINT_sqrt_big_ge #2.#1.% +}% +\def\XINT_sqrt_big_ge #1;#2#3#4#5#6#7#8#9% + {\XINT_sqrt_big_gf #1.#2#3#4#5#6#7#8#9;}% +\def\XINT_sqrt_big_gf #1;#2#3#4#5#6#7#8#9% + {\XINT_sqrt_big_gg #1#2#3#4#5#6#7#8#9.}% +\def\XINT_sqrt_big_gg #1.#2.#3.#4.% +{% + \expandafter\XINT_sqrt_big_gloop + \expandafter\xint_c_xvi\expandafter.% + \the\numexpr #3-\xint_c_viii\expandafter.% + \romannumeral0\xintiisub {#2}{\xintiNum{#4}}.#1.% +}% +\def\XINT_sqrt_big_gloop #1.#2.% +{% + \unless\ifnum #1<#2 \xint_dothis\XINT_sqrt_big_ka \fi + \xint_orthat{\XINT_sqrt_big_gi #1.}#2.% +}% +\def\XINT_sqrt_big_gi #1.% +{% + \expandafter\XINT_sqrt_big_gj + \romannumeral0\XINT_dsx_addzerosnofuss{#1}{}.#1.% }% -\def\XINT_sqrt_big_eA_b #1#2% +\def\XINT_sqrt_big_gj #1.#2.#3.#4.#5.% {% - \expandafter\XINT_sqrt_big_f - \romannumeral0\XINT_sqrt_small_e {#2000}{#1}{#1}% + \expandafter\XINT_sqrt_big_gk + \romannumeral0\xintiidivision {#4#1}{\XINT_dbl_pos #5\Z}.% + #1.#5.#2.#3.% }% -\def\XINT_sqrt_big_eB #1#2#3% +\def\XINT_sqrt_big_gk #1#2.#3.#4.% {% - \XINT_sqrt_big_eB_a #3\Z {#2}{#1}{#3}% + \expandafter\XINT_sqrt_big_gl + \romannumeral0\xintiiadd {#2#3}{\xintiiSqr{#1}}.% + \romannumeral0\xintiisub {#4#3}{#1}.% }% -\def\XINT_sqrt_big_eB_a #1#2#3#4#5#6#7#8#9% +\def\XINT_sqrt_big_gl #1.#2.% {% - \XINT_sqrt_big_eB_b {#1#2#3#4#5#6#7#8#9}% + \expandafter\XINT_sqrt_big_gm #2.#1.% }% -\def\XINT_sqrt_big_eB_b #1#2\Z #3% +\def\XINT_sqrt_big_gm #1.#2.#3.#4.#5.% {% - \expandafter\XINT_sqrt_big_f - \romannumeral0\XINT_sqrt_small_e {#30000}{#1}{#1}% + \expandafter\XINT_sqrt_big_gn + \romannumeral0\expandafter\XINT_split_fromleft_loop + \the\numexpr\xint_c_ii*#3.{}#5\W\W\W\W\W\W\W\W\Z + #1.#2.#3.#4.% }% -\def\XINT_sqrt_big_f #1#2#3#4% +\def\XINT_sqrt_big_gn #1.#2.#3.#4.#5.#6.% {% - \expandafter\XINT_sqrt_big_f_a\expandafter - {\the\numexpr #2+#3\expandafter}\expandafter - {\romannumeral0\XINT_dsx_addzerosnofuss - {\numexpr #4-\xint_c_iv\relax}{#1}}{#4}% + \expandafter\XINT_sqrt_big_gloop + \the\numexpr \xint_c_ii*#5\expandafter.% + \the\numexpr #6-#5\expandafter.% + \romannumeral0\xintiisub{#4}{\xintiNum{#1}}.#3.#2.% }% -\def\XINT_sqrt_big_f_a #1#2#3#4% +\def\XINT_sqrt_big_ka #1.#2.#3.#4.% {% - \expandafter\XINT_sqrt_big_g\expandafter - {\romannumeral0\xintiisub - {\XINT_dsx_addzerosnofuss - {\numexpr \xint_c_ii*#3-\xint_c_viii\relax}{#1}}{#4}}% - {#2}{#3}% + \expandafter\XINT_sqrt_big_kb + \romannumeral0\XINT_dsx_addzerosnofuss {#1}{#3}.% + \romannumeral0\xintiisub + {\XINT_dsx_addzerosnofuss {\numexpr\xint_c_ii*#1}{#2}}% + {\xintiNum{#4}}.% }% -\def\XINT_sqrt_big_g #1#2% +\def\XINT_sqrt_big_kb #1.#2.% {% - \expandafter\XINT_sqrt_big_j + \expandafter\XINT_sqrt_big_kc #2.#1.% +}% +\def\XINT_sqrt_big_kc #1% +{% + \if0#1\xint_dothis\XINT_sqrt_big_kz\fi + \xint_orthat\XINT_sqrt_big_kloop #1% +}% +\def\XINT_sqrt_big_kz 0.#1.% +{% + \expandafter\XINT_sqrt_big_kend + \romannumeral0\xintinc{\XINT_dbl_pos #1\Z}.#1.% +}% +\def\XINT_sqrt_big_kend #1.#2.% +{% + \expandafter{\romannumeral0\xintinc{#2}}{#1}% +}% +\def\XINT_sqrt_big_kloop #1.#2.% +{% + \expandafter\XINT_sqrt_big_ke \romannumeral0\xintiidivision{#1}{\romannumeral0\XINT_dbl_pos #2\Z}{#2}% }% -\def\XINT_sqrt_big_j #1% +\def\XINT_sqrt_big_ke #1% {% \if0\XINT_Sgn #1\Z \expandafter \XINT_sqrt_big_end - \else \expandafter \XINT_sqrt_big_k + \else \expandafter \XINT_sqrt_big_kf \fi {#1}% }% -\def\XINT_sqrt_big_k #1#2#3% +\def\XINT_sqrt_big_kf #1#2#3% +{% + \expandafter\XINT_sqrt_big_kg + \romannumeral0\xintiisub {#3}{#1}.% + \romannumeral0\xintiiadd {#2}{\xintiiSqr {#1}}.% +}% +\def\XINT_sqrt_big_kg #1.#2.% +{% + \expandafter\XINT_sqrt_big_kloop #2.#1.% +}% +\def\XINT_sqrt_big_end #1#2#3{{#3}{#2}}% +\def\xintiiBinomial {\romannumeral0\xintiibinomial }% +\def\xintiibinomial #1#2% +{% + \expandafter\XINT_binom_pre\the\numexpr #1\expandafter.\the\numexpr #2.% +}% +\def\XINT_binom_pre #1.#2.% +{% + \expandafter\XINT_binom_fork \the\numexpr#1-#2.#2.#1.% +}% +\def\xintiBinomial{\romannumeral0\xintibinomial}% +\let\xintibinomial\xintiibinomial +\def\XINT_binom_fork #1#2.#3#4.#5#6.% +{% + \if-#1\xint_dothis {\xintError:OutOfRangeBinomial\space 0}\fi + \if-#3\xint_dothis {\xintError:OutOfRangeBinomial\space 0}\fi + \if0#1\xint_dothis{ 1}\fi + \if0#3\xint_dothis{ 1}\fi + \ifnum #5#6>\xint_c_x^viii_mone\xint_dothis{\xintError:OutOfRangeBinomial\space 0}\fi + \ifnum #1#2>#3#4 \xint_dothis{\XINT_binom_a #1#2.#3#4.}\fi + \xint_orthat{\XINT_binom_a #3#4.#1#2.}% +}% +\def\XINT_binom_a #1.#2.% +{% + \expandafter\XINT_binom_b\the\numexpr \xint_c_i+#1.1.#2.100000001!1!\Z!0!% +}% +\def\XINT_binom_b #1.% +{% + \ifnum #1>9999 \xint_dothis\XINT_binom_vbigloop \fi + \ifnum #1>463 \xint_dothis\XINT_binom_bigloop \fi + \ifnum #1>98 \xint_dothis\XINT_binom_medloop \fi + \ifnum #1>29 \xint_dothis\XINT_binom_smallloop \fi + \xint_orthat\XINT_binom_vsmallloop #1.% +}% +\def\XINT_binom_smallloop #1.#2.#3.% +{% + \ifcase\numexpr #3-#2\relax + \expandafter\XINT_binom_end_ + \or \expandafter\XINT_binom_end_i + \or \expandafter\XINT_binom_end_ii + \or \expandafter\XINT_binom_end_iii + \else\expandafter\XINT_binom_smallloop_a + \fi #1.#2.#3.% +}% +\def\XINT_binom_smallloop_a #1.#2.#3.% +{% + \expandafter\XINT_binom_smallloop_b + \the\numexpr #1+\xint_c_iv\expandafter.% + \the\numexpr #2+\xint_c_iv\expandafter.% + \the\numexpr #3\expandafter.% + \the\numexpr\expandafter\XINT_binom_div + \the\numexpr #2*(#2+\xint_c_i)*(#2+\xint_c_ii)*(#2+\xint_c_iii)\expandafter + !\romannumeral0\expandafter\XINT_binom_mul + \the\numexpr #1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% +}% +\def\XINT_binom_smallloop_b #1.% +{% + \ifnum #1>98 \expandafter\XINT_binom_medloop \else + \expandafter\XINT_binom_smallloop \fi #1.% +}% +\def\XINT_binom_medloop #1.#2.#3.% +{% + \ifcase\numexpr #3-#2\relax + \expandafter\XINT_binom_end_ + \or \expandafter\XINT_binom_end_i + \or \expandafter\XINT_binom_end_ii + \else\expandafter\XINT_binom_medloop_a + \fi #1.#2.#3.% +}% +\def\XINT_binom_medloop_a #1.#2.#3.% +{% + \expandafter\XINT_binom_medloop_b + \the\numexpr #1+\xint_c_iii\expandafter.% + \the\numexpr #2+\xint_c_iii\expandafter.% + \the\numexpr #3\expandafter.% + \the\numexpr\expandafter\XINT_binom_div + \the\numexpr #2*(#2+\xint_c_i)*(#2+\xint_c_ii)\expandafter + !\romannumeral0\expandafter\XINT_binom_mul + \the\numexpr #1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% +}% +\def\XINT_binom_medloop_b #1.% +{% + \ifnum #1>463 \expandafter\XINT_binom_bigloop \else + \expandafter\XINT_binom_medloop \fi #1.% +}% +\def\XINT_binom_bigloop #1.#2.#3.% +{% + \ifcase\numexpr #3-#2\relax + \expandafter\XINT_binom_end_ + \or \expandafter\XINT_binom_end_i + \else\expandafter\XINT_binom_bigloop_a + \fi #1.#2.#3.% +}% +\def\XINT_binom_bigloop_a #1.#2.#3.% +{% + \expandafter\XINT_binom_bigloop_b + \the\numexpr #1+\xint_c_ii\expandafter.% + \the\numexpr #2+\xint_c_ii\expandafter.% + \the\numexpr #3\expandafter.% + \the\numexpr\expandafter\XINT_binom_div + \the\numexpr #2*(#2+\xint_c_i)\expandafter + !\romannumeral0\expandafter\XINT_binom_mul + \the\numexpr #1*(#1+\xint_c_i)!% +}% +\def\XINT_binom_bigloop_b #1.% +{% + \ifnum #1>9999 \expandafter\XINT_binom_vbigloop \else + \expandafter\XINT_binom_bigloop \fi #1.% +}% +\def\XINT_binom_vbigloop #1.#2.#3.% +{% + \ifnum #3=#2 + \expandafter\XINT_binom_end_ + \else\expandafter\XINT_binom_vbigloop_a + \fi #1.#2.#3.% +}% +\def\XINT_binom_vbigloop_a #1.#2.#3.% +{% + \expandafter\XINT_binom_vbigloop + \the\numexpr #1+\xint_c_i\expandafter.% + \the\numexpr #2+\xint_c_i\expandafter.% + \the\numexpr #3\expandafter.% + \the\numexpr\expandafter\XINT_binom_div\the\numexpr #2\expandafter + !\romannumeral0\XINT_binom_mul #1!% +}% +\def\XINT_binom_vsmallloop #1.#2.#3.% +{% + \ifcase\numexpr #3-#2\relax + \expandafter\XINT_binom_vsmallend_ + \or \expandafter\XINT_binom_vsmallend_i + \or \expandafter\XINT_binom_vsmallend_ii + \or \expandafter\XINT_binom_vsmallend_iii + \else\expandafter\XINT_binom_vsmallloop_a + \fi #1.#2.#3.% +}% +\def\XINT_binom_vsmallloop_a #1.% +{% + \ifnum #1>26 \expandafter\XINT_binom_smallloop_a \else + \expandafter\XINT_binom_vsmallloop_b \fi #1.% +}% +\def\XINT_binom_vsmallloop_b #1.#2.#3.% +{% + \expandafter\XINT_binom_vsmallloop + \the\numexpr #1+\xint_c_iv\expandafter.% + \the\numexpr #2+\xint_c_iv\expandafter.% + \the\numexpr #3\expandafter.% + \the\numexpr \expandafter\XINT_binom_vsmallmuldiv + \the\numexpr #2*(#2+\xint_c_i)*(#2+\xint_c_ii)*(#2+\xint_c_iii)\expandafter + !\the\numexpr #1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% +}% +\def\XINT_binom_mul #1!#21!\Z!0!% +{% + \expandafter\XINT_rev_nounsep\expandafter{\expandafter}% + \the\numexpr\expandafter\XINT_smallmul + \the\numexpr\xint_c_x^viii+#1\expandafter + !\romannumeral0\XINT_rev_nounsep {}1\Z!#2% + \R!\R!\R!\R!\R!\R!\R!\R!\W + \R!\R!\R!\R!\R!\R!\R!\R!\W + 1\Z!% +}% +\def\XINT_binom_div #1!1\Z!% +{% + \expandafter\XINT_smalldivx_a + \the\numexpr #1/\xint_c_ii\expandafter.% + \the\numexpr \xint_c_x^viii+#1!% +}% +\def\XINT_binom_vsmallmuldiv #1!#2!1#3!{\xint_c_x^viii+#2*#3/#1!}% +\def\XINT_binom_end_iii #1.#2.#3.% +{% + \expandafter\XINT_binom_finish + \the\numexpr\expandafter\XINT_binom_div + \the\numexpr #2*(#2+\xint_c_i)*(#2+\xint_c_ii)*(#2+\xint_c_iii)\expandafter + !\romannumeral0\expandafter\XINT_binom_mul + \the\numexpr #1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% +}% +\def\XINT_binom_end_ii #1.#2.#3.% +{% + \expandafter\XINT_binom_finish + \the\numexpr\expandafter\XINT_binom_div + \the\numexpr #2*(#2+\xint_c_i)*(#2+\xint_c_ii)\expandafter + !\romannumeral0\expandafter\XINT_binom_mul + \the\numexpr #1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% +}% +\def\XINT_binom_end_i #1.#2.#3.% +{% + \expandafter\XINT_binom_finish + \the\numexpr\expandafter\XINT_binom_div + \the\numexpr #2*(#2+\xint_c_i)\expandafter + !\romannumeral0\expandafter\XINT_binom_mul + \the\numexpr #1*(#1+\xint_c_i)!% +}% +\def\XINT_binom_end_ #1.#2.#3.% +{% + \expandafter\XINT_binom_finish + \the\numexpr\expandafter\XINT_binom_div\the\numexpr #2\expandafter + !\romannumeral0\XINT_binom_mul #1!% +}% +\def\XINT_binom_finish #1\Z!0!% + {\XINT_unsep_cuzsmall #11\R!1\R!1\R!1\R!1\R!1\R!1\R!1\R!\W }% +\def\XINT_binom_vsmallend_iii #1.% +{% + \ifnum #1>26 \expandafter\XINT_binom_end_iii \else + \expandafter\XINT_binom_vsmallend_iiib \fi #1.% +}% +\def\XINT_binom_vsmallend_iiib #1.#2.#3.% +{% + \expandafter\XINT_binom_vsmallfinish + \the\numexpr \expandafter\XINT_binom_vsmallmuldiv + \the\numexpr #2*(#2+\xint_c_i)*(#2+\xint_c_ii)*(#2+\xint_c_iii)\expandafter + !\the\numexpr #1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% +}% +\def\XINT_binom_vsmallend_ii #1.% +{% + \ifnum #1>27 \expandafter\XINT_binom_end_ii \else + \expandafter\XINT_binom_vsmallend_iib \fi #1.% +}% +\def\XINT_binom_vsmallend_iib #1.#2.#3.% +{% + \expandafter\XINT_binom_vsmallfinish + \the\numexpr \expandafter\XINT_binom_vsmallmuldiv + \the\numexpr #2*(#2+\xint_c_i)*(#2+\xint_c_ii)\expandafter + !\the\numexpr #1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% +}% +\def\XINT_binom_vsmallend_i #1.% +{% + \ifnum #1>28 \expandafter\XINT_binom_end_i \else + \expandafter\XINT_binom_vsmallend_ib \fi #1.% +}% +\def\XINT_binom_vsmallend_ib #1.#2.#3.% +{% + \expandafter\XINT_binom_vsmallfinish + \the\numexpr \expandafter\XINT_binom_vsmallmuldiv + \the\numexpr #2*(#2+\xint_c_i)\expandafter + !\the\numexpr #1*(#1+\xint_c_i)!% +}% +\def\XINT_binom_vsmallend_ #1.% +{% + \ifnum #1>29 \expandafter\XINT_binom_end_ \else + \expandafter\XINT_binom_vsmallend_b \fi #1.% +}% +\def\XINT_binom_vsmallend_b #1.#2.#3.% +{% + \expandafter\XINT_binom_vsmallfinish + \the\numexpr\XINT_binom_vsmallmuldiv #2!#1!% +}% +\edef\XINT_binom_vsmallfinish 1#1!1!\Z!0!% + {\noexpand\expandafter\space\noexpand\the\numexpr #1\relax}% +\def\xintiiPFactorial {\romannumeral0\xintiipfactorial }% +\def\xintiipfactorial #1#2% +{% + \expandafter\XINT_pfac_fork\the\numexpr#1\expandafter.\the\numexpr #2.% +}% +\def\xintiPFactorial{\romannumeral0\xintipfactorial}% +\let\xintipfactorial\xintiipfactorial +\def\XINT_pfac_fork #1#2.#3.% +{% + \if-#1\xint_dothis {\xintError:OutOfRangePFac\space 0}\fi + \ifnum #1#2=#3 \xint_dothis{ 1}\fi + \ifnum #1#2>#3 \xint_dothis{\xintError:OutOfRangePFac\space 0}\fi + \ifnum #3>\xint_c_x^viii_mone\xint_dothis{\xintError:OutOfRangePFac\space 0}\fi + \xint_orthat {\XINT_pfac_a #1#2.#3.}% +}% +\def\XINT_pfac_a #1.#2.% +{% + \expandafter\XINT_pfac_b\the\numexpr \xint_c_i+#1.#2.100000001!1\Z!% + 1\R!1\R!1\R!1\R!1\R!1\R!1\R!1\R!\W +}% +\def\XINT_pfac_b #1.% +{% + \ifnum #1>9999 \xint_dothis\XINT_pfac_vbigloop \fi + \ifnum #1>463 \xint_dothis\XINT_pfac_bigloop \fi + \ifnum #1>98 \xint_dothis\XINT_pfac_medloop \fi + \xint_orthat\XINT_pfac_smallloop #1.% +}% +\def\XINT_pfac_smallloop #1.#2.% +{% + \ifcase\numexpr #2-#1\relax + \expandafter\XINT_pfac_end_ + \or \expandafter\XINT_pfac_end_i + \or \expandafter\XINT_pfac_end_ii + \or \expandafter\XINT_pfac_end_iii + \else\expandafter\XINT_pfac_smallloop_a + \fi #1.#2.% +}% +\def\XINT_pfac_smallloop_a #1.#2.% +{% + \expandafter\XINT_pfac_smallloop_b + \the\numexpr #1+\xint_c_iv\expandafter.% + \the\numexpr #2\expandafter.% + \the\numexpr\expandafter\XINT_smallmul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% +}% +\def\XINT_pfac_smallloop_b #1.% +{% + \ifnum #1>98 \expandafter\XINT_pfac_medloop \else + \expandafter\XINT_pfac_smallloop \fi #1.% +}% +\def\XINT_pfac_medloop #1.#2.% +{% + \ifcase\numexpr #2-#1\relax + \expandafter\XINT_pfac_end_ + \or \expandafter\XINT_pfac_end_i + \or \expandafter\XINT_pfac_end_ii + \else\expandafter\XINT_pfac_medloop_a + \fi #1.#2.% +}% +\def\XINT_pfac_medloop_a #1.#2.% +{% + \expandafter\XINT_pfac_medloop_b + \the\numexpr #1+\xint_c_iii\expandafter.% + \the\numexpr #2\expandafter.% + \the\numexpr\expandafter\XINT_smallmul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% +}% +\def\XINT_pfac_medloop_b #1.% +{% + \ifnum #1>463 \expandafter\XINT_pfac_bigloop \else + \expandafter\XINT_pfac_medloop \fi #1.% +}% +\def\XINT_pfac_bigloop #1.#2.% +{% + \ifcase\numexpr #2-#1\relax + \expandafter\XINT_pfac_end_ + \or \expandafter\XINT_pfac_end_i + \else\expandafter\XINT_pfac_bigloop_a + \fi #1.#2.% +}% +\def\XINT_pfac_bigloop_a #1.#2.% +{% + \expandafter\XINT_pfac_bigloop_b + \the\numexpr #1+\xint_c_ii\expandafter.% + \the\numexpr #2\expandafter.% + \the\numexpr\expandafter + \XINT_smallmul\the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)!% +}% +\def\XINT_pfac_bigloop_b #1.% +{% + \ifnum #1>9999 \expandafter\XINT_pfac_vbigloop \else + \expandafter\XINT_pfac_bigloop \fi #1.% +}% +\def\XINT_pfac_vbigloop #1.#2.% +{% + \ifnum #2=#1 + \expandafter\XINT_pfac_end_ + \else\expandafter\XINT_pfac_vbigloop_a + \fi #1.#2.% +}% +\def\XINT_pfac_vbigloop_a #1.#2.% +{% + \expandafter\XINT_pfac_vbigloop + \the\numexpr #1+\xint_c_i\expandafter.% + \the\numexpr #2\expandafter.% + \the\numexpr\expandafter\XINT_smallmul\the\numexpr\xint_c_x^viii+#1!% +}% +\def\XINT_pfac_end_iii #1.#2.% +{% + \expandafter\XINT_mul_out + \the\numexpr\expandafter\XINT_smallmul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% +}% +\def\XINT_pfac_end_ii #1.#2.% +{% + \expandafter\XINT_mul_out + \the\numexpr\expandafter\XINT_smallmul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% +}% +\def\XINT_pfac_end_i #1.#2.% {% - \expandafter\XINT_sqrt_big_l\expandafter - {\romannumeral0\xintiisub {#3}{#1}}% - {\romannumeral0\xintiiadd {#2}{\xintiiSqr {#1}}}% + \expandafter\XINT_mul_out + \the\numexpr\expandafter\XINT_smallmul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)!% }% -\def\XINT_sqrt_big_l #1#2% +\def\XINT_pfac_end_ #1.#2.% {% - \expandafter\XINT_sqrt_big_g\expandafter - {#2}{#1}% + \expandafter\XINT_mul_out + \the\numexpr\expandafter\XINT_smallmul\the\numexpr \xint_c_x^viii+#1!% }% -\def\XINT_sqrt_big_end #1#2#3#4{ {#3}{#2}}% \def\xintiiE {\romannumeral0\xintiie }% used in \xintMod. \def\xintiie #1#2% {\expandafter\XINT_iie\the\numexpr #2\expandafter.\expandafter{\romannumeral`&&@#1}}% diff --git a/Master/texmf-dist/tex/generic/xint/xintbinhex.sty b/Master/texmf-dist/tex/generic/xint/xintbinhex.sty index b06dd6b8443..061e629acca 100644 --- a/Master/texmf-dist/tex/generic/xint/xintbinhex.sty +++ b/Master/texmf-dist/tex/generic/xint/xintbinhex.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintbinhex: Expandable binary and hexadecimal conversions %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintbinhex}% - [2015/11/22 v1.2e Expandable binary and hexadecimal conversions (jfB)]% + [2016/03/12 1.2f Expandable binary and hexadecimal conversions (JFB)]% \newcount\xint_c_ii^xv \xint_c_ii^xv 32768 \newcount\xint_c_ii^xvi \xint_c_ii^xvi 65536 \newcount\xint_c_x^v \xint_c_x^v 100000 diff --git a/Master/texmf-dist/tex/generic/xint/xintcfrac.sty b/Master/texmf-dist/tex/generic/xint/xintcfrac.sty index c2ee3e85658..6f516f56bfb 100644 --- a/Master/texmf-dist/tex/generic/xint/xintcfrac.sty +++ b/Master/texmf-dist/tex/generic/xint/xintcfrac.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintcfrac: Expandable continued fractions with xint package %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintcfrac}% - [2015/11/22 v1.2e Expandable continued fractions with xint package (jfB)]% + [2016/03/12 1.2f Expandable continued fractions with xint package (JFB)]% \def\xintCFrac {\romannumeral0\xintcfrac }% \def\xintcfrac #1% {% diff --git a/Master/texmf-dist/tex/generic/xint/xintcore.sty b/Master/texmf-dist/tex/generic/xint/xintcore.sty index 94980e62be4..5088cdefa12 100644 --- a/Master/texmf-dist/tex/generic/xint/xintcore.sty +++ b/Master/texmf-dist/tex/generic/xint/xintcore.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintcore: Expandable arithmetic on big integers %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintcore}% - [2015/11/22 v1.2e Expandable arithmetic on big integers (jfB)]% + [2016/03/12 1.2f Expandable arithmetic on big integers (JFB)]% \ifdefined\m@ne\let\xint_c_mone\m@ne \else\csname newcount\endcsname\xint_c_mone \xint_c_mone -1 \fi \newcount\xint_c_x^viii \xint_c_x^viii 100000000 @@ -122,28 +122,26 @@ {% \noexpand\expandafter\space\noexpand\the\numexpr #1#2#3#4#5#6#7#8\relax }% -%%%%%%%%%%%% \def\XINT_cuz #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_R #9\XINT_cuz_e \R \xint_gob_til_eightzeroes #1#2#3#4#5#6#7#8\XINT_cuz_z 00000000% - \XINT_cuz_clean #1#2#3#4#5#6#7#8#9% + \XINT_cuz_done #1#2#3#4#5#6#7#8#9% }% -\edef\XINT_cuz_clean #1#2#3#4#5#6#7#8#9\R +\def\XINT_cuz_z 00000000\XINT_cuz_done 00000000{\XINT_cuz }% +\edef\XINT_cuz_done #1#2#3#4#5#6#7#8#9\R {\noexpand\expandafter\space\noexpand\the\numexpr #1#2#3#4#5#6#7#8\relax #9}% -\edef\XINT_cuz_e\R #1\XINT_cuz_clean #2\R +\edef\XINT_cuz_e\R #1\XINT_cuz_done #2\R {\noexpand\expandafter\space\noexpand\the\numexpr #2\relax }% -\def\XINT_cuz_z 00000000\XINT_cuz_clean 00000000{\XINT_cuz }% -%%%%%%%%%%%% \def\XINT_cuz_byviii #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_R #9\XINT_cuz_byviii_e \R \xint_gob_til_eightzeroes #1#2#3#4#5#6#7#8\XINT_cuz_byviii_z 00000000% - \XINT_cuz_byviii_clean #1#2#3#4#5#6#7#8#9% + \XINT_cuz_byviii_done #1#2#3#4#5#6#7#8#9% }% -\def\XINT_cuz_byviii_clean #1\R { #1}% -\def\XINT_cuz_byviii_e\R #1\XINT_cuz_byviii_clean #2\R{ #2}% -\def\XINT_cuz_byviii_z 00000000\XINT_cuz_byviii_clean 00000000{\XINT_cuz_byviii}% +\def\XINT_cuz_byviii_z 00000000\XINT_cuz_byviii_done 00000000{\XINT_cuz_byviii}% +\def\XINT_cuz_byviii_done #1\R { #1}% +\def\XINT_cuz_byviii_e\R #1\XINT_cuz_byviii_done #2\R{ #2}% \def\XINT_zeroes_forviii #1#2#3#4#5#6#7#8% {% \xint_gob_til_R #8\XINT_zeroes_forviii_end\R\XINT_zeroes_forviii @@ -152,7 +150,6 @@ {% \noexpand\expandafter\space\noexpand\xint_gob_til_one #2#3#4#5#6#7#8% }% -%%%%%%%%%%%% \def\XINT_rsepbyviii #1#2#3#4#5#6#7#8% {% \XINT_rsepbyviii_b {#1#2#3#4#5#6#7#8}% @@ -164,7 +161,6 @@ }% \def\XINT_rsepbyviii_end_B #1\relax #2#3{#2.}% \def\XINT_rsepbyviii_end_A #11#2\expandafter #3\relax #4#5{#2.1#5.}% -%%%%%%%%%%%% \def\XINT_sepandrev {% \expandafter\XINT_sepandrev_a\the\numexpr 1\XINT_rsepbyviii @@ -177,7 +173,6 @@ }% \def\XINT_sepandrev_end\R\XINT_sepandrev_b #1#2\W {\XINT_sepandrev_done #1}% \def\XINT_sepandrev_done #11#2!{ }% -%%%%%%%%%%%% \def\XINT_sepandrev_andcount {% \expandafter\XINT_sepandrev_andcount_a\the\numexpr 1\XINT_rsepbyviii @@ -220,13 +215,11 @@ {% #2\expandafter!\the\numexpr#3\expandafter!\the\numexpr#4\expandafter !\the\numexpr#5\expandafter!\the\numexpr#6\expandafter!\the\numexpr - #7\expandafter - !\the\numexpr#8\expandafter!\the\numexpr#9\expandafter!\the\numexpr + #7\expandafter!\the\numexpr#8\expandafter!\the\numexpr#9\expandafter!\the\numexpr \expandafter\XINT_sepbyviii_andcount_b\the\numexpr #1+\xint_c_viii.% }% \def\XINT_sepbyviii_andcount_end #1\XINT_sepbyviii_andcount_b\the\numexpr #2+\xint_c_viii.#3#4\W {\expandafter.\the\numexpr #2+#3.}% -%%%%%%%%%%%% \def\XINT_rev_nounsep #1#2!#3!#4!#5!#6!#7!#8!#9!% {% \xint_gob_til_R #9\XINT_rev_nounsep_end\R @@ -234,13 +227,11 @@ }% \def\XINT_rev_nounsep_end\R\XINT_rev_nounsep #1#2\W {\XINT_rev_nounsep_done #1}% \def\XINT_rev_nounsep_done #11{ 1}% -%%%%%%%%%%%% \def\XINT_sepbyviii_Z #1#2#3#4#5#6#7#8% {% 1#1#2#3#4#5#6#7#8\expandafter!\the\numexpr\XINT_sepbyviii_Z }% \def\XINT_sepbyviii_Z_end #1\relax {\relax\Z!}% -%%%%%%%%%%%% \def\XINT_unsep_cuzsmall #11#2!1#3!1#4!1#5!1#6!1#7!1#8!1#9!% {% \xint_gob_til_R #9\XINT_unsep_cuzsmall_end\R @@ -250,7 +241,6 @@ \XINT_unsep_cuzsmall #1{\XINT_unsep_cuzsmall_done #1}% \def\XINT_unsep_cuzsmall_done #1\R #2\W{\XINT_cuz_small #1}% \def\XINT_unsep_delim {1\R!1\R!1\R!1\R!1\R!1\R!1\R!1\R!\W}% -%%%%%%%%%%%% \def\XINT_div_unsepQ #11#2!1#3!1#4!1#5!1#6!1#7!1#8!1#9!% {% \xint_gob_til_R #9\XINT_div_unsepQ_end\R @@ -267,7 +257,6 @@ {\the\numexpr #1\relax \Z}% \def\XINT_div_unsepQ_y #1.#2\R #3\W{\XINT_cuz_small #2\Z}% \def\XINT_div_unsepQ_done #1.#2\R #3\W { #1#2\Z}% -%%%%%%%%%%%% \def\XINT_div_unsepR #11#2!1#3!1#4!1#5!1#6!1#7!1#8!1#9!% {% \xint_gob_til_R #9\XINT_div_unsepR_end\R @@ -826,15 +815,24 @@ }% \def\XINT_sub_l #1{\xint_UDzerofork #1\XINT_sub_l_carry 0\XINT_sub_l_nocarry\krof}% \def\XINT_sub_l_nocarry 1{1\relax }% -\def\XINT_sub_l_carry #1!{\expandafter\XINT_sub_m\the\numexpr 1#1-\xint_c_i!}% -\def\XINT_sub_m 1#1{\xint_UDzerofork #1\XINT_sub_n_carry 0\XINT_sub_n_nocarry\krof}% -\def\XINT_sub_n_carry #1!{1#1\expandafter!\the\numexpr\XINT_sub_l_carry }% -\def\XINT_sub_n_nocarry #1!#2#3!% +\def\XINT_sub_l_carry 1#1!{\ifcase #1 + \expandafter \XINT_sub_l_zeroa\or\expandafter\XINT_sub_l_one\else + \expandafter \XINT_sub_l_done\fi 1#1!}% +\def\XINT_sub_l_done {-\xint_c_i+}% +\def\XINT_sub_l_one 1#1!#2% {% - \xint_gob_til_Z #2\xint_gob_til_eightzeroes #1\XINT_sub_n_zero - 00000000\xint_gob_til_Z\Z 1\relax #1!#2#3!% + \xint_gob_til_Z #2\XINT_sub_l_oneone\Z 1\relax 00000000!#2% }% -\def\XINT_sub_n_zero 00000000\xint_gob_til_Z\Z 1\relax 00000000!{1!}% +\def\XINT_sub_l_oneone #1\W {1\relax \XINT_cuz_byviii!\Z 0\W\R }% +\def\XINT_sub_l_zeroa 1#1!{199999999\expandafter!\the\numexpr \XINT_sub_l_zerob }% +\def\XINT_sub_l_zerob 1#1!{\ifcase #1 + \expandafter \XINT_sub_l_zeroa\or\expandafter\XINT_sub_l_zone\else + \expandafter \XINT_sub_l_done\fi 1#1!}% +\def\XINT_sub_l_zone 1#1!#2% +{% + \xint_gob_til_Z #2\XINT_sub_l_zoneone\Z 1\relax 00000000!#2% +}% +\def\XINT_sub_l_zoneone\Z 1\relax 00000000{1}% \def\XINT_sub_p\Z\XINT_sub_l #1#2\W {% \xint_UDzerofork @@ -1085,62 +1083,55 @@ 1\R!1\R!1\R!1\R!1\R!1\R!1\R!1\R!\W }% \def\xintiiPow {\romannumeral0\xintiipow }% -\def\xintiipow #1% +\def\xintiipow #1#2% {% - \expandafter\xint_pow\romannumeral`&&@#1\Z% + \expandafter\xint_pow\the\numexpr #2\expandafter.\romannumeral`&&@#1\Z% }% -\def\xintiPow {\romannumeral0\xintipow }% -\def\xintipow #1% +\def\xintiPow {\romannumeral0\xintipow }% +\def\xintipow #1#2% {% - \expandafter\xint_pow\romannumeral0\xintnum{#1}\Z% + \expandafter\xint_pow\the\numexpr #2\expandafter.\romannumeral0\xintnum{#1}\Z% }% -\def\xint_pow #1#2\Z +\def\xint_pow #1.#2%#3\Z {% - \xint_UDsignfork - #1\XINT_pow_Aneg - -\XINT_pow_Anonneg - \krof - #1{#2}% + \xint_UDzerominusfork + #2-\XINT_pow_AisZero + 0#2\XINT_pow_Aneg + 0-{\XINT_pow_Apos #2}% + \krof {#1}% }% -\def\XINT_pow_Aneg #1#2#3% +\def\XINT_pow_AisZero #1#2\Z {% - \expandafter\XINT_pow_Aneg_\expandafter{\the\numexpr #3}#2\Z + \ifcase\XINT_cntSgn #1\Z + \xint_afterfi { 1}% + \or + \xint_afterfi { 0}% + \else + \xint_afterfi {\xintError:DivisionByZero\space 0}% + \fi }% -\def\XINT_pow_Aneg_ #1% +\def\XINT_pow_Aneg #1% {% \ifodd #1 - \expandafter\XINT_pow_Aneg_Bodd + \expandafter\XINT_opp\romannumeral0% \fi - \XINT_pow_Anonneg_ {#1}% -}% -\def\XINT_pow_Aneg_Bodd #1% -{% - \expandafter\XINT_opp\romannumeral0\XINT_pow_Anonneg_ + \XINT_pow_Apos {}{#1}% }% -\def\XINT_pow_Anonneg #1#2#3% +\def\XINT_pow_Apos #1#2{\XINT_pow_Apos_a {#2}#1}% +\def\XINT_pow_Apos_a #1#2#3% {% - \expandafter\XINT_pow_Anonneg_\expandafter {\the\numexpr #3}#1#2\Z + \xint_gob_til_Z #3\XINT_pow_Apos_short\Z + \XINT_pow_AatleastTwo {#1}#2#3% }% -\def\XINT_pow_Anonneg_ #1#2#3\Z +\def\XINT_pow_Apos_short\Z\XINT_pow_AatleastTwo #1#2\Z {% - \if\relax #3\relax\xint_dothis - {\ifcase #2 \expandafter\XINT_pow_AisZero - \or\expandafter\XINT_pow_AisOne - \else\expandafter\XINT_pow_AatleastTwo - \fi }\fi - \xint_orthat \XINT_pow_AatleastTwo {#1}{#2#3}% -}% -\def\XINT_pow_AisOne #1#2{ 1}% -\def\XINT_pow_AisZero #1#2% -{% - \ifcase\XINT_cntSgn #1\Z - \xint_afterfi { 1}% - \or - \xint_afterfi { 0}% - \else - \xint_afterfi {\xintError:DivisionByZero\space 0}% - \fi + \ifcase #2 + \xintError:thiscannothappen! + \or \expandafter\XINT_pow_AisOne + \else\expandafter\XINT_pow_AatleastTwo + \fi {#1}#2\Z }% +\def\XINT_pow_AisOne #1\Z{ 1}% \def\XINT_pow_AatleastTwo #1% {% \ifcase\XINT_cntSgn #1\Z @@ -1152,10 +1143,10 @@ \fi {#1}% }% -\edef\XINT_pow_BisNegative #1#2% +\edef\XINT_pow_BisNegative #1\Z {\noexpand\xintError:FractionRoundedToZero\space 0}% -\def\XINT_pow_BisZero #1#2{ 1}% -\def\XINT_pow_I_in #1#2% +\def\XINT_pow_BisZero #1\Z{ 1}% +\def\XINT_pow_I_in #1#2\Z {% \expandafter\XINT_pow_I_loop \the\numexpr #1\expandafter.% @@ -1229,33 +1220,24 @@ \the\numexpr #1\expandafter.% \the\numexpr\XINT_pow_mulbutcheckifsmall #3\W #3\W #2\W }% -\def\xintiFac {\romannumeral0\xintifac }% -\def\xintifac #1% -{% - \expandafter\XINT_fac_fork\expandafter {\the\numexpr#1}% -}% \def\xintiiFac {\romannumeral0\xintiifac }% -\def\xintiifac #1% -{% - \expandafter\XINT_fac_fork\expandafter {\romannumeral`&&@#1}% -}% -\let\xintFac\xintiFac \let\xintfac\xintifac -\def\XINT_fac_fork #1% +\def\xintiifac #1{\expandafter\XINT_fac_fork\the\numexpr#1.}% +\def\xintiFac {\romannumeral0\xintifac }% +\let\xintifac\xintiifac +\def\XINT_fac_fork #1#2.% {% - \ifcase\XINT_cntSgn #1\Z - \xint_afterfi{\expandafter\space\expandafter 1\xint_gobble_i }% - \or - \expandafter\XINT_fac_checksize - \else - \xint_afterfi{\expandafter\xintError:FactorialOfNegativeNumber - \expandafter\space\expandafter 1\xint_gobble_i }% - \fi - {#1}% + \xint_UDzerominusfork + #1-\XINT_fac_zero + 0#1\XINT_fac_neg + 0-\XINT_fac_checksize + \krof #1#2.% }% -\def\XINT_fac_checksize #1% +\def\XINT_fac_zero #1.{ 1}% +\edef\XINT_fac_neg #1.{\noexpand\xintError:FactorialOfNegative\space 1}% +\def\XINT_fac_checksize #1.% {% - \ifnum #1>9999 - \xint_dothis{\expandafter\xintError:FactorialOfTooBigNumber + \ifnum #1>\xint_c_x^iv + \xint_dothis{\expandafter\xintError:TooBigFactorial \expandafter\space\expandafter 1\xint_gob_til_W }\fi \ifnum #1>465 \xint_dothis{\XINT_fac_bigloop_a #1.}\fi \ifnum #1>101 \xint_dothis{\XINT_fac_medloop_a #1.\XINT_mul_out}\fi @@ -1401,7 +1383,6 @@ \expandafter\xint_exchangetwo_keepbraces \expandafter{\romannumeral0\XINT_sub_mm_a {}{}#3\Z #2\Z}{#1}% r-> b-r }% -%%%%%%%%%%%% \def\XINT_div_prepare #1% {% \XINT_div_prepare_a #1\R\R\R\R\R\R\R\R {10}0000001\W !{#1}% @@ -1411,7 +1392,6 @@ \xint_gob_til_R #9\XINT_div_prepare_small\R \XINT_div_prepare_b #9% }% -%%%%%%%%%%%% \def\XINT_div_prepare_small\R #1!#2% {% \ifcase #2 @@ -1462,7 +1442,6 @@ {\the\numexpr #1\expandafter}\expandafter{\the\numexpr #3-#1*#2}}% \def\XINT_div_dosmalldiv {{\expandafter\XINT_sdiv_out\the\numexpr\XINT_smalldivx_a}}% -%%%%%%%%%%%% \def\XINT_div_prepare_b {\expandafter\XINT_div_prepare_c\romannumeral0\XINT_zeroes_forviii }% \def\XINT_div_prepare_c #1!% @@ -1854,8 +1833,7 @@ {% -\ifnum 0#1=\xint_c_ 1\else2\fi\relax }% -%%%%%%%%%%%% -\def\XINT_sdiv_out #1\Z #2\W% +\def\XINT_sdiv_out #1\Z!#2!% {\expandafter {\romannumeral0\XINT_unsep_cuzsmall#11\R!1\R!1\R!1\R!1\R!1\R!1\R!1\R!\W}% {#2}}% @@ -1864,22 +1842,22 @@ \expandafter\XINT_smalldivx_b \the\numexpr (#3+#1)/#2-\xint_c_i!#1.#2!#3!% }% -\def\XINT_smalldivx_b #1!% +\def\XINT_smalldivx_b #1#2!% {% \if0#1\else - \xint_c_x^viii+#1\xint_afterfi{\expandafter!\the\numexpr}\fi - \XINT_smalldiv_c #1!% + \xint_c_x^viii+#1#2\xint_afterfi{\expandafter!\the\numexpr}\fi + \XINT_smalldiv_c #1#2!% }% \def\XINT_smalldiv_c #1!#2.#3!#4!% {% \expandafter\XINT_smalldiv_d\the\numexpr #4-#1*#3!#2.#3!% }% -\def\XINT_smalldiv_d #1!#2!#3#4!% +\def\XINT_smalldiv_d #1!#2!1#3#4!% {% - \xint_gob_til_Z #4\XINT_smalldiv_end \Z - \XINT_smalldiv_e #1!#2!#3#4!% + \xint_gob_til_Z #3\XINT_smalldiv_end \Z + \XINT_smalldiv_e #1!#2!1#3#4!% }% -\def\XINT_smalldiv_end\Z\XINT_smalldiv_e #1!#2!1\Z!{1!\Z #1\W }% +\def\XINT_smalldiv_end\Z\XINT_smalldiv_e #1!#2!1\Z!{1!\Z!#1!}% \def\XINT_smalldiv_e #1!#2.#3!% {% \expandafter\XINT_smalldiv_f\the\numexpr @@ -1899,18 +1877,15 @@ }% \def\XINT_smalldiv_g 1#1!1#2!#3!#4!#5!#6!% {% - \expandafter\XINT_smalldiv_h - \the\numexpr 1#6-#1.#2!#5!#3!#4!% + \expandafter\XINT_smalldiv_h\the\numexpr 1#6-#1.#2!#5!#3!#4!% }% \def\XINT_smalldiv_h 1#1#2.#3!#4!% {% - \expandafter\XINT_smalldiv_i - \the\numexpr #4-#3+#1-\xint_c_i.#2!% + \expandafter\XINT_smalldiv_i\the\numexpr #4-#3+#1-\xint_c_i.#2!% }% \def\XINT_smalldiv_i #1.#2!#3!#4.#5!% {% - \expandafter\XINT_smalldiv_j - \the\numexpr (#1#2+#4)/#5-\xint_c_i!#3!#1#2!#4.#5!% + \expandafter\XINT_smalldiv_j\the\numexpr (#1#2+#4)/#5-\xint_c_i!#3!#1#2!#4.#5!% }% \def\XINT_smalldiv_j #1!#2!% {% diff --git a/Master/texmf-dist/tex/generic/xint/xintexpr.sty b/Master/texmf-dist/tex/generic/xint/xintexpr.sty index 5c2f726146b..ab7896f4fe0 100644 --- a/Master/texmf-dist/tex/generic/xint/xintexpr.sty +++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintexpr: Expandable expression parser %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -81,7 +81,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintexpr}% - [2015/11/22 v1.2e Expandable expression parser (jfB)]% + [2016/03/12 1.2f Expandable expression parser (JFB)]% \catcode`! 11 \def\xint_gob_til_! #1!{}% catcode 11 ! default in xintexpr.sty code. \edef\XINT_expr_lockscan#1!% not used for decimal numbers in xintexpr 1.2 @@ -98,7 +98,6 @@ [\the\numexpr-4*\xintLength{#3}]% \fi }% -%%%%%%%%%%%% \def\XINT_expr_unlock {\expandafter\XINT_expr_unlock_a\string }% \def\XINT_expr_unlock_a #1.={}% \def\XINT_expr_unexpectedtoken {\xintError:ignored }% @@ -583,7 +582,7 @@ \def\XINT_expr_unknown_operator #1{\xintError:removed \xint_gobble_i {#1}}% \def\XINT_expr_foundop #1{\csname XINT_expr_precedence_#1\endcsname #1}% \catcode`) 11 -\def\XINT_tmpa #1#2#3#4% (avant #4#5) +\def\XINT_tmpa #1#2#3#4% {% \def#1##1% {% @@ -660,7 +659,7 @@ \do {\expandafter\def\csname XINT_expr_itself_#1\endcsname {#1}}% \catcode`& 7 \expandafter\let\csname XINT_expr_precedence_***\endcsname \xint_c_viii -\def\XINT_tmpc #1#2#3#4#5#6#7#8% +\def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8% {% \def #1##1% \XINT_expr_op_<op> ou flexpr ou iiexpr {% keep value, get next number and operator, then do until @@ -672,7 +671,7 @@ \krof }% \def #3##1##2##3##4% \XINT_expr_until_<op>_b ou flexpr ou iiexpr {% either execute next operation now, or first do next (possibly unary) - \ifnum ##2>#5% + \ifnum ##2>#7% \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral`&&@% \csname XINT_#8_op_##3\endcsname {##4}}% \else \xint_afterfi {\expandafter ##2\expandafter ##3% @@ -680,80 +679,74 @@ \fi }% \let #7#5% }% -\def\XINT_tmpb #1#2#3#4#5#6% +\def\XINT_expr_defbin_b #1#2#3#4#5% {% - \expandafter\XINT_tmpc - \csname XINT_#1_op_#3\expandafter\endcsname - \csname XINT_#1_until_#3_a\expandafter\endcsname - \csname XINT_#1_until_#3_b\expandafter\endcsname - \csname XINT_#1_op_-#5\expandafter\endcsname - \csname xint_c_#4\expandafter\endcsname - \csname #2#6\expandafter\endcsname - \csname XINT_expr_precedence_#3\endcsname {#1}% -}% -\catcode`& 12 -\xintFor #1 in {expr, flexpr} \do {% - \def\XINT_tmpa ##1{\XINT_tmpb {#1}{xint}##1}% - \xintApplyInline {\XINT_tmpa }{% - {|{iii}{vi}{OR}}% - {&{iv}{vi}{AND}}% - {{xor}{iii}{vi}{XOR}}% - {<{v}{vi}{Lt}}% - {>{v}{vi}{Gt}}% - {={v}{vi}{Eq}}% - {{<=}{v}{vi}{LtorEq}}% - {{>=}{v}{vi}{GtorEq}}% - {{!=}{v}{vi}{Neq}}% - {{..}{iii}{vi}{Seq::csv}}% - {{//}{vii}{vii}{DivTrunc}}% - {{/:}{vii}{vii}{Mod}}% - }% -}% -\catcode`& 7 -\def\XINT_tmpa #1{\XINT_tmpb {expr}{xint}#1}% -\xintApplyInline {\XINT_tmpa }{% - {+{vi}{vi}{Add}}% - {-{vi}{vi}{Sub}}% - {*{vii}{vii}{Mul}}% - {/{vii}{vii}{Div}}% - {^{ix}{ix}{Pow}}% - {{..[}{iii}{vi}{SeqA::csv}}% - {{]..}{iii}{vi}{SeqB::csv}}% -}% -\def\XINT_tmpa #1{\XINT_tmpb {flexpr}{XINTinFloat}#1}% -\xintApplyInline {\XINT_tmpa }{% - {+{vi}{vi}{Add}}% - {-{vi}{vi}{Sub}}% - {*{vii}{vii}{Mul}}% - {/{vii}{vii}{Div}}% - {^{ix}{ix}{Power}}% - {{..[}{iii}{vi}{SeqA::csv}}% - {{]..}{iii}{vi}{SeqB::csv}}% -}% -\def\XINT_tmpa #1{\XINT_tmpb {iiexpr}{xint}#1}% -\catcode`& 12 -\xintApplyInline {\XINT_tmpa }{% - {|{iii}{vi}{OR}}% - {&{iv}{vi}{AND}}% - {{xor}{iii}{vi}{XOR}}% - {<{v}{vi}{iiLt}}% - {>{v}{vi}{iiGt}}% - {={v}{vi}{iiEq}}% - {{<=}{v}{vi}{iiLtorEq}}% - {{>=}{v}{vi}{iiGtorEq}}% - {{!=}{v}{vi}{iiNeq}}% - {+{vi}{vi}{iiAdd}}% - {-{vi}{vi}{iiSub}}% - {*{vii}{vii}{iiMul}}% - {/{vii}{vii}{iiDivRound}}% CHANGED IN 1.1! PREVIOUSLY DID EUCLIDEAN QUOTIENT - {^{ix}{ix}{iiPow}}% - {{..[}{iii}{vi}{iiSeqA::csv}}% - {{]..}{iii}{vi}{iiSeqB::csv}}% - {{..}{iii}{vi}{iiSeq::csv}}% - {{//}{vii}{vii}{iiDivTrunc}}% - {{/:}{vii}{vii}{iiMod}}% + \expandafter\XINT_expr_defbin_c + \csname XINT_#1_op_#2\expandafter\endcsname + \csname XINT_#1_until_#2_a\expandafter\endcsname + \csname XINT_#1_until_#2_b\expandafter\endcsname + \csname XINT_#1_op_-#4\expandafter\endcsname + \csname xint_c_#3\expandafter\endcsname + \csname #5\expandafter\endcsname + \csname XINT_expr_precedence_#2\endcsname {#1}% }% -\catcode`& 7 +\XINT_expr_defbin_b {expr} | {iii}{vi} {xintOR}% +\XINT_expr_defbin_b {flexpr} | {iii}{vi} {xintOR}% +\XINT_expr_defbin_b {iiexpr} | {iii}{vi} {xintOR}% +\XINT_expr_defbin_b {expr} & {iv}{vi} {xintAND}% +\XINT_expr_defbin_b {flexpr} & {iv}{vi} {xintAND}% +\XINT_expr_defbin_b {iiexpr} & {iv}{vi} {xintAND}% +\XINT_expr_defbin_b {expr} {xor}{iii}{vi} {xintXOR}% +\XINT_expr_defbin_b {flexpr}{xor}{iii}{vi} {xintXOR}% +\XINT_expr_defbin_b {iiexpr}{xor}{iii}{vi} {xintXOR}% +\XINT_expr_defbin_b {expr} < {v}{vi} {xintLt}% +\XINT_expr_defbin_b {flexpr} < {v}{vi} {xintLt}% +\XINT_expr_defbin_b {iiexpr} < {v}{vi} {xintiiLt}% +\XINT_expr_defbin_b {expr} > {v}{vi} {xintGt}% +\XINT_expr_defbin_b {flexpr} > {v}{vi} {xintGt}% +\XINT_expr_defbin_b {iiexpr} > {v}{vi} {xintiiGt}% +\XINT_expr_defbin_b {expr} = {v}{vi} {xintEq}% +\XINT_expr_defbin_b {flexpr} = {v}{vi} {xintEq}% +\XINT_expr_defbin_b {iiexpr} = {v}{vi} {xintiiEq}% +\XINT_expr_defbin_b {expr} {<=} {v}{vi} {xintLtorEq}% +\XINT_expr_defbin_b {flexpr}{<=} {v}{vi} {xintLtorEq}% +\XINT_expr_defbin_b {iiexpr}{<=} {v}{vi} {xintiiLtorEq}% +\XINT_expr_defbin_b {expr} {>=} {v}{vi} {xintGtorEq}% +\XINT_expr_defbin_b {flexpr}{>=} {v}{vi} {xintGtorEq}% +\XINT_expr_defbin_b {iiexpr}{>=} {v}{vi} {xintiiGtorEq}% +\XINT_expr_defbin_b {expr} {!=} {v}{vi} {xintNeq}% +\XINT_expr_defbin_b {flexpr}{!=} {v}{vi} {xintNeq}% +\XINT_expr_defbin_b {iiexpr}{!=} {v}{vi} {xintiiNeq}% +\XINT_expr_defbin_b {expr} {..} {iii}{vi} {xintSeq::csv}% +\XINT_expr_defbin_b {flexpr}{..} {iii}{vi} {xintSeq::csv}% +\XINT_expr_defbin_b {iiexpr}{..} {iii}{vi} {xintiiSeq::csv}% +\XINT_expr_defbin_b {expr} {//} {vii}{vii}{xintDivTrunc}% +\XINT_expr_defbin_b {flexpr}{//} {vii}{vii}{xintDivTrunc}% +\XINT_expr_defbin_b {iiexpr}{//} {vii}{vii}{xintiiDivTrunc}% +\XINT_expr_defbin_b {expr} {/:} {vii}{vii}{xintMod}% +\XINT_expr_defbin_b {flexpr}{/:} {vii}{vii}{xintMod}% +\XINT_expr_defbin_b {iiexpr}{/:} {vii}{vii}{xintiiMod}% +\XINT_expr_defbin_b {expr} + {vi}{vi} {xintAdd}% +\XINT_expr_defbin_b {flexpr} + {vi}{vi} {XINTinFloatAdd}% +\XINT_expr_defbin_b {iiexpr} + {vi}{vi} {xintiiAdd}% +\XINT_expr_defbin_b {expr} - {vi}{vi} {xintSub}% +\XINT_expr_defbin_b {flexpr} - {vi}{vi} {XINTinFloatSub}% +\XINT_expr_defbin_b {iiexpr} - {vi}{vi} {xintiiSub}% +\XINT_expr_defbin_b {expr} * {vii}{vii}{xintMul}% +\XINT_expr_defbin_b {flexpr} * {vii}{vii}{XINTinFloatMul}% +\XINT_expr_defbin_b {iiexpr} * {vii}{vii}{xintiiMul}% +\XINT_expr_defbin_b {expr} / {vii}{vii}{xintDiv}% +\XINT_expr_defbin_b {flexpr} / {vii}{vii}{XINTinFloatDiv}% +\XINT_expr_defbin_b {iiexpr} / {vii}{vii}{xintiiDivRound}% CHANGED IN 1.1! +\XINT_expr_defbin_b {expr} ^ {ix}{ix} {xintPow}% +\XINT_expr_defbin_b {flexpr} ^ {ix}{ix} {XINTinFloatPowerH}% +\XINT_expr_defbin_b {iiexpr} ^ {ix}{ix} {xintiiPow}% +\XINT_expr_defbin_b {expr} {..[}{iii}{vi} {xintSeqA::csv}% +\XINT_expr_defbin_b {flexpr}{..[}{iii}{vi} {XINTinFloatSeqA::csv}% +\XINT_expr_defbin_b {iiexpr}{..[}{iii}{vi} {xintiiSeqA::csv}% +\XINT_expr_defbin_b {expr} {]..}{iii}{vi} {xintSeqB::csv}% +\XINT_expr_defbin_b {flexpr}{]..}{iii}{vi} {XINTinFloatSeqB::csv}% +\XINT_expr_defbin_b {iiexpr}{]..}{iii}{vi} {xintiiSeqB::csv}% \def\XINT_expr_binop_inline_a {\expandafter\xint_gobble_i\romannumeral`&&@\XINT_expr_binop_inline_b }% \def\XINT_expr_binop_inline_b #1#2,{\XINT_expr_binop_inline_c #2,{#1}}% @@ -764,7 +757,7 @@ \def\XINT_expr_binop_inline_d #1,#2{,#2{#1}\XINT_expr_binop_inline_b {#2}}% \def\XINT_expr_binop_inline_e #1,#2{,\XINT_expr_binop_inline_b {#2}}% \def\XINT_expr_binop_inline_end #1,#2{}% -\def\XINT_tmpc #1#2#3#4#5#6#7#8% +\def\XINT_expr_deflistopr_c #1#2#3#4#5#6#7#8% {% \def #1##1% \XINT_expr_op_<op> ou flexpr ou iiexpr {% keep value, get next number and operator, then do until @@ -776,7 +769,7 @@ \krof }% \def #3##1##2##3##4% \XINT_expr_until_<op>_b ou flexpr ou iiexpr {% either execute next operation now, or first do next (possibly unary) - \ifnum ##2>#5% + \ifnum ##2>#7% \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral`&&@% \csname XINT_#8_op_##3\endcsname {##4}}% \else \xint_afterfi {\expandafter ##2\expandafter ##3% @@ -788,9 +781,9 @@ \fi }% \let #7#5% }% -\def\XINT_tmpb #1#2#3#4% +\def\XINT_expr_deflistopr_b #1#2#3#4% {% - \expandafter\XINT_tmpc + \expandafter\XINT_expr_deflistopr_c \csname XINT_#1_op_#2\expandafter\endcsname \csname XINT_#1_until_#2_a\expandafter\endcsname \csname XINT_#1_until_#2_b\expandafter\endcsname @@ -799,30 +792,28 @@ \csname #4\expandafter\endcsname \csname XINT_expr_precedence_#2\endcsname {#1}% }% -\xintApplyInline {\expandafter\XINT_tmpb \xint_firstofone}{% - {{expr}{a+}{vi}{xintAdd}}% - {{expr}{a-}{vi}{xintSub}}% - {{expr}{a*}{vii}{xintMul}}% - {{expr}{a/}{vii}{xintDiv}}% - {{expr}{a^}{ix}{xintPow}}% - {{iiexpr}{a+}{vi}{xintiiAdd}}% - {{iiexpr}{a-}{vi}{xintiiSub}}% - {{iiexpr}{a*}{vii}{xintiiMul}}% - {{iiexpr}{a/}{vii}{xintiiDivRound}}% - {{iiexpr}{a^}{ix}{xintiiPow}}% - {{flexpr}{a+}{vi}{XINTinFloatAdd}}% - {{flexpr}{a-}{vi}{XINTinFloatSub}}% - {{flexpr}{a*}{vii}{XINTinFloatMul}}% - {{flexpr}{a/}{vii}{XINTinFloatDiv}}% - {{flexpr}{a^}{ix}{XINTinFloatPower}}% -}% -\def\XINT_tmpc #1#2#3#4#5#6#7% +\XINT_expr_deflistopr_b {expr} {a+}{vi} {xintAdd}% +\XINT_expr_deflistopr_b {expr} {a-}{vi} {xintSub}% +\XINT_expr_deflistopr_b {expr} {a*}{vii}{xintMul}% +\XINT_expr_deflistopr_b {expr} {a/}{vii}{xintDiv}% +\XINT_expr_deflistopr_b {expr} {a^}{ix} {xintPow}% +\XINT_expr_deflistopr_b {iiexpr}{a+}{vi} {xintiiAdd}% +\XINT_expr_deflistopr_b {iiexpr}{a-}{vi} {xintiiSub}% +\XINT_expr_deflistopr_b {iiexpr}{a*}{vii}{xintiiMul}% +\XINT_expr_deflistopr_b {iiexpr}{a/}{vii}{xintiiDivRound}% +\XINT_expr_deflistopr_b {iiexpr}{a^}{ix} {xintiiPow}% +\XINT_expr_deflistopr_b {flexpr}{a+}{vi} {XINTinFloatAdd}% +\XINT_expr_deflistopr_b {flexpr}{a-}{vi} {XINTinFloatSub}% +\XINT_expr_deflistopr_b {flexpr}{a*}{vii}{XINTinFloatMul}% +\XINT_expr_deflistopr_b {flexpr}{a/}{vii}{XINTinFloatDiv}% +\XINT_expr_deflistopr_b {flexpr}{a^}{ix} {XINTinFloatPowerH}% +\def\XINT_expr_deflistopl_c #1#2#3#4#5#6#7% {% \def #1##1{\expandafter#2\expandafter##1\romannumeral`&&@% \expandafter #3\romannumeral`&&@\XINT_expr_getnext }% \def #2##1##2##3##4% {% either execute next operation now, or first do next (possibly unary) - \ifnum ##2>#4% + \ifnum ##2>#6% \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral`&&@% \csname XINT_#7_op_##3\endcsname {##4}}% \else \xint_afterfi {\expandafter ##2\expandafter ##3% @@ -833,9 +824,9 @@ \fi }% \let #6#4% }% -\def\XINT_tmpb #1#2#3#4% +\def\XINT_expr_deflistopl_b #1#2#3#4% {% - \expandafter\XINT_tmpc + \expandafter\XINT_expr_deflistopl_c \csname XINT_#1_op_#2\expandafter\endcsname \csname XINT_#1_until_#2\expandafter\endcsname \csname XINT_#1_until_)_a\expandafter\endcsname @@ -843,23 +834,21 @@ \csname #4\expandafter\endcsname \csname XINT_expr_precedence_#2\endcsname {#1}% }% -\xintApplyInline {\expandafter\XINT_tmpb\xint_firstofone }{% - {{expr}{+[}{vi}{xintAdd}}% - {{expr}{-[}{vi}{xintSub}}% - {{expr}{*[}{vii}{xintMul}}% - {{expr}{/[}{vii}{xintDiv}}% - {{expr}{^[}{ix}{xintPow}}% - {{iiexpr}{+[}{vi}{xintiiAdd}}% - {{iiexpr}{-[}{vi}{xintiiSub}}% - {{iiexpr}{*[}{vii}{xintiiMul}}% - {{iiexpr}{/[}{vii}{xintiiDivRound}}% - {{iiexpr}{^[}{ix}{xintiiPow}}% - {{flexpr}{+[}{vi}{XINTinFloatAdd}}% - {{flexpr}{-[}{vi}{XINTinFloatSub}}% - {{flexpr}{*[}{vii}{XINTinFloatMul}}% - {{flexpr}{/[}{vii}{XINTinFloatDiv}}% - {{flexpr}{^[}{ix}{XINTinFloatPower}}% -}% +\XINT_expr_deflistopl_b {expr} {+[}{vi} {xintAdd}% +\XINT_expr_deflistopl_b {expr} {-[}{vi} {xintSub}% +\XINT_expr_deflistopl_b {expr} {*[}{vii}{xintMul}% +\XINT_expr_deflistopl_b {expr} {/[}{vii}{xintDiv}% +\XINT_expr_deflistopl_b {expr} {^[}{ix} {xintPow}% +\XINT_expr_deflistopl_b {iiexpr}{+[}{vi} {xintiiAdd}% +\XINT_expr_deflistopl_b {iiexpr}{-[}{vi} {xintiiSub}% +\XINT_expr_deflistopl_b {iiexpr}{*[}{vii}{xintiiMul}% +\XINT_expr_deflistopl_b {iiexpr}{/[}{vii}{xintiiDivRound}% +\XINT_expr_deflistopl_b {iiexpr}{^[}{ix} {xintiiPow}% +\XINT_expr_deflistopl_b {flexpr}{+[}{vi} {XINTinFloatAdd}% +\XINT_expr_deflistopl_b {flexpr}{-[}{vi} {XINTinFloatSub}% +\XINT_expr_deflistopl_b {flexpr}{*[}{vii}{XINTinFloatMul}% +\XINT_expr_deflistopl_b {flexpr}{/[}{vii}{XINTinFloatDiv}% +\XINT_expr_deflistopl_b {flexpr}{^[}{ix} {XINTinFloatPowerH}% \xintFor #1 in {and,or,xor,mod} \do {% \expandafter\def\csname XINT_expr_itself_#1\endcsname {#1}}% \expandafter\let\csname XINT_expr_precedence_and\expandafter\endcsname @@ -915,7 +904,7 @@ \krof }% \def #3##1##2##3##4% \XINT_expr_until_][_b {% - \ifnum ##2>\xint_c_ii + \ifnum ##2>#5% \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral`&&@% \csname XINT_#6_op_##3\endcsname {##4}}% \else @@ -949,7 +938,7 @@ \krof }% \def #3##1##2##3##4% \XINT_expr_until_:_b {% - \ifnum ##2>\xint_c_iii + \ifnum ##2>#5% \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral`&&@% \csname XINT_#6_op_##3\endcsname {##4}}% \else @@ -1243,7 +1232,7 @@ }% \let\XINT_expr_precedence_! \xint_c_x \def\XINT_expr_op_! #1{\expandafter\XINT_expr_getop - \csname .=\xintFac{\XINT_expr_unlock #1}\endcsname }% + \csname .=\xintiFac{\XINT_expr_unlock #1}\endcsname }% \def\XINT_flexpr_op_! #1{\expandafter\XINT_expr_getop \csname .=\XINTinFloatFac{\XINT_expr_unlock #1}\endcsname }% \def\XINT_iiexpr_op_! #1{\expandafter\XINT_expr_getop @@ -1435,7 +1424,7 @@ {\expandafter\XINT_expr_onlitteral_seq_f\romannumeral`&&@\XINT_expr_onlitteral_seq_a {}}% \def\XINT_expr_onlitteral_seq_f #1#2{\xint_c_xviii `{seqx}#2)\relax #1}% \def\XINT_expr_onlitteral_seq_a #1#2,% -{% checks balancing of parentheses +{% \ifcase\XINT_isbalanced_a \relax #1#2(\xint_bye)\xint_bye \expandafter\XINT_expr_onlitteral_seq_c \or\expandafter\XINT_expr_onlitteral_seq_b @@ -1807,8 +1796,9 @@ \expandafter\xint_firstofone\romannumeral`&&@#1,^,1}% \def\xintiiLCMof:csv #1{\expandafter\XINT_oncsv:_a\expandafter\xintiilcm \expandafter\xint_firstofone\romannumeral`&&@#1,^,0}% -\def\XINTinFloatdigits {\XINTinFloat [\XINTdigits]}% -\def\XINTinFloatSqrtdigits {\XINTinFloatSqrt [\XINTdigits]}% +\def\XINTinFloatdigits {\XINTinFloat [\XINTdigits]}% +\def\XINTinFloatSqrtdigits {\XINTinFloatSqrt[\XINTdigits]}% +\def\XINTinFloatFacdigits {\XINTinFloatFac [\XINTdigits]}% \def\XINTinFloatMaxof:csv #1{\expandafter\XINT_oncsv:_a\expandafter\xintmax \expandafter\XINTinFloatdigits\romannumeral`&&@#1,^,{0[0]}}% \def\XINTinFloatMinof:csv #1{\expandafter\XINT_oncsv:_a\expandafter\xintmin @@ -1876,6 +1866,24 @@ \expandafter #1\expandafter #2\csname .=\XINTinFloatMul{\XINT_expr_unlock #3}{\XINT_expr_unlock #3}\endcsname }% +\def\XINT_expr_func_factorial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\XINT_expr_argandopt + \romannumeral`&&@\XINT_expr_unlock#3,,.\xintiFac\XINTinFloatFac + \endcsname +}% +\def\XINT_flexpr_func_factorial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\XINT_expr_argandopt + \romannumeral`&&@\XINT_expr_unlock#3,,.\XINTinFloatFacdigits\XINTinFloatFac + \endcsname +}% +\def\XINT_iiexpr_func_factorial #1#2#3% +{% + \expandafter #1\expandafter #2\csname.=\xintiiFac{\XINT_expr_unlock #3}\endcsname +}% \def\XINT_iiexpr_func_sqr #1#2#3% {\expandafter #1\expandafter #2\csname.=\xintiiSqr {\XINT_expr_unlock #3}\endcsname }% \def\XINT_expr_func_sqrt #1#2#3% @@ -1947,6 +1955,48 @@ \expandafter\XINT_expr_twoargs \romannumeral`&&@\XINT_expr_unlock #3,\endcsname }% +\def\XINT_expr_func_binomial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\expandafter\expandafter\xintiBinomial + \expandafter\XINT_expr_twoargs + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\def\XINT_flexpr_func_binomial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\expandafter\expandafter\XINTinFloatBinomial + \expandafter\XINT_expr_twoargs + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\def\XINT_iiexpr_func_binomial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\expandafter\expandafter\xintiiBinomial + \expandafter\XINT_expr_twoargs + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\def\XINT_expr_func_pfactorial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\expandafter\expandafter\xintiPFactorial + \expandafter\XINT_expr_twoargs + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\def\XINT_flexpr_func_pfactorial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\expandafter\expandafter\XINTinFloatPFactorial + \expandafter\XINT_expr_twoargs + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% +\def\XINT_iiexpr_func_pfactorial #1#2#3% +{% + \expandafter #1\expandafter #2\csname .=% + \expandafter\expandafter\expandafter\xintiiPFactorial + \expandafter\XINT_expr_twoargs + \romannumeral`&&@\XINT_expr_unlock #3,\endcsname +}% \def\XINT_expr_func_quo #1#2#3% {% \expandafter #1\expandafter #2\csname .=% @@ -2195,7 +2245,7 @@ \edef\XINT_expr_tmpa {##1}% \edef\XINT_expr_tmpa {\xint_zapspaces_o \XINT_expr_tmpa}% \def\XINT_expr_tmpb {0}% - \def\XINT_expr_tmpc {##4}% + \def\XINT_expr_tmpc {(##4)}% \xintFor ####1 in {##2} \do {\edef\XINT_expr_tmpb {\the\numexpr\XINT_expr_tmpb+\xint_c_i}% \edef\XINT_expr_tmpc {subs(\unexpanded\expandafter{\XINT_expr_tmpc},% @@ -2274,9 +2324,15 @@ \xint_orthat {\csname #4NE\endcsname #6}{#1#2}% }% \toks0 {}% -\xintFor #1 in {DivTrunc,iiDivTrunc,iiDivRound,Mod,iiMod,iRound,Round,iTrunc,Trunc,% - Lt,Gt,Eq,LtorEq,GtorEq,Neq,AND,OR,XOR,iQuo,iRem,Add,Sub,Mul,Div,Pow,E,% - iiAdd,iiSub,iiMul,iiPow,iiQuo,iiRem,iiE,SeqA::csv,iiSeqA::csv}\do +\xintFor #1 in + {DivTrunc,Mod,Round,Trunc,iRound,iTrunc,iQuo,iRem, + iiDivTrunc,iiDivRound,iiMod,iiQuo,iiRem,% + Lt,Gt,Eq,LtorEq,GtorEq,Neq,% + iiLt,iiGt,iiEq,iiLtorEq,iiGtorEq,iiNeq,% + Add,Sub,Mul,Div,Pow,E,% + iiAdd,iiSub,iiMul,iiPow,iiE,% + AND,OR,XOR,% + SeqA::csv,iiSeqA::csv}\do {\toks0 \expandafter{\the\toks0% no space! \expandafter\let\csname xint#1NE\expandafter\endcsname\csname xint#1\expandafter @@ -2285,14 +2341,14 @@ \romannumeral`&&@\expandafter\XINT_xptwo_getab_b \romannumeral`&&@####2!{####1}{~xint#1}{xint#1}}% }% -}% cela aurait-il un sens d'ajouter Raw et iNum (à cause de qint, qfrac, - % qfloat?). Pas le temps d'y réfléchir. Je ne fais rien. +}% \xintFor #1 in {Num,Irr,Abs,iiAbs,Sgn,iiSgn,TFrac,Floor,iFloor,Ceil,iCeil,% - Sqr,iiSqr,iiSqrt,iiSqrtR,iiIsZero,iiIsNotZero,iiifNotZero,iiifSgn,% - Odd,Even,iiOdd,iiEven,Opp,iiOpp,iiifZero,Fac,iiFac,Bool,Toggle}\do -{\toks0 - \expandafter{\the\toks0% - \expandafter\let\csname xint#1NE\expandafter\endcsname\csname xint#1\expandafter + Sqr,iiSqr,iiSqrt,iiSqrtR,iiIsZero,iiIsNotZero,iiifNotZero,iiifSgn,% + Odd,Even,iiOdd,iiEven,Opp,iiOpp,iiifZero,iFac,iBinomial,% + iPFactorial,iiFac,iiBinomial,iiPFactorial,Bool,Toggle}\do +{\toks0 \expandafter{\the\toks0% + \expandafter\let\csname xint#1NE\expandafter\endcsname\csname + xint#1\expandafter \endcsname\expandafter\def\csname xint#1\endcsname ####1{% \expandafter\XINT_NEfork_one\romannumeral`&&@####1!{~xint#1}{xint#1}{}{}}% }% @@ -2304,7 +2360,7 @@ \expandafter\XINT_NEfork_one \romannumeral`&&@##1!{~XINTinFloatFac}{XINTinFloatFac}{}{}}% }% -\xintFor #1 in {Add,Sub,Mul,Div,Power,E,Mod,SeqA::csv}\do +\xintFor #1 in {Add,Sub,Mul,Div,Binomial,PFactorial,PowerH,E,Mod,SeqA::csv}\do {\toks0 \expandafter{\the\toks0% \expandafter\let\csname XINTinFloat#1NE\expandafter\endcsname @@ -2315,7 +2371,7 @@ \romannumeral`&&@####2!{####1}{~XINTinFloat#1}{XINTinFloat#1}}% }% }% -\xintFor #1 in {XINTinFloatdigits,XINTinFloatFracdigits,XINTinFloatSqrtdigits}\do +\xintFor #1 in {XINTinFloatdigits,XINTinFloatFracdigits,XINTinFloatSqrtdigits,XINTinFloatFacdigits}\do {\toks0 \expandafter{\the\toks0% \expandafter\let\csname #1NE\expandafter\endcsname\csname #1\expandafter @@ -2353,6 +2409,10 @@ \def\XINTinFloatSqrt [##1]##2{% \expandafter\XINT_NEfork_one \romannumeral`&&@##2!{~XINTinFloatSqrt[##1]}{XINTinFloatSqrt}{}{[##1]}}% + \let\XINTinFloatFacNE\XINTinFloatFac + \def\XINTinFloatFac [##1]##2{% + \expandafter\XINT_NEfork_one + \romannumeral`&&@##2!{~XINTinFloatFac[##1]}{XINTinFloatFac}{}{[##1]}}% }% \xintFor #1 in {ANDof,ORof,XORof,iiMaxof,iiMinof,iiSum,iiPrd, GCDof,LCMof,Sum,Prd,Maxof,Minof}\do @@ -2391,39 +2451,48 @@ \def\xintRound::csv {~xintRound::csv }% }% \toks0 {}% -\def\xintNewExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone\xinttheexpr }% -\def\xintNewFloatExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone\xintthefloatexpr }% -\def\xintNewIExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone\xinttheiexpr }% -\def\xintNewIIExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone\xinttheiiexpr }% -\def\xintNewBoolExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone\xinttheboolexpr }% -\def\XINT_NewFunc {\XINT_NewExpr,{}\xint_gobble_i\xintthebareeval }% -\def\XINT_NewFloatFunc {\XINT_NewExpr,{}\xint_gobble_i\xintthebarefloateval }% -\def\XINT_NewIIFunc {\XINT_NewExpr,{}\xint_gobble_i\xintthebareiieval }% +\def\xintNewExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone + \xinttheexpr\XINT_newexpr_clean}% +\def\xintNewFloatExpr{\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone + \xintthefloatexpr\XINT_newexpr_clean}% +\def\xintNewIExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone + \xinttheiexpr\XINT_newexpr_clean}% +\def\xintNewIIExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone + \xinttheiiexpr\XINT_newexpr_clean}% +\def\xintNewBoolExpr {\XINT_NewExpr{}\XINT_expr_redefineprints\xint_firstofone + \xinttheboolexpr\XINT_newexpr_clean}% \def\XINT_newexpr_clean #1>{\noexpand\romannumeral`&&@}% -\def\XINT_NewExpr #1#2#3#4#5#6[#7]% +\def\XINT_NewFunc + {\XINT_NewExpr,{}\xint_gobble_i\xintthebareeval \XINT_newfunc_clean }% +\def\XINT_NewFloatFunc + {\XINT_NewExpr,{}\xint_gobble_i\xintthebarefloateval\XINT_newfunc_clean }% +\def\XINT_NewIIFunc + {\XINT_NewExpr,{}\xint_gobble_i\xintthebareiieval \XINT_newfunc_clean }% +\def\XINT_newfunc_clean #1>{}% +\def\XINT_NewExpr #1#2#3#4#5#6#7[#8]% {% \begingroup - \ifcase #7\relax - \toks0 {\endgroup\def#5}% - \or \toks0 {\endgroup\def#5##1#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1##3#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1##3#1##4#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1##3#1##4#1##5#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1##3#1##4#1##5#1##6#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1##3#1##4#1##5#1##6#1##7#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1##3#1##4#1##5#1##6#1##7#1##8#1}% - \or \toks0 {\endgroup\def#5##1#1##2#1##3#1##4#1##5#1##6#1##7#1##8#1##9#1}% + \ifcase #8\relax + \toks0 {\endgroup\def#6}% + \or \toks0 {\endgroup\def#6##1#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1##3#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1##3#1##4#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1##3#1##4#1##5#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1##3#1##4#1##5#1##6#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1##3#1##4#1##5#1##6#1##7#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1##3#1##4#1##5#1##6#1##7#1##8#1}% + \or \toks0 {\endgroup\def#6##1#1##2#1##3#1##4#1##5#1##6#1##7#1##8#1##9#1}% \fi \xintexprSafeCatcodes \XINT_expr_redefinemacros #2% - \XINT_NewExpr_a #3#4#5% + \XINT_NewExpr_a #3#4#5#6% }% \catcode`~ 13 \catcode`@ 14 \catcode`\% 6 \catcode`# 12 \catcode`$ 11 @ $ -\def\XINT_NewExpr_a %1%2%3%4@ +\def\XINT_NewExpr_a %1%2%3%4%5@ {@ - \def\XINT_tmpa %%1%%2%%3%%4%%5%%6%%7%%8%%9{%4}@ + \def\XINT_tmpa %%1%%2%%3%%4%%5%%6%%7%%8%%9{%5}@ \def~{$noexpand$}@ \catcode`: 11 \catcode`_ 11 \catcode`# 12 \catcode`~ 13 \escapechar 126 @@ -2434,11 +2503,11 @@ }@ \escapechar 92 \catcode`# 6 \catcode`$ 0 @ $ \edef\XINT_tmpa %%1%%2%%3%%4%%5%%6%%7%%8%%9@ - {\scantokens\expandafter{\expandafter\XINT_newexpr_clean\meaning\XINT_tmpb}}@ + {\scantokens\expandafter{\expandafter%3\meaning\XINT_tmpb}}@ \the\toks0\expandafter{\XINT_tmpa{%%1}{%%2}{%%3}{%%4}{%%5}{%%6}{%%7}{%%8}{%%9}}@ %1{\ifxintverbose \xintMessage{xintexpr}{Info}@ - {\string%3\space now with meaning \meaning%3}@ + {\string%4\space now with meaning \meaning%4}@ \fi}@ }@ \catcode`% 14 diff --git a/Master/texmf-dist/tex/generic/xint/xintfrac.sty b/Master/texmf-dist/tex/generic/xint/xintfrac.sty index 50a961d49cd..39b9785986f 100644 --- a/Master/texmf-dist/tex/generic/xint/xintfrac.sty +++ b/Master/texmf-dist/tex/generic/xint/xintfrac.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintfrac: Expandable operations on fractions %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintfrac}% - [2015/11/22 v1.2e Expandable operations on fractions (jfB)]% + [2016/03/12 1.2f Expandable operations on fractions (JFB)]% \def\XINT_cntSgnFork #1% {% \ifcase #1\expandafter\xint_secondofthree @@ -88,17 +88,16 @@ \expandafter\space \the\numexpr -1+\XINT_Abs {#1}+\XINT_Len {#2}+\XINT_Len {#3}\relax }% -\def\XINT_lenrord_loop #1#2#3#4#5#6#7#8#9% -{% faire \romannumeral`&&@\XINT_lenrord_loop 0{}#1\Z\W\W\W\W\W\W\W\Z +\def\XINT_lenrord_loop #1.#2#3#4#5#6#7#8#9% +{% \xint_gob_til_W #9\XINT_lenrord_W\W - \expandafter\XINT_lenrord_loop\expandafter - {\the\numexpr #1+7}{#9#8#7#6#5#4#3#2}% + \expandafter\XINT_lenrord_loop\the\numexpr #1+\xint_c_vii.{#9#8#7#6#5#4#3#2}% }% -\def\XINT_lenrord_W\W\expandafter\XINT_lenrord_loop\expandafter #1#2#3\Z +\def\XINT_lenrord_W\W\expandafter\XINT_lenrord_loop #1.#2#3\Z {% - \expandafter\XINT_lenrord_X\expandafter {#1}#2\Z + \expandafter\XINT_lenrord_X #1.#2\Z }% -\def\XINT_lenrord_X #1#2\Z +\def\XINT_lenrord_X #1.#2\Z {% \XINT_lenrord_Y #2\R\R\R\R\R\R\T {#1}% }% @@ -113,10 +112,7 @@ #2\XINT_lenrord_Z \xint_c_iii \W\XINT_lenrord_Z \xint_c_ii \Z }% -\def\XINT_lenrord_Z #1#2\Z #3% retourne: {longueur}renverse\Z -{% - \expandafter{\the\numexpr #3-#1\relax}% -}% +\def\XINT_lenrord_Z #1#2\Z #3{\the\numexpr #3-#1.}% \def\XINT_outfrac #1#2#3% {% \ifcase\XINT_cntSgn #3\Z @@ -173,11 +169,11 @@ #1/#2% }% \def\XINT_infrac_res_ca #1[#2]/\XINT_W[\XINT_W\XINT_T - {\expandafter{\the\numexpr 0#2}{#1}{1}}% + {\expandafter{\the\numexpr #2}{#1}{1}}% \def\XINT_infrac_res_cb #1/#2[% {\expandafter\XINT_infrac_res_cc\romannumeral`&&@#2~#1[}% \def\XINT_infrac_res_cc #1~#2[#3]/\XINT_W[\XINT_W\XINT_T - {\expandafter{\the\numexpr 0#3}{#2}{#1}}% + {\expandafter{\the\numexpr #3}{#2}{#1}}% \def\XINT_frac_gen #1/#2% {% \xint_UDXINTWfork @@ -201,14 +197,14 @@ #1.#2% }% \def\XINT_frac_gen_Bb #1e#2e#3\XINT_Z - {\expandafter\XINT_frac_gen_C\the\numexpr 0#2~#1!}% + {\expandafter\XINT_frac_gen_C\the\numexpr #2+\xint_c_~#1!}% \def\XINT_frac_gen_Bc #1.#2e% {% \expandafter\XINT_frac_gen_Bd\romannumeral`&&@#2.#1e% }% \def\XINT_frac_gen_Bd #1.#2e#3e#4\XINT_Z {% - \expandafter\XINT_frac_gen_C\the\numexpr 0#3-\romannumeral0\expandafter + \expandafter\XINT_frac_gen_C\the\numexpr #3-\romannumeral0\expandafter \XINT_length_loop 0.#1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye~#2#1!% @@ -370,10 +366,10 @@ }% \def\XINT_addm_A #1#2#3#4#5#6% {% - \xint_gob_til_W #3\xint_addm_az\W + \xint_gob_til_W #3\XINT_addm_az\W \XINT_addm_AB #1{#3#4#5#6}{#2}% }% -\def\xint_addm_az\W\XINT_addm_AB #1#2% +\def\XINT_addm_az\W\XINT_addm_AB #1#2% {% \XINT_addm_AC_checkcarry #1% }% @@ -391,9 +387,9 @@ }% \def\XINT_addm_AC_checkcarry #1% {% - \xint_gob_til_zero #1\xint_addm_AC_nocarry 0\XINT_addm_C + \xint_gob_til_zero #1\XINT_addm_AC_nocarry 0\XINT_addm_C }% -\def\xint_addm_AC_nocarry 0\XINT_addm_C #1#2\W\X\Y\Z +\def\XINT_addm_AC_nocarry 0\XINT_addm_C #1#2\W\X\Y\Z {% \expandafter \xint_cleanupzeros_andstop @@ -408,10 +404,10 @@ \def\XINT_addm_C #1#2#3#4#5% {% \xint_gob_til_W - #5\xint_addm_cw - #4\xint_addm_cx - #3\xint_addm_cy - #2\xint_addm_cz + #5\XINT_addm_cw + #4\XINT_addm_cx + #3\XINT_addm_cy + #2\XINT_addm_cz \W\XINT_addm_CD {#5#4#3#2}{#1}% }% \def\XINT_addm_CD #1% @@ -422,10 +418,10 @@ {% \XINT_addm_AC_checkcarry #2{#3#4}% }% -\def\xint_addm_cw - #1\xint_addm_cx - #2\xint_addm_cy - #3\xint_addm_cz +\def\XINT_addm_cw + #1\XINT_addm_cx + #2\XINT_addm_cy + #3\XINT_addm_cz \W\XINT_addm_CD {% \expandafter\XINT_addm_CDw\the\numexpr 1+#1#2#3.% @@ -434,9 +430,9 @@ {% \XINT_addm_end #1#3% }% -\def\xint_addm_cx - #1\xint_addm_cy - #2\xint_addm_cz +\def\XINT_addm_cx + #1\XINT_addm_cy + #2\XINT_addm_cz \W\XINT_addm_CD {% \expandafter\XINT_addm_CDx\the\numexpr 1+#1#2.% @@ -445,8 +441,8 @@ {% \XINT_addm_end #1#3% }% -\def\xint_addm_cy - #1\xint_addm_cz +\def\XINT_addm_cy + #1\XINT_addm_cz \W\XINT_addm_CD {% \expandafter\XINT_addm_CDy\the\numexpr 1+#1.% @@ -455,7 +451,7 @@ {% \XINT_addm_end #1#3% }% -\def\xint_addm_cz\W\XINT_addm_CD #1#2#3{\XINT_addm_end #1#3}% +\def\XINT_addm_cz\W\XINT_addm_CD #1#2#3{\XINT_addm_end #1#3}% \edef\XINT_addm_end #1#2#3#4#5% {\noexpand\expandafter\space\noexpand\the\numexpr #1#2#3#4#5\relax}% \def\xintRaw {\romannumeral0\xintraw }% @@ -690,38 +686,9 @@ }% \def\XINT_e #1#2#3#4% {% - \expandafter\XINT_e_end\expandafter{\the\numexpr #1+#4}{#2}{#3}% -}% -\def\XINT_e_end #1#2#3{ #2/#3[#1]}% -\def\xintFloatE {\romannumeral0\xintfloate }% -\def\xintfloate #1{\XINT_floate_chkopt #1\xint_relax }% -\def\XINT_floate_chkopt #1% -{% - \ifx [#1\expandafter\XINT_floate_opt - \else\expandafter\XINT_floate_noopt - \fi #1% -}% -\def\XINT_floate_noopt #1\xint_relax -{% - \expandafter\XINT_floate_a\expandafter\XINTdigits - \romannumeral0\XINT_infrac {#1}% -}% -\def\XINT_floate_opt [\xint_relax #1]#2% -{% - \expandafter\XINT_floate_a\expandafter - {\the\numexpr #1\expandafter}\romannumeral0\XINT_infrac {#2}% -}% -\def\XINT_floate_a #1#2#3#4#5% -{% - \expandafter\expandafter\expandafter\XINT_float_a - \expandafter\xint_exchangetwo_keepbraces\expandafter - {\the\numexpr #2+#5}{#1}{#3}{#4}\XINT_float_Q + \expandafter\XINT_e_end\the\numexpr #1+#4.{#2}{#3}% }% -\def\XINTinFloatE {\romannumeral0\XINTinfloate }% -\def\XINTinfloate {\expandafter\XINT_infloate\romannumeral0\XINTinfloat [\XINTdigits]}% -\def\XINT_infloate #1[#2]#3% - {\expandafter\XINT_infloate_end\expandafter {\the\numexpr #3+#2}{#1}}% -\def\XINT_infloate_end #1#2{ #2[#1]}% +\def\XINT_e_end #1.#2#3{ #2/#3[#1]}% \def\xintIrr {\romannumeral0\xintirr }% \def\xintirr #1% {% @@ -767,9 +734,9 @@ }% \def\XINT_irr_loop_e #1#2\Z {% - \xint_gob_til_zero #1\xint_irr_loop_exit0\XINT_irr_loop_a {#1#2}% + \xint_gob_til_zero #1\XINT_irr_loop_exit0\XINT_irr_loop_a {#1#2}% }% -\def\xint_irr_loop_exit0\XINT_irr_loop_a #1#2#3#4% +\def\XINT_irr_loop_exit0\XINT_irr_loop_a #1#2#3#4% {% \expandafter\XINT_irr_loop_exitb\expandafter {\romannumeral0\xintiiquo {#3}{#2}}% @@ -845,9 +812,9 @@ }% \def\XINT_jrr_loop_e #1#2\Z {% - \xint_gob_til_zero #1\xint_jrr_loop_exit0\XINT_jrr_loop_a {#1#2}% + \xint_gob_til_zero #1\XINT_jrr_loop_exit0\XINT_jrr_loop_a {#1#2}% }% -\def\xint_jrr_loop_exit0\XINT_jrr_loop_a #1#2#3#4#5#6% +\def\XINT_jrr_loop_exit0\XINT_jrr_loop_a #1#2#3#4#5#6% {% \XINT_irr_finish {#3}{#4}% }% @@ -864,12 +831,6 @@ \def\XINT_tfrac_zero #1\Z { 0/1[0]}% \def\XINT_tfrac_P #1/#2\Z {\expandafter\XINT_rez_AB \romannumeral0\xintiirem{#1}{#2}\Z {0}{#2}}% -\def\XINTinFloatFracdigits {\romannumeral0\XINTinfloatfracdigits }% -\def\XINTinfloatfracdigits #1% -{% - \expandafter\XINT_infloatfracdg_a\expandafter {\romannumeral0\xinttfrac{#1}}% -}% -\def\XINT_infloatfracdg_a {\XINTinfloat [\XINTdigits]}% \def\xintTrunc {\romannumeral0\xinttrunc }% \def\xintiTrunc {\romannumeral0\xintitrunc }% \def\xinttrunc #1% @@ -916,13 +877,13 @@ \def\XINT_trunc_C #1#2#3% {% \expandafter\XINT_trunc_CE\expandafter - {\romannumeral0\XINT_dsx_zeroloop {-#1}{}\Z {#3}}{#2}% + {\romannumeral0\XINT_dsx_zeroloop -#1.{}\Z {#3}}{#2}% }% \def\XINT_trunc_CE #1#2{\XINT_trunc_E #2.{#1}}% \def\XINT_trunc_D #1#2% {% \expandafter\XINT_trunc_E - \romannumeral0\XINT_dsx_zeroloop {#1}{}\Z {#2}.% + \romannumeral0\XINT_dsx_zeroloop #1.{}\Z {#2}.% }% \def\XINT_trunc_E #1% {% @@ -965,7 +926,7 @@ \def\XINT_trunc_Hb #1#2#3% {% \expandafter #3\expandafter0\expandafter.% - \romannumeral0\XINT_dsx_zeroloop {#1}{}\Z {}#2% #1=-0 autoris\'e ! + \romannumeral0\XINT_dsx_zeroloop #1.{}\Z {}#2% #1=-0 autoris\'e ! }% \def\xintTTrunc {\romannumeral0\xintttrunc }% \def\xintttrunc #1% @@ -1075,8 +1036,8 @@ }% \def\XINT_xtrunc_zero .#1#2#3#4#5% {% - 0.\romannumeral0\expandafter\XINT_dsx_zeroloop\expandafter - {\the\numexpr #5}{}\Z {}% + 0.\romannumeral0\expandafter\XINT_dsx_zeroloop + \the\numexpr #5.{}\Z {}% \xintiloop [#4+-1] \ifnum \xintiloopindex>\xint_c_ 0000000000000000000000000000000000000000000000000000000000000000% @@ -1136,12 +1097,12 @@ \def\XINT_xtrunc_negNDa #1#2% {% \expandafter\XINT_xtrunc_negNDb% - \romannumeral0\XINT_split_fromleft_loop {#1}{}#2\W\W\W\W\W\W\W\W\Z + \romannumeral0\XINT_split_fromleft_loop #1.{}#2\W\W\W\W\W\W\W\W\Z }% -\def\XINT_xtrunc_negNDb #1#2{#1.#2}% +\def\XINT_xtrunc_negNDb #1.#2.{#1.#2}% \def\XINT_xtrunc_negNE #1#2% {% - 0.\romannumeral0\XINT_dsx_zeroloop {-#1}{}\Z {}#2% + 0.\romannumeral0\XINT_dsx_zeroloop -#1.{}\Z {}#2% }% \def\XINT_xtrunc_negNW #1#2#3#4#5#6% {% @@ -1153,11 +1114,10 @@ \expandafter\XINT_xtrunc_negNC\expandafter {\the\numexpr\xintLength {#1}-#2}{#1}% }% -%%%%%%%%%%%% \def\XINT_xtrunc_BisOne #1#2#3#4#5#6#7% {% - #5.\romannumeral0\expandafter\XINT_dsx_zeroloop\expandafter - {\the\numexpr #7}{}\Z {}% + #5.\romannumeral0\expandafter\XINT_dsx_zeroloop + \the\numexpr #7.{}\Z {}% \xintiloop [#6+-1] \ifnum \xintiloopindex>\xint_c_ 0000000000000000000000000000000000000000000000000000000000000000% @@ -1166,18 +1126,17 @@ \def\XINT_xtrunc_BisTwo #1#2#3#4#5#6#7% {% \xintHalf {#5}.\ifodd\xintiiLDg{#5} 5\else 0\fi - \romannumeral0\expandafter\XINT_dsx_zeroloop\expandafter - {\the\numexpr #7-\xint_c_i}{}\Z {}% + \romannumeral0\expandafter\XINT_dsx_zeroloop + \the\numexpr #7-\xint_c_i.{}\Z {}% \xintiloop [#6+-1] \ifnum \xintiloopindex>\xint_c_ 0000000000000000000000000000000000000000000000000000000000000000% \repeat }% -%%%%%%%%%%%% \def\XINT_xtrunc_Q #1% {% \expandafter\XINT_xtrunc_prepare - \romannumeral0\XINT_dsx_zeroloop {#1}{}\Z + \romannumeral0\XINT_dsx_zeroloop #1.{}\Z }% \def\XINT_xtrunc_prepare #1.#2#3% {% @@ -1185,7 +1144,6 @@ {\romannumeral0% \XINT_xtrunc_prepare_a #2\R\R\R\R\R\R\R\R {10}0000001\W !{#2}}{#1}% }% -%%%%%%%%%%%% \def\XINT_xtrunc_prepare_a #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_R #9\XINT_xtrunc_prepare_small\R @@ -1205,7 +1163,6 @@ \the\numexpr #1/\xint_c_ii\expandafter .\the\numexpr \xint_c_x^viii+#1!% }% -%%%%%%%%%%%% \def\XINT_xtrunc_small_a #1.#2!#3% {% \expandafter\XINT_div_small_b\the\numexpr #1\expandafter @@ -1213,7 +1170,6 @@ \romannumeral0\XINT_div_small_ba #3\R\R\R\R\R\R\R\R{10}0000001\W #3\XINT_sepbyviii_Z_end 2345678\relax }% -%%%%%%%%%%%% \def\XINT_xtrunc_prepare_b {\expandafter\XINT_xtrunc_prepare_c\romannumeral0\XINT_zeroes_forviii }% \def\XINT_xtrunc_prepare_c #1!% @@ -1242,7 +1198,6 @@ \R.\xint_c_ii\R.\xint_c_i\R.\xint_c_\W \X }% -%%%%%%%%%%%% \def\XINT_xtrunc_Pa #1#2% {% \expandafter\XINT_xtrunc_Pb\romannumeral0#1{#2}{#1}% @@ -1261,8 +1216,8 @@ }% \def\XINT_xtrunc_D #1#2#3% {% - \romannumeral0\expandafter\XINT_dsx_zeroloop\expandafter - {\the\numexpr \xint_c_ii^vi-\xintLength{#1}}{}\Z {}#1% + \romannumeral0\expandafter\XINT_dsx_zeroloop + \the\numexpr \xint_c_ii^vi-\xintLength{#1}.{}\Z {}#1% \XINT_xtrunc_A {#3}{#2}% }% \def\XINT_xtrunc_transition\fi @@ -1271,7 +1226,7 @@ \fi \ifnum #4=\xint_c_ \XINT_xtrunc_abort\fi \expandafter\XINT_xtrunc_x\expandafter - {\romannumeral0\XINT_dsx_zeroloop {#4}{}\Z {#2}}{#3}{#4}% + {\romannumeral0\XINT_dsx_zeroloop #4.{}\Z {#2}}{#3}{#4}% }% \def\XINT_xtrunc_x #1#2% {% @@ -1279,330 +1234,17 @@ }% \def\XINT_xtrunc_y #1#2#3% {% - \romannumeral0\expandafter\XINT_dsx_zeroloop\expandafter - {\the\numexpr #3-\xintLength{#1}}{}\Z {}#1% + \romannumeral0\expandafter\XINT_dsx_zeroloop + \the\numexpr #3-\xintLength{#1}.{}\Z {}#1% }% \def\XINT_xtrunc_abort\fi\expandafter\XINT_xtrunc_x\expandafter #1#2#3{\fi}% \mathchardef\XINTdigits 16 \def\xintDigits #1#2% {\afterassignment \xint_gobble_i \mathchardef\XINTdigits=}% \def\xinttheDigits {\number\XINTdigits }% -\def\xintFloat {\romannumeral0\xintfloat }% -\def\xintfloat #1{\XINT_float_chkopt #1\xint_relax }% -\def\XINT_float_chkopt #1% -{% - \ifx [#1\expandafter\XINT_float_opt - \else\expandafter\XINT_float_noopt - \fi #1% -}% -\def\XINT_float_noopt #1\xint_relax -{% - \expandafter\XINT_float_a\expandafter\XINTdigits - \romannumeral0\XINT_infrac {#1}\XINT_float_Q -}% -\def\XINT_float_opt [\xint_relax #1]#2% -{% - \expandafter\XINT_float_a\expandafter - {\the\numexpr #1\expandafter}% - \romannumeral0\XINT_infrac {#2}\XINT_float_Q -}% -\def\XINT_float_a #1#2#3% #1=P, #2=n, #3=A, #4=B -{% - \XINT_float_fork #3\Z {#1}{#2}% #1 = precision, #2=n -}% -\def\XINT_float_fork #1% -{% - \xint_UDzerominusfork - #1-\XINT_float_zero - 0#1\XINT_float_J - 0-{\XINT_float_K #1}% - \krof -}% -\def\XINT_float_zero #1\Z #2#3#4#5{ 0.e0}% -\def\XINT_float_J {\expandafter\xint_minus_thenstop\romannumeral0\XINT_float_K }% -\def\XINT_float_K #1\Z #2% #1=A, #2=P, #3=n, #4=B -{% - \expandafter\XINT_float_L\expandafter - {\the\numexpr\xintLength{#1}\expandafter}\expandafter - {\the\numexpr #2+\xint_c_ii}{#1}{#2}% -}% -\def\XINT_float_L #1#2% -{% - \ifnum #1>#2 - \expandafter\XINT_float_Ma - \else - \expandafter\XINT_float_Mc - \fi {#1}{#2}% -}% -\def\XINT_float_Ma #1#2#3% -{% - \expandafter\XINT_float_Mb\expandafter - {\the\numexpr #1-#2\expandafter\expandafter\expandafter}% - \expandafter\expandafter\expandafter - {\expandafter\xint_firstoftwo - \romannumeral0\XINT_split_fromleft_loop {#2}{}#3\W\W\W\W\W\W\W\W\Z - }{#2}% -}% -\def\XINT_float_Mb #1#2#3#4#5#6% #2=A', #3=P+2, #4=P, #5=n, #6=B -{% - \expandafter\XINT_float_N\expandafter - {\the\numexpr\xintLength{#6}\expandafter}\expandafter - {\the\numexpr #3\expandafter}\expandafter - {\the\numexpr #1+#5}% - {#6}{#3}{#2}{#4}% -}% long de B, P+2, n', B, |A'|=P+2, A', P -\def\XINT_float_Mc #1#2#3#4#5#6% -{% - \expandafter\XINT_float_N\expandafter - {\romannumeral0\xintlength{#6}}{#2}{#5}{#6}{#1}{#3}{#4}% -}% long de B, P+2, n, B, |A|, A, P -\def\XINT_float_N #1#2% -{% - \ifnum #1>#2 - \expandafter\XINT_float_O - \else - \expandafter\XINT_float_P - \fi {#1}{#2}% -}% -\def\XINT_float_O #1#2#3#4% -{% - \expandafter\XINT_float_P\expandafter - {\the\numexpr #2\expandafter}\expandafter - {\the\numexpr #2\expandafter}\expandafter - {\the\numexpr #3-#1+#2\expandafter\expandafter\expandafter}% - \expandafter\expandafter\expandafter - {\expandafter\xint_firstoftwo - \romannumeral0\XINT_split_fromleft_loop {#2}{}#4\W\W\W\W\W\W\W\W\Z - }% -}% |B|,P+2,n,B,|A|,A,P -\def\XINT_float_P #1#2#3#4#5#6#7#8% -{% - \expandafter #8\expandafter {\the\numexpr #1-#5+#2-\xint_c_i}% - {#6}{#4}{#7}{#3}% -}% |B|-|A|+P+1,A,B,P,n -\def\XINT_float_Q #1% -{% - \ifnum #1<\xint_c_ - \expandafter\XINT_float_Ri - \else - \expandafter\XINT_float_Rii - \fi {#1}% -}% -\def\XINT_float_Ri #1#2#3% -{% - \expandafter\XINT_float_Sa - \romannumeral0\xintiiquo {#2}% - {\XINT_dsx_addzerosnofuss {-#1}{#3}}\Z {#1}% -}% -\def\XINT_float_Rii #1#2#3% -{% - \expandafter\XINT_float_Sa - \romannumeral0\xintiiquo - {\XINT_dsx_addzerosnofuss {#1}{#2}}{#3}\Z {#1}% -}% -\def\XINT_float_Sa #1% -{% - \if #19% - \xint_afterfi {\XINT_float_Sb\XINT_float_Wb }% - \else - \xint_afterfi {\XINT_float_Sb\XINT_float_Wa }% - \fi #1% -}% -\def\XINT_float_Sb #1#2\Z #3#4% -{% - \expandafter\XINT_float_T\expandafter - {\the\numexpr #4+\xint_c_i\expandafter}% - \romannumeral`&&@\XINT_lenrord_loop 0{}#2\Z\W\W\W\W\W\W\W\Z #1{#3}{#4}% -}% -\def\XINT_float_T #1#2#3% -{% - \ifnum #2>#1 - \xint_afterfi{\XINT_float_U\XINT_float_Xb}% - \else - \xint_afterfi{\XINT_float_U\XINT_float_Xa #3}% - \fi -}% -\def\XINT_float_U #1#2% -{% - \ifnum #2<\xint_c_v - \expandafter\XINT_float_Va - \else - \expandafter\XINT_float_Vb - \fi #1% -}% -\def\XINT_float_Va #1#2\Z #3% -{% - \expandafter#1% - \romannumeral0\expandafter\XINT_float_Wa - \romannumeral0\XINT_rord_main {}#2% - \xint_relax - \xint_bye\xint_bye\xint_bye\xint_bye - \xint_bye\xint_bye\xint_bye\xint_bye - \xint_relax \Z -}% -\def\XINT_float_Vb #1#2\Z #3% -{% - \expandafter #1% - \romannumeral0\expandafter #3% - \romannumeral0\XINT_addm_A 0{}1000\W\X\Y\Z #2000\W\X\Y\Z \Z -}% -\def\XINT_float_Wa #1{ #1.}% -\def\XINT_float_Wb #1#2% - {\if #11\xint_afterfi{ 10.}\else\xint_afterfi{ #1.#2}\fi }% -\def\XINT_float_Xa #1\Z #2#3#4% -{% - \expandafter\XINT_float_Y\expandafter - {\the\numexpr #3+#4-#2}{#1}% -}% -\def\XINT_float_Xb #1\Z #2#3#4% -{% - \expandafter\XINT_float_Y\expandafter - {\the\numexpr #3+#4+\xint_c_i-#2}{#1}% -}% -\def\XINT_float_Y #1#2{ #2e#1}% -\def\xintPFloat {\romannumeral0\xintpfloat }% -\def\xintpfloat #1{\XINT_pfloat_chkopt #1\xint_relax }% -\def\XINT_pfloat_chkopt #1% -{% - \ifx [#1\expandafter\XINT_pfloat_opt - \else\expandafter\XINT_pfloat_noopt - \fi #1% -}% -\def\XINT_pfloat_noopt #1\xint_relax -{% - \expandafter\XINT_pfloat_a\expandafter\XINTdigits - \romannumeral0\XINTinfloat [\XINTdigits]{#1}% -}% -\def\XINT_pfloat_opt [\xint_relax #1]%#2% -{% - \expandafter\XINT_pfloat_a\expandafter {\the\numexpr #1\expandafter}% - \romannumeral0\XINTinfloat [\numexpr #1\relax]%{#2}% -}% -\def\XINT_pfloat_a #1#2% -{% - \xint_UDzerominusfork - #2-\XINT_pfloat_zero - 0#2\XINT_pfloat_neg - 0-{\XINT_pfloat_pos #2}% - \krof {#1}% -}% -\def\XINT_pfloat_zero #1[#2]{ 0}% -\def\XINT_pfloat_neg - {\expandafter\xint_minus_thenstop\romannumeral0\XINT_pfloat_pos {}}% -\def\XINT_pfloat_pos #1#2#3[#4]% -{% - \ifnum#4>0 \xint_dothis\XINT_pfloat_no\fi - \ifnum#4>\numexpr-#2\relax \xint_dothis\XINT_pfloat_b\fi - \ifnum#4>\numexpr-#2-\xint_c_v\relax \xint_dothis\XINT_pfloat_B\fi - \xint_orthat\XINT_pfloat_no {#2}{#4}{#1#3}% -}% -\def\XINT_pfloat_no #1#2% -{% - \expandafter\XINT_pfloat_no_b\expandafter{\the\numexpr #2+#1-\xint_c_i\relax}% -}% -\def\XINT_pfloat_no_b #1#2{\XINT_pfloat_no_c #2e#1}% -\def\XINT_pfloat_no_c #1{ #1.}% -\def\XINT_pfloat_b #1#2#3% - {\expandafter\XINT_pfloat_c - \romannumeral0\expandafter\XINT_split_fromleft_loop - \expandafter {\the\numexpr #1+#2-\xint_c_i}#3\W\W\W\W\W\W\W\W\Z }% -\def\XINT_pfloat_c #1#2{ #1.#2}% #2 peut \^etre vide -\def\XINT_pfloat_B #1#2#3% - {\expandafter\XINT_pfloat_C - \romannumeral0\XINT_dsx_zeroloop {\numexpr -#1-#2}{}\Z {}#3}% -\def\XINT_pfloat_C { 0.}% -\def\XINTinFloat {\romannumeral0\XINTinfloat }% -\def\XINTinfloat [#1]#2% -{% - \expandafter\XINT_infloat_a\expandafter - {\the\numexpr #1\expandafter}% - \romannumeral0\XINT_infrac {#2}\XINT_infloat_Q -}% -\def\XINT_infloat_a #1#2#3% #1=P, #2=n, #3=A, #4=B -{% - \XINT_infloat_fork #3\Z {#1}{#2}% #1 = precision, #2=n -}% -\def\XINT_infloat_fork #1% -{% - \xint_UDzerominusfork - #1-\XINT_infloat_zero - 0#1\XINT_infloat_J - 0-{\XINT_float_K #1}% - \krof -}% -\def\XINT_infloat_zero #1\Z #2#3#4#5{ 0[0]}% -\def\XINT_infloat_J {\expandafter-\romannumeral0\XINT_float_K }% -\def\XINT_infloat_Q #1% -{% - \ifnum #1<\xint_c_ - \expandafter\XINT_infloat_Ri - \else - \expandafter\XINT_infloat_Rii - \fi {#1}% -}% -\def\XINT_infloat_Ri #1#2#3% -{% - \expandafter\XINT_infloat_S\expandafter - {\romannumeral0\xintiiquo {#2}% - {\XINT_dsx_addzerosnofuss {-#1}{#3}}}{#1}% -}% -\def\XINT_infloat_Rii #1#2#3% -{% - \expandafter\XINT_infloat_S\expandafter - {\romannumeral0\xintiiquo - {\XINT_dsx_addzerosnofuss {#1}{#2}}{#3}}{#1}% -}% -\def\XINT_infloat_S #1#2#3% -{% - \expandafter\XINT_infloat_T\expandafter - {\the\numexpr #3+\xint_c_i\expandafter}% - \romannumeral`&&@\XINT_lenrord_loop 0{}#1\Z\W\W\W\W\W\W\W\Z - {#2}% -}% -\def\XINT_infloat_T #1#2#3% -{% - \ifnum #2>#1 - \xint_afterfi{\XINT_infloat_U\XINT_infloat_Wb}% - \else - \xint_afterfi{\XINT_infloat_U\XINT_infloat_Wa #3}% - \fi -}% -\def\XINT_infloat_U #1#2% -{% - \ifnum #2<\xint_c_v - \expandafter\XINT_infloat_Va - \else - \expandafter\XINT_infloat_Vb - \fi #1% -}% -\def\XINT_infloat_Va #1#2\Z -{% - \expandafter#1% - \romannumeral0\XINT_rord_main {}#2% - \xint_relax - \xint_bye\xint_bye\xint_bye\xint_bye - \xint_bye\xint_bye\xint_bye\xint_bye - \xint_relax \Z -}% -\def\XINT_infloat_Vb #1#2\Z -{% - \expandafter #1% - \romannumeral0\XINT_addm_A 0{}1000\W\X\Y\Z #2000\W\X\Y\Z \Z -}% -\def\XINT_infloat_Wa #1\Z #2#3% -{% - \expandafter\XINT_infloat_X\expandafter - {\the\numexpr #3+\xint_c_i-#2}{#1}% -}% -\def\XINT_infloat_Wb #1\Z #2#3% -{% - \expandafter\XINT_infloat_X\expandafter - {\the\numexpr #3+\xint_c_ii-#2}{#1}% -}% -\def\XINT_infloat_X #1#2{ #2[#1]}% \def\xintAdd {\romannumeral0\xintadd }% -\def\xintadd #1{\expandafter\xint_fadd\romannumeral0\xintraw {#1}}% -\def\xint_fadd #1{\xint_gob_til_zero #1\XINT_fadd_Azero 0\XINT_fadd_a #1}% +\def\xintadd #1{\expandafter\XINT_fadd\romannumeral0\xintraw {#1}}% +\def\XINT_fadd #1{\xint_gob_til_zero #1\XINT_fadd_Azero 0\XINT_fadd_a #1}% \def\XINT_fadd_Azero #1]{\xintraw }% \def\XINT_fadd_a #1/#2[#3]#4% {\expandafter\XINT_fadd_b\romannumeral0\xintraw {#4}{#3}{#1}{#2}}% @@ -1626,13 +1268,13 @@ \def\XINT_fadd_Ba #1#2#3#4#5#6#7% {% \expandafter\XINT_fadd_C\expandafter - {\romannumeral0\XINT_dsx_zeroloop {#1}{}\Z {#6}}% + {\romannumeral0\XINT_dsx_zeroloop #1.{}\Z {#6}}% {#7}{#5}{#4}[#2]% }% \def\XINT_fadd_Bb #1#2#3#4#5#6#7% {% \expandafter\XINT_fadd_C\expandafter - {\romannumeral0\XINT_dsx_zeroloop {-#1}{}\Z {#4}}% + {\romannumeral0\XINT_dsx_zeroloop -#1.{}\Z {#4}}% {#5}{#7}{#6}[#3]% }% \def\XINT_fadd_C #1#2#3% @@ -1693,8 +1335,8 @@ \def\XINT_fadd_N #1#2{ #2/#1}% \edef\XINT_fadd_iszero\fi #1[#2]{\noexpand\fi\space 0/1[0]}% ou [#2] originel? \def\xintSub {\romannumeral0\xintsub }% -\def\xintsub #1{\expandafter\xint_fsub\romannumeral0\xintraw {#1}}% -\def\xint_fsub #1{\xint_gob_til_zero #1\XINT_fsub_Azero 0\XINT_fsub_a #1}% +\def\xintsub #1{\expandafter\XINT_fsub\romannumeral0\xintraw {#1}}% +\def\XINT_fsub #1{\xint_gob_til_zero #1\XINT_fsub_Azero 0\XINT_fsub_a #1}% \def\XINT_fsub_Azero #1]{\xintopp }% \def\XINT_fsub_a #1/#2[#3]#4% {\expandafter\XINT_fsub_b\romannumeral0\xintraw {#4}{#3}{#1}{#2}}% @@ -1723,8 +1365,8 @@ }% \def\XINT_fsum_finished #1\Z #2{ #2}% \def\xintMul {\romannumeral0\xintmul }% -\def\xintmul #1{\expandafter\xint_fmul\romannumeral0\xintraw {#1}.}% -\def\xint_fmul #1{\xint_gob_til_zero #1\XINT_fmul_zero 0\XINT_fmul_a #1}% +\def\xintmul #1{\expandafter\XINT_fmul\romannumeral0\xintraw {#1}.}% +\def\XINT_fmul #1{\xint_gob_til_zero #1\XINT_fmul_zero 0\XINT_fmul_a #1}% \def\XINT_fmul_a #1[#2].#3% {\expandafter\XINT_fmul_b\romannumeral0\xintraw {#3}#1[#2.]}% \def\XINT_fmul_b #1{\xint_gob_til_zero #1\XINT_fmul_zero 0\XINT_fmul_c #1}% @@ -1742,9 +1384,9 @@ \def\XINT_fmul_e #1#2{\XINT_outfrac {#2}{#1}}% \def\XINT_fmul_zero #1.#2{ 0/1[0]}% \def\xintSqr {\romannumeral0\xintsqr }% -\def\xintsqr #1{\expandafter\xint_fsqr\romannumeral0\xintraw {#1}}% -\def\xint_fsqr #1{\xint_gob_til_zero #1\XINT_fsqr_zero 0\XINT_fsqr_a #1}% -\def\xint_fsqr_a #1/#2[#3]% +\def\xintsqr #1{\expandafter\XINT_fsqr\romannumeral0\xintraw {#1}}% +\def\XINT_fsqr #1{\xint_gob_til_zero #1\XINT_fsqr_zero 0\XINT_fsqr_a #1}% +\def\XINT_fsqr_a #1/#2[#3]% {% \expandafter\XINT_fsqr_b \expandafter{\the\numexpr #3+#3\expandafter}% @@ -1753,12 +1395,16 @@ }% \def\XINT_fsqr_b #1#2#3{\expandafter \XINT_fmul_e \expandafter{#3}{#1}{#2}}% \def\XINT_fsqr_zero #1]{ 0/1[0]}% +\def\xintipow #1#2% +{% + \expandafter\xint_pow\the\numexpr \xintNum{#2}\expandafter.\romannumeral0\xintnum{#1}\Z% +}% \def\xintPow {\romannumeral0\xintpow }% \def\xintpow #1% {% - \expandafter\xint_fpow\expandafter {\romannumeral0\XINT_infrac {#1}}% + \expandafter\XINT_fpow\expandafter {\romannumeral0\XINT_infrac {#1}}% }% -\def\xint_fpow #1#2% +\def\XINT_fpow #1#2% {% \expandafter\XINT_fpow_fork\the\numexpr \xintNum{#2}\relax\Z #1% }% @@ -1791,10 +1437,16 @@ \expandafter\XINT_fpow_pos_B\expandafter {#3}{#1}{#2}% }% \def\XINT_fpow_pos_B #1#2{\XINT_outfrac {#2}{#1}}% -\def\xintFac {\romannumeral0\xintfac }% -\def\xintfac #1% +\def\xintifac #1{\expandafter\XINT_fac_fork\the\numexpr \xintNum{#1}.}% +\def\xintibinomial #1#2% +{% + \expandafter\XINT_binom_pre + \the\numexpr\xintNum{#1}\expandafter.\the\numexpr\xintNum{#2}.% +}% +\def\xintipfactorial #1#2% {% - \expandafter\XINT_fac_fork\expandafter{\the\numexpr \xintNum{#1}}% + \expandafter\XINT_pfac_fork + \the\numexpr\xintNum{#1}\expandafter.\the\numexpr\xintNum{#2}.% }% \def\xintPrd {\romannumeral0\xintprd }% \def\xintprd #1{\xintprdexpr #1\relax }% @@ -1818,9 +1470,9 @@ \def\xintDiv {\romannumeral0\xintdiv }% \def\xintdiv #1% {% - \expandafter\xint_fdiv\expandafter {\romannumeral0\XINT_infrac {#1}}% + \expandafter\XINT_fdiv\expandafter {\romannumeral0\XINT_infrac {#1}}% }% -\def\xint_fdiv #1#2% +\def\XINT_fdiv #1#2% {\expandafter\XINT_fdiv_A\romannumeral0\XINT_infrac {#2}#1}% \def\XINT_fdiv_A #1#2#3#4#5#6% {% @@ -1877,12 +1529,6 @@ {\xintiiE{\xintiiMul {#2}{#6}}{#4-#7}}% t fois n }% \def\XINT_mod_pos_a #1.#2#3#4{\xintiirem {#3}{#4}/#2[#1]}% -\def\XINTinFloatMod {\romannumeral0\XINTinfloatmod [\XINTdigits]}% -\def\XINTinfloatmod [#1]#2#3{\expandafter\XINT_infloatmod\expandafter - {\romannumeral0\XINTinfloat[#1]{#2}}% - {\romannumeral0\XINTinfloat[#1]{#3}}{#1}}% -\def\XINT_infloatmod #1#2{\expandafter\XINT_infloatmod_a\expandafter {#2}{#1}}% -\def\XINT_infloatmod_a #1#2#3{\XINTinfloat [#3]{\xintMod {#2}{#1}}}% \def\xintIsOne {\romannumeral0\xintisone }% \def\xintisone #1{\expandafter\XINT_fracisone \romannumeral0\xintrawwithzeros{#1}\Z }% @@ -1891,9 +1537,9 @@ \def\xintGeq {\romannumeral0\xintgeq }% \def\xintgeq #1% {% - \expandafter\xint_fgeq\expandafter {\romannumeral0\xintabs {#1}}% + \expandafter\XINT_fgeq\expandafter {\romannumeral0\xintabs {#1}}% }% -\def\xint_fgeq #1#2% +\def\XINT_fgeq #1#2% {% \expandafter\XINT_fgeq_A \romannumeral0\xintabs {#2}#1% }% @@ -1944,9 +1590,9 @@ \def\xintMax {\romannumeral0\xintmax }% \def\xintmax #1% {% - \expandafter\xint_fmax\expandafter {\romannumeral0\xintraw {#1}}% + \expandafter\XINT_fmax\expandafter {\romannumeral0\xintraw {#1}}% }% -\def\xint_fmax #1#2% +\def\XINT_fmax #1#2% {% \expandafter\XINT_fmax_A\romannumeral0\xintraw {#2}#1% }% @@ -1988,9 +1634,9 @@ \def\xintMin {\romannumeral0\xintmin }% \def\xintmin #1% {% - \expandafter\xint_fmin\expandafter {\romannumeral0\xintraw {#1}}% + \expandafter\XINT_fmin\expandafter {\romannumeral0\xintraw {#1}}% }% -\def\xint_fmin #1#2% +\def\XINT_fmin #1#2% {% \expandafter\XINT_fmin_A\romannumeral0\xintraw {#2}#1% }% @@ -2031,9 +1677,9 @@ \def\XINT_minof_e #1\Z #2\Z { #2}% \def\xintcmp #1% {% - \expandafter\xint_fcmp\expandafter {\romannumeral0\xintraw {#1}}% + \expandafter\XINT_fcmp\expandafter {\romannumeral0\xintraw {#1}}% }% -\def\xint_fcmp #1#2% +\def\XINT_fcmp #1#2% {% \expandafter\XINT_fcmp_A\romannumeral0\xintraw {#2}#1% }% @@ -2109,6 +1755,422 @@ \def\xintopp #1{\expandafter\XINT_opp\romannumeral0\xintraw {#1}}% \def\xintSgn {\romannumeral0\xintsgn }% \def\xintsgn #1{\expandafter\XINT_sgn\romannumeral0\xintraw {#1}\Z }% +\def\xintFloat {\romannumeral0\xintfloat }% +\def\xintfloat #1{\XINT_float_chkopt #1\xint_relax }% +\def\XINT_float_chkopt #1% +{% + \ifx [#1\expandafter\XINT_float_opt + \else\expandafter\XINT_float_noopt + \fi #1% +}% +\def\XINT_float_noopt #1\xint_relax +{% + \expandafter\XINT_float_a\expandafter\XINTdigits\expandafter.% + \romannumeral0\XINT_infrac {#1}\XINT_float_Q +}% +\def\XINT_float_opt [\xint_relax #1]#2% +{% + \expandafter\XINT_float_a\the\numexpr #1\expandafter.% + \romannumeral0\XINT_infrac {#2}\XINT_float_Q +}% +\def\XINT_float_a #1.#2#3% #1=P, #2=n, #3=A, #4=B +{% + \XINT_float_fork #3\Z {#1}{#2}% #1 = precision, #2=n +}% +\def\XINT_float_fork #1% +{% + \xint_UDzerominusfork + #1-\XINT_float_zero + 0#1\XINT_float_J + 0-{\XINT_float_K #1}% + \krof +}% +\def\XINT_float_zero #1\Z #2#3#4#5{ 0.e0}% +\def\XINT_float_J {\expandafter\xint_minus_thenstop\romannumeral0\XINT_float_K }% +\def\XINT_float_K #1\Z #2% #1=A, #2=P, #3=n, #4=B +{% + \expandafter\XINT_float_L + \the\numexpr\xintLength{#1}\expandafter.\the\numexpr #2+\xint_c_ii.{#1}{#2}% +}% +\def\XINT_float_L #1.#2.% +{% + \ifnum #1>#2 + \expandafter\XINT_float_Ma + \else + \expandafter\XINT_float_Mb + \fi #1.#2.% +}% +\def\XINT_float_Ma #1.#2.#3% +{% + \expandafter\XINT_float_MatoN + \the\numexpr #1-#2\expandafter.% + \romannumeral0\XINT_split_fromleft_loop #2.{}#3\W\W\W\W\W\W\W\W\Z + {#2}% +}% +\def\XINT_float_MatoN #1.#2.#3.#4#5#6#7% +{% + \expandafter\XINT_float_N + \the\numexpr\xintLength{#7}\expandafter.\the\numexpr #1+#6.#4.% + {#7}{#4}{#2}{#5}% +}% +\def\XINT_float_Mb #1.#2.#3#4#5#6% +{% + \expandafter\XINT_float_N + \romannumeral0\xintlength{#6}.#5.#2.{#6}{#1}{#3}{#4}% +}% +\def\XINT_float_N #1.#2.#3.% +{% + \ifnum #1>#3 \xint_dothis\XINT_float_N_Blong\fi + \ifnum #1=\xint_c_i\xint_dothis\XINT_float_N_Bshort\fi + \xint_orthat{\XINT_float_P 0.}% + #1.#2.#3.% +}% +\def\XINT_float_N_Blong #1.#2.#3.#4% +{% + \expandafter\XINT_float_NaP + \the\numexpr #2-#1+#3\expandafter.% + \romannumeral0\XINT_split_fromleft_loop #3.{}#4\W\W\W\W\W\W\W\W\Z {#3}% +}% +\def\XINT_float_NaP #1.#2.#3.#4{\XINT_float_P 0.#4.#1.#4.{#2}}% +\def\XINT_float_N_Bshort 1.#1.#2.#3% +{% + \ifnum #3=\xint_c_i \xint_dothis{\XINT_float_P 1.}\fi + \xint_orthat{\XINT_float_P 0.}1.#1.#2.#3% +}% +\def\XINT_float_P #1.#2.#3.#4.#5#6#7#8#9% +{% + \expandafter #9\expandafter#1% + \the\numexpr #2-#6+#4-\xint_c_i.{#7}{#5}{#8}{#3}% +}% +\def\XINT_float_Q #1% +{% + \if 1#1\expandafter\XINT_float_Ri\else\expandafter\XINT_float_Rii\fi +}% +\def\XINT_float_Ri #1.#2#3% +{% + \expandafter\XINT_float_Sa + \romannumeral0\XINT_dsx_addzerosnofuss {#1}{#2}\Z {#1}% +}% +\def\XINT_float_Rii #1.#2#3% +{% + \expandafter\XINT_float_Sa + \romannumeral0\xintiiquo{\XINT_dsx_addzerosnofuss {#1}{#2}}{#3}\Z {#1}% +}% +\def\XINT_float_Sa #1% +{% + \if #19\xint_dothis {\XINT_float_Sb\XINT_float_Wb }\fi + \xint_orthat {\XINT_float_Sb\XINT_float_Wa }#1% +}% +\def\XINT_float_Sb #1#2\Z #3#4% +{% + \expandafter\XINT_float_T + \the\numexpr #4+\xint_c_i\expandafter.% + \romannumeral`&&@\XINT_lenrord_loop 0.{}#2\Z\W\W\W\W\W\W\W\Z #1{#3}{#4}% +}% +\def\XINT_float_T #1.#2.#3% +{% + \ifnum #2>#1 \xint_dothis{\XINT_float_U\XINT_float_Xb}\fi + \xint_orthat{\XINT_float_U\XINT_float_Xa #3}% +}% +\def\XINT_float_U #1#2% +{% + \ifnum #2<\xint_c_v + \expandafter\XINT_float_Va + \else + \expandafter\XINT_float_Vb + \fi #1% +}% +\def\XINT_float_Va #1#2\Z #3% +{% + \expandafter#1% + \romannumeral0\expandafter\XINT_float_Wa + \romannumeral0\XINT_rord_main {}#2% + \xint_relax + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_relax \Z +}% +\def\XINT_float_Vb #1#2\Z #3% +{% + \expandafter #1% + \romannumeral0\expandafter #3% + \romannumeral0\XINT_addm_A 0{}1000\W\X\Y\Z #2000\W\X\Y\Z \Z +}% +\def\XINT_float_Wa #1{ #1.}% +\def\XINT_float_Wb #1#2{\if #11\xint_dothis{ 10.}\fi\xint_orthat{ #1.#2}}% +\def\XINT_float_Xa #1\Z #2#3#4% +{% + \expandafter\XINT_float_Y\the\numexpr #3+#4-#2.{#1}% +}% +\def\XINT_float_Xb #1\Z #2#3#4% +{% + \expandafter\XINT_float_Y\the\numexpr #3+#4+\xint_c_i-#2.{#1}% +}% +\def\XINT_float_Y #1.#2{ #2e#1}% +\def\XINTinFloat {\romannumeral0\XINTinfloat }% +\def\XINTinfloat [#1]#2% +{% + \expandafter\XINT_infloat\the\numexpr #1\expandafter.% + \romannumeral0\expandafter\XINT_infloat_in + \romannumeral`&&@#2/\XINT_W[\XINT_W\XINT_T\XINT_infloat_Q +}% +\def\XINT_infloat #1.#2{#2#1.}% +\def\XINT_infloat_in #1[#2% +{% + \xint_UDXINTWfork + #2\XINT_infloat_gen + \XINT_W\XINT_infloat_res_a + \krof + #1[#2% +}% +\edef\XINT_infloat_gen {\noexpand\expandafter\space\noexpand\expandafter + \noexpand\XINT_infloat_a + \noexpand\romannumeral0\noexpand\XINT_frac_gen }% +\def\XINT_infloat_res_a #1% +{% + \xint_gob_til_zero #1\XINT_infloat_res_zero 0\XINT_infloat_res_b #1% +}% +\def\XINT_infloat_res_zero #1\XINT_infloat_Q { \XINT_infloat_sp_zero}% +\def\XINT_infloat_sp_zero #1.{ 0[0]}% +\def\XINT_infloat_res_b #1/#2% +{% + \xint_UDXINTWfork + #2\XINT_infloat_res_ca + \XINT_W\XINT_infloat_res_cb + \krof + #1/#2% +}% +\def\XINT_infloat_res_ca #1[#2]/\XINT_W[\XINT_W\XINT_T\XINT_infloat_Q + { \XINT_infloat_sp #1.#2.}% +\def\XINT_infloat_res_cb #1/#2[% + {\expandafter\XINT_infloat_res_cc\romannumeral`&&@#2~#1[}% +\edef\XINT_infloat_res_cc #1~#2[#3]/\XINT_W[\XINT_W\XINT_T + {\noexpand\expandafter\space\noexpand\expandafter + \noexpand\XINT_infloat_a\noexpand\expandafter + {\noexpand\the\numexpr #3}{#2}{#1}}% +\def\XINT_infloat_sp #1.#2% +{% + \if-#2\xint_dothis{\expandafter-\romannumeral0\XINT_infloat_sp_a {}}\fi + \xint_orthat{\XINT_infloat_sp_a #2}#1.% +}% +\def\XINT_infloat_sp_a #1#2.#3.% +{% + \expandafter\XINT_infloat_sp_b\the\numexpr#2-\xintLength{#1#3}.#1#3.#2.% +}% +\def\XINT_infloat_sp_b #1% +{% + \xint_UDzerominusfork + #1-\XINT_infloat_sp_quick + 0#1\XINT_infloat_sp_c + 0-{\XINT_infloat_sp_addzeroes #1}% + \krof +}% +\def\XINT_infloat_sp_quick .#1.#2.#3.{ #1[#3]}% +\def\XINT_infloat_sp_addzeroes #1.#2.#3.#4.% +{% + \expandafter\XINT_infloat_sp_done + \the\numexpr #4-#1\expandafter.% + \romannumeral0\XINT_dsx_addzerosnofuss {#1}{#2};% +}% +\def\XINT_infloat_sp_done #1.#2;{ #2[#1]}% +\def\XINT_infloat_sp_c #1.#2% +{% + \if #29\xint_dothis {\XINT_infloat_sp_d\XINT_infloat_Wb }\fi + \xint_orthat {\XINT_infloat_sp_d\xint_c_ }#1.#2% +}% +\def\XINT_infloat_sp_d #1#2.#3.#4.%#5.% +{% + \expandafter\XINT_infloat_sp_e + \romannumeral0\expandafter\XINT_split_fromleft_loop + \the\numexpr #4+\xint_c_i.{}#3\W\W\W\W\W\W\W\W\Z #1#2.% +}% +\def\XINT_infloat_sp_e #1.#2.% +{% + \expandafter\XINT_infloat_sp_f + \romannumeral0\XINT_rord_main {}#1% + \xint_relax + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_relax ;% +}% +\def\XINT_infloat_sp_f #1% +{% + \ifnum #1<\xint_c_v + \expandafter\XINT_infloat_sp_ga\else\expandafter\XINT_infloat_sp_h\fi +}% +\def\XINT_infloat_sp_ga #1;#2#3.#4.% +{% + \expandafter\XINT_infloat_sp_done\the\numexpr #3+#4\expandafter.% + \romannumeral0\XINT_rord_main {}#1% + \xint_relax + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_relax ;% +}% +\def\XINT_infloat_sp_h #1;#2% +{% + \expandafter\XINT_infloat_sp_i + \romannumeral0\expandafter#2% + \romannumeral0\XINT_addm_A 0{}1000\W\X\Y\Z #1000\W\X\Y\Z;% +}% +\def\XINT_infloat_sp_i #1#2;#3.#4.% +{% + \expandafter\XINT_infloat_sp_done\the\numexpr #1+#3+#4.#2;% +}% +\def\XINT_infloat_a #1.#2#3% #1=P, #2=n, #3=A, #4=B +{% + \XINT_infloat_fork #3\Z {#1}{#2}% #1 = precision, #2=n +}% +\def\XINT_infloat_fork #1% +{% + \xint_UDzerominusfork + #1-\XINT_infloat_zero + 0#1\XINT_infloat_J + 0-{\XINT_float_K #1}% + \krof +}% +\def\XINT_infloat_zero #1\Z #2#3#4#5{ 0[0]}% +\def\XINT_infloat_J {\expandafter-\romannumeral0\XINT_float_K }% +\def\XINT_infloat_Q #1% +{% + \if 1#1\expandafter\XINT_infloat_Ri\else\expandafter\XINT_infloat_Rii\fi +}% +\def\XINT_infloat_Ri #1.#2#3% +{% + \expandafter\XINT_infloat_Sa + \romannumeral0\XINT_dsx_addzerosnofuss {#1}{#2}\Z {#1}% +}% +\def\XINT_infloat_Rii #1.#2#3% +{% + \expandafter\XINT_infloat_Sa + \romannumeral0\xintiiquo{\XINT_dsx_addzerosnofuss {#1}{#2}}{#3}\Z {#1}% +}% +\def\XINT_infloat_Sa #1% +{% + \if #19\xint_dothis {\XINT_infloat_Sb\XINT_infloat_Wb }\fi + \xint_orthat {\XINT_infloat_Sb\xint_c_ }#1% +}% +\def\XINT_infloat_Sb #1#2\Z #3#4% +{% + \expandafter\XINT_infloat_T + \the\numexpr #4+\xint_c_i\expandafter.% + \romannumeral`&&@\XINT_lenrord_loop 0.{}#2\Z\W\W\W\W\W\W\W\Z #1{#3}% +}% +\def\XINT_infloat_T #1.#2.#3% +{% + \ifnum #2>#1 \xint_dothis{\XINT_infloat_U\XINT_infloat_Xb}\fi + \xint_orthat{\XINT_infloat_U\XINT_infloat_Xa #3}% +}% +\def\XINT_infloat_U #1#2% +{% + \ifnum #2<\xint_c_v + \expandafter\XINT_infloat_Va + \else + \expandafter\XINT_infloat_Vb + \fi #1% +}% +\def\XINT_infloat_Va #1#2\Z #3% +{% + \expandafter#1% + \romannumeral0\expandafter\xint_c_ + \romannumeral0\XINT_rord_main {}#2% + \xint_relax + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_relax \Z +}% +\def\XINT_infloat_Vb #1#2\Z #3% +{% + \expandafter #1% + \romannumeral0\expandafter #3% + \romannumeral0\XINT_addm_A 0{}1000\W\X\Y\Z #2000\W\X\Y\Z \Z +}% +\def\XINT_infloat_Wb #1#2% + {\if #11\xint_dothis{\xint_c_i1}\fi\xint_orthat{\xint_c_#1#2}}% +\def\XINT_infloat_Xa #1#2\Z #3#4% +{% + \expandafter\XINT_infloat_Y\the\numexpr #1+\xint_c_i+#4-#3.{#2}% +}% +\def\XINT_infloat_Xb #1#2\Z #3#4% +{% + \expandafter\XINT_infloat_Y\the\numexpr #1+\xint_c_ii+#4-#3.{#2}% +}% +\def\XINT_infloat_Y #1.#2{ #2[#1]}% +\def\xintPFloat {\romannumeral0\xintpfloat }% +\def\xintpfloat #1{\XINT_pfloat_chkopt #1\xint_relax }% +\def\XINT_pfloat_chkopt #1% +{% + \ifx [#1\expandafter\XINT_pfloat_opt + \else\expandafter\XINT_pfloat_noopt + \fi #1% +}% +\def\XINT_pfloat_noopt #1\xint_relax +{% + \expandafter\XINT_pfloat_a + \romannumeral0\xintfloat [\XINTdigits]{#1};\XINTdigits.% +}% +\def\XINT_pfloat_opt [\xint_relax #1]%#2% +{% + \expandafter\XINT_pfloat_opt_a \the\numexpr #1.% +}% +\def\XINT_pfloat_opt_a #1.#2% +{% + \expandafter\XINT_pfloat_a\romannumeral0\xintfloat [#1]{#2};#1.% +}% +\def\XINT_pfloat_a #1% +{% + \xint_UDzerominusfork + #1-\XINT_pfloat_zero + 0#1\XINT_pfloat_neg + 0-{\XINT_pfloat_pos #1}% + \krof +}% +\def\XINT_pfloat_zero #1;#2.{ 0.}% +\def\XINT_pfloat_neg + {\expandafter\xint_minus_thenstop\romannumeral0\XINT_pfloat_pos }% +\def\XINT_pfloat_pos #1e#2;#3.% +{% + \ifnum #2>\xint_c_v \xint_dothis\XINT_pfloat_no\fi + \ifnum #2<-\xint_c_v \xint_dothis\XINT_pfloat_no\fi + \ifnum #2<\xint_c_ \xint_dothis\XINT_pfloat_N\fi + \ifnum #2>\numexpr #3-\xint_c_i\relax \xint_dothis\XINT_pfloat_Ps\fi + \xint_orthat\XINT_pfloat_P #1e#2;% +}% +\def\XINT_pfloat_no #1;{ #1}% +\def\XINT_pfloat_N #1#2.#3e#4;% +{% + \csname XINT_pfloat_N\romannumeral-#4\endcsname #2#10.#3;% +}% +\def\XINT_pfloat_Ni #1#2#3.#4;{ #2.#1#4}% +\def\XINT_pfloat_Nii #1#2#3.#4;{ 0.#2#1#4}% +\def\XINT_pfloat_Niii#1#2#3.#4;{ 0.0#2#1#4}% +\def\XINT_pfloat_Niv #1#2#3.#4;{ 0.00#2#1#4}% +\def\XINT_pfloat_Nv #1#2#3.#4;{ 0.000#2#1#4}% +\def\XINT_pfloat_P #1#2.#3e#4;% +{% + \csname XINT_pfloat_P_\romannumeral#4\endcsname #3.#1#2;% +}% +\def\XINT_pfloat_P_ #1.#2;{ #2.#1}% +\def\XINT_pfloat_P_i #1#2.#3;{ #3#1.#2}% +\def\XINT_pfloat_P_ii #1#2#3.#4;{ #4#1#2.#3}% +\def\XINT_pfloat_P_iii#1#2#3#4.#5;{ #5#1#2#3.#4}% +\def\XINT_pfloat_P_iv #1#2#3#4#5.#6;{ #6#1#2#3#4.#5}% +\def\XINT_pfloat_P_v #1#2#3#4#5#6.#7;{ #7#1#2#3#4#5.#6}% +\def\XINT_pfloat_Ps #1#2.#3e#4;% +{% + \csname XINT_pfloat_Ps\romannumeral#4\endcsname #300000.#1#2;% +}% +\def\XINT_pfloat_Psi #1#2.#3;{ #3#1.}% +\def\XINT_pfloat_Psii #1#2#3.#4;{ #4#1#2.}% +\def\XINT_pfloat_Psiii#1#2#3#4.#5;{ #5#1#2#3.}% +\def\XINT_pfloat_Psiv #1#2#3#4#5.#6;{ #6#1#2#3#4.}% +\def\XINT_pfloat_Psv #1#2#3#4#5#6.#7;{ #7#1#2#3#4#5.}% +\def\XINTinFloatFracdigits {\romannumeral0\XINTinfloatfracdigits }% +\def\XINTinfloatfracdigits #1% +{% + \expandafter\XINT_infloatfracdg_a\expandafter {\romannumeral0\xinttfrac{#1}}% +}% +\def\XINT_infloatfracdg_a {\XINTinfloat [\XINTdigits]}% \def\xintFloatAdd {\romannumeral0\xintfloatadd }% \def\xintfloatadd #1{\XINT_fladd_chkopt \xintfloat #1\xint_relax }% \def\XINTinFloatAdd {\romannumeral0\XINTinfloatadd }% @@ -2121,46 +2183,41 @@ }% \def\XINT_fladd_noopt #1#2\xint_relax #3% {% - #1[\XINTdigits]{\XINT_FL_Add {\XINTdigits+\xint_c_ii}{#2}{#3}}% + #1[\XINTdigits]% + {\expandafter\XINT_FL_add_a + \romannumeral0\XINTinfloat[\XINTdigits]{#2}\XINTdigits.{#3}}% }% -\def\XINT_fladd_opt #1[\xint_relax #2]#3#4% +\def\XINT_fladd_opt #1[\xint_relax #2]%#3#4% {% - #1[#2]{\XINT_FL_Add {#2+\xint_c_ii}{#3}{#4}}% + \expandafter\XINT_fladd_opt_a\the\numexpr #2.#1% }% -\def\XINT_FL_Add #1#2% +\def\XINT_fladd_opt_a #1.#2#3#4% {% - \expandafter\XINT_FL_Add_a\expandafter{\the\numexpr #1\expandafter}% - \expandafter{\romannumeral0\XINTinfloat [#1]{#2}}% + #2[#1]{\expandafter\XINT_FL_add_a\romannumeral0\XINTinfloat[#1]{#3}#1.{#4}}% }% -\def\XINT_FL_Add_a #1#2#3% +\def\XINT_FL_add_a #1% {% - \expandafter\XINT_FL_Add_b\romannumeral0\XINTinfloat [#1]{#3}#2{#1}% + \xint_gob_til_zero #1\XINT_FL_add_zero 0\XINT_FL_add_b #1% }% -\def\XINT_FL_Add_b #1% +\def\XINT_FL_add_zero #1.#2{#2}% +\def\XINT_FL_add_b #1]#2.#3% {% - \xint_gob_til_zero #1\XINT_FL_Add_zero 0\XINT_FL_Add_c #1% + \expandafter\XINT_FL_add_c\romannumeral0\XINTinfloat[#2]{#3}#2.#1]% }% -\def\XINT_FL_Add_c #1[#2]#3% +\def\XINT_FL_add_c #1% {% - \xint_gob_til_zero #3\XINT_FL_Add_zerobis 0\XINT_FL_Add_d #1[#2]#3% + \xint_gob_til_zero #1\XINT_FL_add_zero 0\XINT_FL_add_d #1% }% -\def\XINT_FL_Add_d #1[#2]#3[#4]#5% +\def\XINT_FL_add_d #1[#2]#3.#4[#5]% {% - \ifnum \numexpr #2-#4-#5>\xint_c_i - \expandafter \xint_secondofthree_thenstop - \else - \ifnum \numexpr #4-#2-#5>\xint_c_i - \expandafter\expandafter\expandafter\xint_thirdofthree_thenstop - \fi - \fi - \xintadd {#1[#2]}{#3[#4]}% + \ifnum\numexpr #2-#3-#5>\xint_c_\xint_dothis\xint_firstoftwo\fi + \ifnum\numexpr #5-#3-#2>\xint_c_\xint_dothis\xint_secondoftwo\fi + \xint_orthat\xintAdd {#1[#2]}{#4[#5]}% }% -\def\XINT_FL_Add_zero 0\XINT_FL_Add_c 0[0]#1[#2]#3{#1[#2]}% -\def\XINT_FL_Add_zerobis 0\XINT_FL_Add_d #1[#2]0[0]#3{#1[#2]}% -\def\xintFloatSub {\romannumeral0\xintfloatsub }% +\def\xintFloatSub {\romannumeral0\xintfloatsub }% \def\xintfloatsub #1{\XINT_flsub_chkopt \xintfloat #1\xint_relax }% -\def\XINTinFloatSub {\romannumeral0\XINTinfloatsub }% -\def\XINTinfloatsub #1{\XINT_flsub_chkopt \XINTinfloat #1\xint_relax }% +\def\XINTinFloatSub {\romannumeral0\XINTinfloatsub }% +\def\XINTinfloatsub #1{\XINT_flsub_chkopt \XINTinfloat #1\xint_relax }% \def\XINT_flsub_chkopt #1#2% {% \ifx [#2\expandafter\XINT_flsub_opt @@ -2169,14 +2226,20 @@ }% \def\XINT_flsub_noopt #1#2\xint_relax #3% {% - #1[\XINTdigits]{\XINT_FL_Add {\XINTdigits+\xint_c_ii}{#2}{\xintOpp{#3}}}% + #1[\XINTdigits]% + {\expandafter\XINT_FL_add_a + \romannumeral0\XINTinfloat[\XINTdigits]{#2}\XINTdigits.{\xintOpp{#3}}}% +}% +\def\XINT_flsub_opt #1[\xint_relax #2]%#3#4% +{% + \expandafter\XINT_flsub_opt_a\the\numexpr #2.#1% }% -\def\XINT_flsub_opt #1[\xint_relax #2]#3#4% +\def\XINT_flsub_opt_a #1.#2#3#4% {% - #1[#2]{\XINT_FL_Add {#2+\xint_c_ii}{#3}{\xintOpp{#4}}}% + #2[#1]{\expandafter\XINT_FL_add_a\romannumeral0\XINTinfloat[#1]{#3}#1.{\xintOpp{#4}}}% }% -\def\xintFloatMul {\romannumeral0\xintfloatmul}% -\def\xintfloatmul #1{\XINT_flmul_chkopt \xintfloat #1\xint_relax }% +\def\xintFloatMul {\romannumeral0\xintfloatmul }% +\def\xintfloatmul #1{\XINT_flmul_chkopt \xintfloat #1\xint_relax }% \def\XINTinFloatMul {\romannumeral0\XINTinfloatmul }% \def\XINTinfloatmul #1{\XINT_flmul_chkopt \XINTinfloat #1\xint_relax }% \def\XINT_flmul_chkopt #1#2% @@ -2187,26 +2250,27 @@ }% \def\XINT_flmul_noopt #1#2\xint_relax #3% {% - #1[\XINTdigits]{\XINT_FL_Mul {\XINTdigits+\xint_c_ii}{#2}{#3}}% + #1[\XINTdigits]% + {\expandafter\XINT_FL_mul_a + \romannumeral0\XINTinfloat[\XINTdigits]{#2}\XINTdigits.{#3}}% }% -\def\XINT_flmul_opt #1[\xint_relax #2]#3#4% +\def\XINT_flmul_opt #1[\xint_relax #2]%#3#4% {% - #1[#2]{\XINT_FL_Mul {#2+\xint_c_ii}{#3}{#4}}% + \expandafter\XINT_flmul_opt_a\the\numexpr #2.#1% }% -\def\XINT_FL_Mul #1#2% +\def\XINT_flmul_opt_a #1.#2#3#4% {% - \expandafter\XINT_FL_Mul_a\expandafter{\the\numexpr #1\expandafter}% - \expandafter{\romannumeral0\XINTinfloat [#1]{#2}}% + #2[#1]{\expandafter\XINT_FL_mul_a\romannumeral0\XINTinfloat[#1]{#3}#1.{#4}}% }% -\def\XINT_FL_Mul_a #1#2#3% +\def\XINT_FL_mul_a #1[#2]#3.#4% {% - \expandafter\XINT_FL_Mul_b\romannumeral0\XINTinfloat [#1]{#3}#2% + \expandafter\XINT_FL_mul_b\romannumeral0\XINTinfloat [#3]{#4}#1[#2]% }% -\def\XINT_FL_Mul_b #1[#2]#3[#4]{\xintE{\xintiiMul {#1}{#3}}{#2+#4}}% -\def\xintFloatDiv {\romannumeral0\xintfloatdiv}% -\def\xintfloatdiv #1{\XINT_fldiv_chkopt \xintfloat #1\xint_relax }% -\def\XINTinFloatDiv {\romannumeral0\XINTinfloatdiv }% -\def\XINTinfloatdiv #1{\XINT_fldiv_chkopt \XINTinfloat #1\xint_relax }% +\def\XINT_FL_mul_b #1[#2]#3[#4]{\xintE{\xintiiMul {#3}{#1}}{#4+#2}}% +\def\xintFloatDiv {\romannumeral0\xintfloatdiv }% +\def\xintfloatdiv #1{\XINT_fldiv_chkopt \xintfloat #1\xint_relax }% +\def\XINTinFloatDiv {\romannumeral0\XINTinfloatdiv }% +\def\XINTinfloatdiv #1{\XINT_fldiv_chkopt \XINTinfloat #1\xint_relax }% \def\XINT_fldiv_chkopt #1#2% {% \ifx [#2\expandafter\XINT_fldiv_opt @@ -2215,23 +2279,24 @@ }% \def\XINT_fldiv_noopt #1#2\xint_relax #3% {% - #1[\XINTdigits]{\XINT_FL_Div {\XINTdigits+\xint_c_ii}{#2}{#3}}% + #1[\XINTdigits]% + {\expandafter\XINT_FL_div_a + \romannumeral0\XINTinfloat[\XINTdigits]{#2}\XINTdigits.{#3}}% }% -\def\XINT_fldiv_opt #1[\xint_relax #2]#3#4% +\def\XINT_fldiv_opt #1[\xint_relax #2]%#3#4% {% - #1[#2]{\XINT_FL_Div {#2+\xint_c_ii}{#3}{#4}}% + \expandafter\XINT_fldiv_opt_a\the\numexpr #2.#1% }% -\def\XINT_FL_Div #1#2% +\def\XINT_fldiv_opt_a #1.#2#3#4% {% - \expandafter\XINT_FL_Div_a\expandafter{\the\numexpr #1\expandafter}% - \expandafter{\romannumeral0\XINTinfloat [#1]{#2}}% + #2[#1]{\expandafter\XINT_FL_div_a\romannumeral0\XINTinfloat[#1]{#3}#1.{#4}}% }% -\def\XINT_FL_Div_a #1#2#3% +\def\XINT_FL_div_a #1[#2]#3.#4% {% - \expandafter\XINT_FL_Div_b\romannumeral0\XINTinfloat [#1]{#3}#2% + \expandafter\XINT_FL_div_b\romannumeral0\XINTinfloat[#3]{#4}#1[#2]% }% -\def\XINT_FL_Div_b #1[#2]#3[#4]{\xintE{#3/#1}{#4-#2}}% -\def\xintFloatPow {\romannumeral0\xintfloatpow}% +\def\XINT_FL_div_b #1[#2]#3[#4]{\xintE{#3/#1}{#4-#2}}% +\def\xintFloatPow {\romannumeral0\xintfloatpow}% \def\xintfloatpow #1{\XINT_flpow_chkopt \xintfloat #1\xint_relax }% \def\XINTinFloatPow {\romannumeral0\XINTinfloatpow }% \def\XINTinfloatpow #1{\XINT_flpow_chkopt \XINTinfloat #1\xint_relax }% @@ -2240,253 +2305,302 @@ \ifx [#2\expandafter\XINT_flpow_opt \else\expandafter\XINT_flpow_noopt \fi - #1#2% + #1#2% }% \def\XINT_flpow_noopt #1#2\xint_relax #3% {% - \expandafter\XINT_flpow_checkB_start\expandafter - {\the\numexpr #3\expandafter}\expandafter - {\the\numexpr \XINTdigits}{#2}{#1[\XINTdigits]}% + \expandafter\XINT_flpow_checkB_a + \the\numexpr #3.\XINTdigits.{#2}{#1[\XINTdigits]}% +}% +\def\XINT_flpow_opt #1[\xint_relax #2]% +{% + \expandafter\XINT_flpow_opt_a\the\numexpr #2.#1% }% -\def\XINT_flpow_opt #1[\xint_relax #2]#3#4% +\def\XINT_flpow_opt_a #1.#2#3#4% {% - \expandafter\XINT_flpow_checkB_start\expandafter - {\the\numexpr #4\expandafter}\expandafter - {\the\numexpr #2}{#3}{#1[#2]}% + \expandafter\XINT_flpow_checkB_a\the\numexpr #4.#1.{#3}{#2[#1]}% }% -\def\XINT_flpow_checkB_start #1{\XINT_flpow_checkB_a #1\Z }% \def\XINT_flpow_checkB_a #1% {% \xint_UDzerominusfork #1-\XINT_flpow_BisZero - 0#1{\XINT_flpow_checkB_b 1}% - 0-{\XINT_flpow_checkB_b 0#1}% + 0#1{\XINT_flpow_checkB_b -}% + 0-{\XINT_flpow_checkB_b {}#1}% \krof }% -\def\XINT_flpow_BisZero \Z #1#2#3{#3{1/1[0]}}% -\def\XINT_flpow_checkB_b #1#2\Z #3% +\def\XINT_flpow_BisZero .#1.#2#3{#3{1[0]}}% +\def\XINT_flpow_checkB_b #1#2.#3.% {% - \expandafter\XINT_flpow_checkB_c \expandafter - {\romannumeral0\xintlength{#2}}{#3}{#2}#1% + \expandafter\XINT_flpow_checkB_c + \the\numexpr\xintLength{#2}+\xint_c_iii.#3.#2.{#1}% }% -\def\XINT_flpow_checkB_c #1#2% +\def\XINT_flpow_checkB_c #1.#2.% {% - \expandafter\XINT_flpow_checkB_d \expandafter - {\the\numexpr \expandafter\xintLength\expandafter - {\the\numexpr #1*20/\xint_c_iii }+#1+#2+\xint_c_i }% + \expandafter\XINT_flpow_checkB_d\the\numexpr#1+#2.#1.#2.% }% -\def\XINT_flpow_checkB_d #1#2#3#4% +\def\XINT_flpow_checkB_d #1.#2.#3.#4.#5#6% {% - \expandafter \XINT_flpow_a - \romannumeral0\XINTinfloat [#1]{#4}{#1}{#2}#3% + \expandafter \XINT_flpow_aa + \romannumeral0\XINTinfloat [#3]{#6}{#2}{#1}{#4}{#5}% }% +\def\XINT_flpow_aa #1[#2]#3% +{% + \expandafter\XINT_flpow_ab\the\numexpr #2-#3\expandafter.% + \romannumeral0\XINT_dsx_addzerosnofuss {#3}{}.#1.% +}% +\def\XINT_flpow_ab #1.#2.#3.{\XINT_flpow_a #3#2[#1]}% \def\XINT_flpow_a #1% {% \xint_UDzerominusfork #1-\XINT_flpow_zero - 0#1{\XINT_flpow_b 1}% - 0-{\XINT_flpow_b 0#1}% + 0#1{\XINT_flpow_b \iftrue}% + 0-{\XINT_flpow_b \iffalse#1}% \krof }% +\def\XINT_flpow_zero #1[#2]#3#4#5#6% +{% + \if 1#51\xint_afterfi {#6{0[0]}}\else + \xint_afterfi {\xintError:DivisionByZero #6{1[2147483648]}}\fi +}% \def\XINT_flpow_b #1#2[#3]#4#5% {% - \XINT_flpow_loopI {#5}{#2[#3]}{\romannumeral0\XINTinfloatmul [#4]}% - {#1*\ifodd #5 1\else 0\fi}% + \XINT_flpow_loopI #5.#3.#2.#4.{#1\ifodd #5 \xint_c_i\fi\fi}% }% -\def\XINT_flpow_zero [#1]#2#3#4#5% +\def\XINT_flpow_truncate #1.#2.#3.% {% - \if #41\xint_afterfi {\xintError:DivisionByZero #5{1[2147483648]}}% - \else \xint_afterfi {#5{0[0]}}\fi + \expandafter\XINT_flpow_truncate_a + \romannumeral0\XINT_split_fromleft_loop #3.{}#2\W\W\W\W\W\W\W\W\Z + #1.#3.% }% -\def\XINT_flpow_loopI #1% +\def\XINT_flpow_truncate_a #1.#2.#3.{#3+\xintLength{#2}.#1.}% +\def\XINT_flpow_loopI #1.% {% - \ifnum #1=\xint_c_i\XINT_flpow_ItoIII\fi + \ifnum #1=\xint_c_i\expandafter\XINT_flpow_ItoIII\fi \ifodd #1 \expandafter\XINT_flpow_loopI_odd \else \expandafter\XINT_flpow_loopI_even \fi - {#1}% + #1.% }% -\def\XINT_flpow_ItoIII\fi #1\fi #2#3#4#5% +\def\XINT_flpow_ItoIII\ifodd #1\fi #2.#3.#4.#5.#6% {% - \fi\expandafter\XINT_flpow_III\the\numexpr #5\relax #3% + \expandafter\XINT_flpow_III\the\numexpr #6+\xint_c_.#3.#4.#5.% }% -\def\XINT_flpow_loopI_even #1#2#3% +\def\XINT_flpow_loopI_even #1.#2.#3.%#4.% {% - \expandafter\XINT_flpow_loopI\expandafter - {\the\numexpr #1/\xint_c_ii\expandafter}\expandafter - {#3{#2}{#2}}{#3}% + \expandafter\XINT_flpow_loopI + \the\numexpr #1/\xint_c_ii\expandafter.% + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#2\expandafter.\romannumeral0\xintiisqr{#3}.% }% -\def\XINT_flpow_loopI_odd #1#2#3% +\def\XINT_flpow_loopI_odd #1.#2.#3.#4.% {% - \expandafter\XINT_flpow_loopII\expandafter - {\the\numexpr #1/\xint_c_ii-\xint_c_i\expandafter}\expandafter - {#3{#2}{#2}}{#3}{#2}% + \expandafter\XINT_flpow_loopII + \the\numexpr #1/\xint_c_ii-\xint_c_i\expandafter.% + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#2\expandafter.\romannumeral0\xintiisqr{#3}.#4.#2.#3.% }% -\def\XINT_flpow_loopII #1% +\def\XINT_flpow_loopII #1.% {% - \ifnum #1 = \xint_c_i\XINT_flpow_IItoIII\fi + \ifnum #1 = \xint_c_i\expandafter\XINT_flpow_IItoIII\fi \ifodd #1 \expandafter\XINT_flpow_loopII_odd \else \expandafter\XINT_flpow_loopII_even \fi - {#1}% + #1.% }% -\def\XINT_flpow_loopII_even #1#2#3% +\def\XINT_flpow_loopII_even #1.#2.#3.%#4.% {% - \expandafter\XINT_flpow_loopII\expandafter - {\the\numexpr #1/\xint_c_ii\expandafter}\expandafter - {#3{#2}{#2}}{#3}% + \expandafter\XINT_flpow_loopII + \the\numexpr #1/\xint_c_ii\expandafter.% + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#2\expandafter.\romannumeral0\xintiisqr{#3}.% }% -\def\XINT_flpow_loopII_odd #1#2#3#4% +\def\XINT_flpow_loopII_odd #1.#2.#3.#4.#5.#6.% {% - \expandafter\XINT_flpow_loopII_odda\expandafter - {#3{#2}{#4}}{#1}{#2}{#3}% + \expandafter\XINT_flpow_loopII_odda + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr#2+#5\expandafter.\romannumeral0\xintiimul{#3}{#6}.#4.% + #1.#2.#3.% }% -\def\XINT_flpow_loopII_odda #1#2#3#4% +\def\XINT_flpow_loopII_odda #1.#2.#3.#4.#5.#6.% {% - \expandafter\XINT_flpow_loopII\expandafter - {\the\numexpr #2/\xint_c_ii-\xint_c_i\expandafter}\expandafter - {#4{#3}{#3}}{#4}{#1}% + \expandafter\XINT_flpow_loopII + \the\numexpr #4/\xint_c_ii-\xint_c_i\expandafter.% + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#5\expandafter.\romannumeral0\xintiisqr{#6}.#3.% + #1.#2.% }% -\def\XINT_flpow_IItoIII\fi #1\fi #2#3#4#5#6% +\def\XINT_flpow_IItoIII\ifodd #1\fi #2.#3.#4.#5.#6.#7.#8% {% - \fi\expandafter\XINT_flpow_III\the\numexpr #6\expandafter\relax - #4{#3}{#5}% + \expandafter\XINT_flpow_III\the\numexpr #8+\xint_c_\expandafter.% + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr#3+#6\expandafter.\romannumeral0\xintiimul{#4}{#7}.#5.% }% -\def\XINT_flpow_III #1#2[#3]#4% +\def\XINT_flpow_III #1.#2.#3.#4.#5% {% - \expandafter\XINT_flpow_IIIend\expandafter - {\the\numexpr\if #41-\fi#3\expandafter}% - \xint_UDzerofork - #4{{#2}}% - 0{{1/#2}}% + \expandafter\XINT_flpow_IIIend + \xint_UDsignfork + #5{{\xintNum{1/#3[\xint_c_ii*#4-\xint_c_i]}[\xint_c_i-\xint_c_ii*#4-#2]}}% + -{{#3[#2]}}% \krof #1% }% -\def\XINT_flpow_IIIend #1#2#3#4% -{% - \xint_UDzerofork - #3{#4{#2[#1]}}% - 0{#4{-#2[#1]}}% - \krof -}% -\def\xintFloatPower {\romannumeral0\xintfloatpower}% +\def\XINT_flpow_IIIend #1#2#3% + {#3{\if#21\xint_afterfi{\expandafter-\romannumeral`&&@}\fi#1}}% +\def\xintFloatPower {\romannumeral0\xintfloatpower}% \def\xintfloatpower #1{\XINT_flpower_chkopt \xintfloat #1\xint_relax }% -\def\XINTinFloatPower {\romannumeral0\XINTinfloatpower}% +\def\XINTinFloatPower {\romannumeral0\XINTinfloatpower }% \def\XINTinfloatpower #1{\XINT_flpower_chkopt \XINTinfloat #1\xint_relax }% +\def\XINTinFloatPowerH {\romannumeral0\XINTinfloatpowerH }% +\def\XINTinfloatpowerH #1#2% + {\expandafter\XINT_flpowerh_a \romannumeral0\xinttrunc 1{#2}.0;% + \XINTdigits.{#1}{\XINTinfloat[\XINTdigits]}}% +\def\XINT_flpowerh_a #1.#2% +{% + \ifnum#2>\xint_c_iv\xint_dothis\XINT_flpowerh_b\fi + \xint_orthat\XINT_flpowerh_i #1.#2% +}% +\def\XINT_flpowerh_i #1.#2;% + {\expandafter\XINT_flpower_checkB_a\romannumeral0\xintinum{#1}.}% +\def\XINT_flpowerh_b #1% +{% + \if#1-\xint_dothis\XINT_flpowerh_bneg\fi + \xint_orthat{\XINT_flpowerh_bpos #1}% +}% +\def\XINT_flpowerh_bpos #1.#2;\XINTdigits.#3#4% +{% + \expandafter\XINT_flpower_checkB_a + \romannumeral0\xintinc{\xintDouble{#1}}.% + \XINTdigits.{#3}{\XINTinfloatsqrt[\XINTdigits]}% +}% +\def\XINT_flpowerh_bneg #1.#2;\XINTdigits.#3#4% +{% + \expandafter\XINT_flpower_checkB_a + \expandafter-\romannumeral0\xintinc{\xintDouble{#1}}.% + \XINTdigits.{#3}{\XINTinfloatsqrt[\XINTdigits]}% +}% \def\XINT_flpower_chkopt #1#2% {% \ifx [#2\expandafter\XINT_flpower_opt \else\expandafter\XINT_flpower_noopt \fi - #1#2% + #1#2% }% \def\XINT_flpower_noopt #1#2\xint_relax #3% {% - \expandafter\XINT_flpower_checkB_start\expandafter - {\the\numexpr \XINTdigits\expandafter}\expandafter - {\romannumeral0\xintnum{#3}}{#2}{#1[\XINTdigits]}% + \expandafter\XINT_flpower_checkB_a + \romannumeral0\xintnum{#3}.\XINTdigits.{#2}{#1[\XINTdigits]}% }% -\def\XINT_flpower_opt #1[\xint_relax #2]#3#4% +\def\XINT_flpower_opt #1[\xint_relax #2]% {% - \expandafter\XINT_flpower_checkB_start\expandafter - {\the\numexpr #2\expandafter}\expandafter - {\romannumeral0\xintnum{#4}}{#3}{#1[#2]}% + \expandafter\XINT_flpower_opt_a\the\numexpr #2.#1% +}% +\def\XINT_flpower_opt_a #1.#2#3#4% +{% + \expandafter\XINT_flpower_checkB_a + \romannumeral0\xintnum{#4}.#1.{#3}{#2[#1]}% }% -\def\XINT_flpower_checkB_start #1#2{\XINT_flpower_checkB_a #2\Z {#1}}% \def\XINT_flpower_checkB_a #1% {% \xint_UDzerominusfork #1-\XINT_flpower_BisZero - 0#1{\XINT_flpower_checkB_b 1}% - 0-{\XINT_flpower_checkB_b 0#1}% + 0#1{\XINT_flpower_checkB_b -}% + 0-{\XINT_flpower_checkB_b {}#1}% \krof }% -\def\XINT_flpower_BisZero \Z #1#2#3{#3{1/1[0]}}% -\def\XINT_flpower_checkB_b #1#2\Z #3% +\def\XINT_flpower_BisZero .#1.#2#3{#3{1[0]}}% +\def\XINT_flpower_checkB_b #1#2.#3.% +{% + \expandafter\XINT_flpower_checkB_c + \the\numexpr\xintLength{#2}+\xint_c_iii.#3.#2.{#1}% +}% +\def\XINT_flpower_checkB_c #1.#2.% {% - \expandafter\XINT_flpower_checkB_c \expandafter - {\romannumeral0\xintlength{#2}}{#3}{#2}#1% + \expandafter\XINT_flpower_checkB_d\the\numexpr#1+#2.#1.#2.% }% -\def\XINT_flpower_checkB_c #1#2% +\def\XINT_flpower_checkB_d #1.#2.#3.#4.#5#6% {% - \expandafter\XINT_flpower_checkB_d \expandafter - {\the\numexpr \expandafter\xintLength\expandafter - {\the\numexpr #1*20/\xint_c_iii }+#1+#2+\xint_c_i }% + \expandafter \XINT_flpower_aa + \romannumeral0\XINTinfloat [#3]{#6}{#2}{#1}{#4}{#5}% }% -\def\XINT_flpower_checkB_d #1#2#3#4% +\def\XINT_flpower_aa #1[#2]#3% {% - \expandafter \XINT_flpower_a - \romannumeral0\XINTinfloat [#1]{#4}{#1}{#2}#3% + \expandafter\XINT_flpower_ab\the\numexpr #2-#3\expandafter.% + \romannumeral0\XINT_dsx_addzerosnofuss {#3}{}.#1.% }% +\def\XINT_flpower_ab #1.#2.#3.{\XINT_flpower_a #3#2[#1]}% \def\XINT_flpower_a #1% {% \xint_UDzerominusfork #1-\XINT_flpow_zero - 0#1{\XINT_flpower_b 1}% - 0-{\XINT_flpower_b 0#1}% + 0#1{\XINT_flpower_b \iftrue}% + 0-{\XINT_flpower_b \iffalse#1}% \krof }% \def\XINT_flpower_b #1#2[#3]#4#5% {% - \XINT_flpower_loopI {#5}{#2[#3]}{\romannumeral0\XINTinfloatmul [#4]}% - {#1*\xintiiOdd {#5}}% + \XINT_flpower_loopI #5.#3.#2.#4.{#1\xintiiOdd{#5}\fi}% }% -\def\XINT_flpower_loopI #1% +\def\XINT_flpower_loopI #1.% {% - \if1\XINT_isOne {#1}\XINT_flpower_ItoIII\fi - \if1\xintiiOdd{#1}% - \expandafter\expandafter\expandafter\XINT_flpower_loopI_odd - \else - \expandafter\expandafter\expandafter\XINT_flpower_loopI_even - \fi - \expandafter {\romannumeral0\xinthalf{#1}}% + \if1\XINT_isOne {#1}\xint_dothis\XINT_flpower_ItoIII\fi + \if1\xintiiOdd {#1}\xint_dothis{\expandafter\XINT_flpower_loopI_odd}\fi + \xint_orthat{\expandafter\XINT_flpower_loopI_even}% + \romannumeral0\xinthalf{#1}.% }% -\def\XINT_flpower_ItoIII\fi #1\fi\expandafter #2#3#4#5% +\def\XINT_flpower_ItoIII #1.#2.#3.#4.#5% {% - \fi\expandafter\XINT_flpow_III \the\numexpr #5\relax #3% + \expandafter\XINT_flpow_III\the\numexpr #5+\xint_c_.#2.#3.#4.% }% -\def\XINT_flpower_loopI_even #1#2#3% +\def\XINT_flpower_loopI_even #1.#2.#3.#4.% {% - \expandafter\XINT_flpower_toI\expandafter {#3{#2}{#2}}{#1}{#3}% + \expandafter\XINT_flpower_toloopI + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#2\expandafter.\romannumeral0\xintiisqr{#3}.#4.#1.% }% -\def\XINT_flpower_loopI_odd #1#2#3% +\def\XINT_flpower_toloopI #1.#2.#3.#4.{\XINT_flpower_loopI #4.#1.#2.#3.}% +\def\XINT_flpower_loopI_odd #1.#2.#3.#4.% {% - \expandafter\XINT_flpower_toII\expandafter {#3{#2}{#2}}{#1}{#3}{#2}% + \expandafter\XINT_flpower_toloopII + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#2\expandafter.\romannumeral0\xintiisqr{#3}.#4.% + #1.#2.#3.% }% -\def\XINT_flpower_toI #1#2{\XINT_flpower_loopI {#2}{#1}}% -\def\XINT_flpower_toII #1#2{\XINT_flpower_loopII {#2}{#1}}% -\def\XINT_flpower_loopII #1% +\def\XINT_flpower_toloopII #1.#2.#3.#4.{\XINT_flpower_loopII #4.#1.#2.#3.}% +\def\XINT_flpower_loopII #1.% {% - \if1\XINT_isOne {#1}\XINT_flpower_IItoIII\fi - \if1\xintiiOdd{#1}% - \expandafter\expandafter\expandafter\XINT_flpower_loopII_odd - \else - \expandafter\expandafter\expandafter\XINT_flpower_loopII_even - \fi - \expandafter {\romannumeral0\xinthalf{#1}}% + \if1\XINT_isOne{#1}\xint_dothis\XINT_flpower_IItoIII\fi + \if1\xintiiOdd{#1}\xint_dothis{\expandafter\XINT_flpower_loopII_odd}\fi + \xint_orthat{\expandafter\XINT_flpower_loopII_even}% + \romannumeral0\xinthalf{#1}.% }% -\def\XINT_flpower_loopII_even #1#2#3% +\def\XINT_flpower_loopII_even #1.#2.#3.#4.% {% - \expandafter\XINT_flpower_toII\expandafter - {#3{#2}{#2}}{#1}{#3}% + \expandafter\XINT_flpower_toloopII + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#2\expandafter.\romannumeral0\xintiisqr{#3}.#4.#1.% }% -\def\XINT_flpower_loopII_odd #1#2#3#4% +\def\XINT_flpower_loopII_odd #1.#2.#3.#4.#5.#6.% {% - \expandafter\XINT_flpower_loopII_odda\expandafter - {#3{#2}{#4}}{#2}{#3}{#1}% + \expandafter\XINT_flpower_loopII_odda + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr#2+#5\expandafter.\romannumeral0\xintiimul{#3}{#6}.#4.% + #1.#2.#3.% }% -\def\XINT_flpower_loopII_odda #1#2#3#4% +\def\XINT_flpower_loopII_odda #1.#2.#3.#4.#5.#6.% {% - \expandafter\XINT_flpower_toII\expandafter - {#3{#2}{#2}}{#4}{#3}{#1}% + \expandafter\XINT_flpower_toloopII + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr\xint_c_ii*#5\expandafter.\romannumeral0\xintiisqr{#6}.#3.% + #4.#1.#2.% }% -\def\XINT_flpower_IItoIII\fi #1\fi\expandafter #2#3#4#5#6% +\def\XINT_flpower_IItoIII #1.#2.#3.#4.#5.#6.#7% {% - \fi\expandafter\XINT_flpow_III\the\numexpr #6\expandafter\relax - #4{#3}{#5}% + \expandafter\XINT_flpow_III\the\numexpr #7+\xint_c_\expandafter.% + \the\numexpr\expandafter\XINT_flpow_truncate + \the\numexpr#2+#5\expandafter.\romannumeral0\xintiimul{#3}{#6}.#4.% }% \def\xintFloatFac {\romannumeral0\xintfloatfac}% \def\xintfloatfac #1{\XINT_flfac_chkopt \xintfloat #1\xint_relax }% @@ -2501,53 +2615,63 @@ }% \def\XINT_flfac_noopt #1#2\xint_relax {% - \expandafter\XINT_FL_fac_start\expandafter - {\the\numexpr \xintNum{#2}}{\XINTdigits}{#1[\XINTdigits]}% + \expandafter\XINT_FL_fac_fork_a + \the\numexpr \xintNum{#2}.\xint_c_i \XINTdigits\XINT_FL_fac_out{#1[\XINTdigits]}% }% -\def\XINT_flfac_opt #1[\xint_relax #2]#3% +\def\XINT_flfac_opt #1[\xint_relax #2]% {% - \expandafter\XINT_FL_fac_start\expandafter - {\the\numexpr \xintNum{#3}\expandafter}\expandafter{\the\numexpr#2}{#1[#2]}% + \expandafter\XINT_flfac_opt_a\the\numexpr #2.#1% }% -\def\XINT_FL_fac_start #1% +\def\XINT_flfac_opt_a #1.#2#3% {% - \ifcase\XINT_cntSgn #1\Z - \expandafter\XINT_FL_fac_iszero - \or - \expandafter\XINT_FL_fac_increaseP - \else - \expandafter\XINT_FL_fac_isneg - \fi {#1}% + \expandafter\XINT_FL_fac_fork_a\the\numexpr \xintNum{#3}.\xint_c_i {#1}\XINT_FL_fac_out{#2[#1]}% }% -\def\XINT_FL_fac_iszero #1#2#3{#3{1/1[0]}}% -\def\XINT_FL_fac_isneg #1#2#3% - {\expandafter\xintError:FactorialOfNegativeNumber #3{1/1[0]}}% -\def\XINT_FL_fac_increaseP #1#2% +\def\XINT_FL_fac_fork_a #1% {% - \expandafter\XINT_FL_fac_fork - \the\numexpr \xint_c_viii*% - ((\xint_c_v+#2+\XINT_FL_fac_extradigits #187654321\Z)/\xint_c_viii).% - #1.% + \xint_UDzerominusfork + #1-\XINT_FL_fac_iszero + 0#1\XINT_FL_fac_isneg + 0-{\XINT_FL_fac_fork_b #1}% + \krof }% -\def\XINT_FL_fac_extradigits #1#2#3#4#5#6#7#8{\XINT_FL_fac_extra_a }% -\def\XINT_FL_fac_extra_a #1#2\Z {#1}% -\def\XINT_FL_fac_fork #1.#2.#3% +\def\XINT_FL_fac_iszero #1.#2#3#4#5{#5{1/1[0]}}% +\def\XINT_FL_fac_isneg #1.#2#3#4#5{\expandafter\xintError:FactorialOfNegative #5{0/1[0]}}% +\def\XINT_FL_fac_fork_b #1.% {% - \ifnum #2>99999999 \xint_dothis{\XINT_FL_fac_toobig }\fi - \ifnum #2>9999 \xint_dothis{\XINT_FL_fac_vbigloop_a }\fi - \ifnum #2>465 \xint_dothis{\XINT_FL_fac_bigloop_a }\fi - \ifnum #2>101 \xint_dothis{\XINT_FL_fac_medloop_a }\fi - \xint_orthat{\XINT_FL_fac_smallloop_a }% - #2.#1.{\XINT_FL_fac_out}{#3}% + \ifnum #1>\xint_c_x^viii_mone\xint_dothis\XINT_FL_fac_toobig\fi + \ifnum #1>\xint_c_x^iv\xint_dothis\XINT_FL_fac_vbig \fi + \ifnum #1>465 \xint_dothis\XINT_FL_fac_big\fi + \ifnum #1>101 \xint_dothis\XINT_FL_fac_med\fi + \xint_orthat\XINT_FL_fac_small + #1.% }% -\def\XINT_FL_fac_toobig #1.#2.#3#4% - {\expandafter\xintError:FactorialOfTooBigNumber #4{1/1[0]}}% +\def\XINT_FL_fac_toobig #1.#2#3#4#5{\expandafter\xintError:TooBigFactorial #5{1/1[0]}}% +\def\XINT_FL_fac_vbig + {\expandafter\XINT_FL_fac_vbigloop_a + \the\numexpr \XINT_FL_fac_increaseP \xint_c_i }% +\def\XINT_FL_fac_big + {\expandafter\XINT_FL_fac_bigloop_a + \the\numexpr \XINT_FL_fac_increaseP \xint_c_ii }% +\def\XINT_FL_fac_med + {\expandafter\XINT_FL_fac_medloop_a + \the\numexpr \XINT_FL_fac_increaseP \xint_c_iii }% +\def\XINT_FL_fac_small + {\expandafter\XINT_FL_fac_smallloop_a + \the\numexpr \XINT_FL_fac_increaseP \xint_c_iv }% +\def\XINT_FL_fac_increaseP #1#2.#3#4% +{% + #2\expandafter.\the\numexpr\xint_c_viii*% + ((\xint_c_iv+#4+\expandafter\XINT_FL_fac_countdigits + \the\numexpr #2/(#1*#3)\relax 87654321\Z)/\xint_c_viii).% +}% +\def\XINT_FL_fac_countdigits #1#2#3#4#5#6#7#8{\XINT_FL_fac_countdone }% +\def\XINT_FL_fac_countdone #1#2\Z {#1}% \def\XINT_FL_fac_out #1\Z![#2]#3{#3{\romannumeral0\XINT_mul_out #1\Z!1\R!1\R!1\R!1\R!1\R!1\R!1\R!1\R!\W [#2]}}% \def\XINT_FL_fac_vbigloop_a #1.#2.% {% - \XINT_FL_fac_bigloop_a 9999.#2.% - {\expandafter\XINT_FL_fac_vbigloop_loop\the\numexpr 100010000\expandafter.% + \XINT_FL_fac_bigloop_a \xint_c_x^iv.#2.% + {\expandafter\XINT_FL_fac_vbigloop_loop\the\numexpr 100010001\expandafter.% \the\numexpr \xint_c_x^viii+#1.}% }% \def\XINT_FL_fac_vbigloop_loop #1.#2.% @@ -2629,8 +2753,7 @@ \ifnum #1=\xint_c_viii \expandafter\XINT_FL_fac_addzeros_exit\fi \expandafter\XINT_FL_fac_addzeros\the\numexpr #1-\xint_c_viii.100000000!% }% -\def\XINT_FL_fac_addzeros_exit #1.#2.#3#4% - {\XINT_FL_fac_smallloop_loop #3#21\Z![-#4]}% +\def\XINT_FL_fac_addzeros_exit #1.#2.#3#4{\XINT_FL_fac_smallloop_loop #3#21\Z![-#4]}% \def\XINT_FL_fac_smallloop_loop #1.#2.% {% \ifnum #1>#2 \expandafter\XINT_FL_fac_loop_exit\fi @@ -2691,183 +2814,346 @@ {1#2\expandafter!\expandafter-\expandafter1\expandafter [\the\numexpr #4+\xint_c_viii]}% }% -\def\xintFloatSqrt {\romannumeral0\xintfloatsqrt }% -\def\xintfloatsqrt #1{\XINT_flsqrt_chkopt \xintfloat #1\xint_relax }% -\def\XINTinFloatSqrt {\romannumeral0\XINTinfloatsqrt }% -\def\XINTinfloatsqrt #1{\XINT_flsqrt_chkopt \XINTinfloat #1\xint_relax }% -\def\XINT_flsqrt_chkopt #1#2% +\def\xintFloatPFactorial {\romannumeral0\xintfloatpfactorial}% +\def\xintfloatpfactorial #1{\XINT_flpfac_chkopt \xintfloat #1\xint_relax }% +\def\XINTinFloatPFactorial {\romannumeral0\XINTinfloatpfactorial }% +\def\XINTinfloatpfactorial #1{\XINT_flpfac_chkopt \XINTinfloat #1\xint_relax }% +\def\XINT_flpfac_chkopt #1#2% {% - \ifx [#2\expandafter\XINT_flsqrt_opt - \else\expandafter\XINT_flsqrt_noopt - \fi #1#2% + \ifx [#2\expandafter\XINT_flpfac_opt + \else\expandafter\XINT_flpfac_noopt + \fi + #1#2% }% -\def\XINT_flsqrt_noopt #1#2\xint_relax +\def\XINT_flpfac_noopt #1#2\xint_relax #3% {% - #1[\XINTdigits]{\XINT_FL_sqrt \XINTdigits {#2}}% + \expandafter\XINT_FL_pfac_fork + \the\numexpr \xintNum{#2}\expandafter.% + \the\numexpr \xintNum{#3}.\xint_c_i{\XINTdigits}{#1[\XINTdigits]}% }% -\def\XINT_flsqrt_opt #1[\xint_relax #2]#3% +\def\XINT_flpfac_opt #1[\xint_relax #2]% {% - #1[#2]{\XINT_FL_sqrt {#2}{#3}}% + \expandafter\XINT_flpfac_opt_b\the\numexpr #2.#1% }% -\def\XINT_FL_sqrt #1% +\def\XINT_flpfac_opt_b #1.#2#3#4% {% - \ifnum\numexpr #1<\xint_c_xviii - \xint_afterfi {\XINT_FL_sqrt_a\xint_c_xviii}% - \else - \xint_afterfi {\XINT_FL_sqrt_a {#1+\xint_c_i}}% - \fi + \expandafter\XINT_FL_pfac_fork + \the\numexpr \xintNum{#3}\expandafter.% + \the\numexpr \xintNum{#4}.\xint_c_i{#1}{#2[#1]}% }% -\def\XINT_FL_sqrt_a #1#2% +\def\XINT_FL_pfac_fork #1#2.#3.% {% - \expandafter\XINT_FL_sqrt_checkifzeroorneg - \romannumeral0\XINTinfloat [#1]{#2}% + \if-#1\xint_dothis\XINT_FL_pfac_outofrange\fi + \ifnum #1#2=#3 \xint_dothis\XINT_FL_pfac_one\fi + \ifnum #1#2>#3 \xint_dothis\XINT_FL_pfac_outofrange\fi + \ifnum #3>\xint_c_x^viii_mone + \xint_dothis\XINT_FL_pfac_outofrange\fi + \xint_orthat \XINT_FL_pfac_increaseP #1#2.#3.% }% -\def\XINT_FL_sqrt_checkifzeroorneg #1% +\def\XINT_FL_pfac_outofrange #1.#2.#3#4#5{\xintError:OutOfRangePFac #5{0/1[0]}}% +\def\XINT_FL_pfac_one #1.#2.#3#4#5{#5{1/1[0]}}% +\def\XINT_FL_pfac_increaseP #1.#2.#3#4% {% - \xint_UDzerominusfork - #1-\XINT_FL_sqrt_iszero - 0#1\XINT_FL_sqrt_isneg - 0-{\XINT_FL_sqrt_b #1}% - \krof + \expandafter\XINT_FL_pfac_a + \the\numexpr \xint_c_viii*((\xint_c_iv+#4+\expandafter + \XINT_FL_fac_countdigits\the\numexpr (#2-#1-\xint_c_i)% + /\ifnum #2>\xint_c_x^iv #3\else(#3*\xint_c_ii)\fi\relax + 87654321\Z)/\xint_c_viii).#1.#2.% }% -\def\XINT_FL_sqrt_iszero #1[#2]{0[0]}% -\def\XINT_FL_sqrt_isneg #1[#2]{\xintError:RootOfNegative 0[0]}% -\def\XINT_FL_sqrt_b #1[#2]% +\def\XINT_FL_pfac_a #1.#2.#3.% {% - \ifodd #2 - \xint_afterfi{\XINT_FL_sqrt_c 01}% - \else - \xint_afterfi{\XINT_FL_sqrt_c {}0}% - \fi - {#1}{#2}% + \expandafter\XINT_FL_pfac_b\the\numexpr \xint_c_i+#2\expandafter.% + \the\numexpr#3\expandafter.% + \romannumeral0\XINT_FL_pfac_addzeroes #1.100000001!1\Z![-#1]% }% -\def\XINT_FL_sqrt_c #1#2#3#4% +\def\XINT_FL_pfac_addzeroes #1.% {% - \expandafter\XINT_flsqrt\expandafter {\the\numexpr #4-#2}{#3#1}% + \ifnum #1=\xint_c_viii \expandafter\XINT_FL_pfac_addzeroes_exit\fi + \expandafter\XINT_FL_pfac_addzeroes\the\numexpr #1-\xint_c_viii.100000000!% }% -\def\XINT_flsqrt #1#2% +\def\XINT_FL_pfac_addzeroes_exit #1.{ }% +\def\XINT_FL_pfac_b #1.% {% - \expandafter\XINT_sqrt_a - \expandafter{\romannumeral0\xintlength {#2}}\XINT_flsqrt_big_d {#2}{#1}% + \ifnum #1>9999 \xint_dothis\XINT_FL_pfac_vbigloop \fi + \ifnum #1>463 \xint_dothis\XINT_FL_pfac_bigloop \fi + \ifnum #1>98 \xint_dothis\XINT_FL_pfac_medloop \fi + \xint_orthat\XINT_FL_pfac_smallloop #1.% }% -\def\XINT_flsqrt_big_d #1#2% +\def\XINT_FL_pfac_smallloop #1.#2.% {% - \ifodd #2 - \expandafter\expandafter\expandafter\XINT_flsqrt_big_eB - \else - \expandafter\expandafter\expandafter\XINT_flsqrt_big_eA - \fi - \expandafter {\the\numexpr (#2-\xint_c_i)/\xint_c_ii }{#1}% + \ifcase\numexpr #2-#1\relax + \expandafter\XINT_FL_pfac_end_ + \or \expandafter\XINT_FL_pfac_end_i + \or \expandafter\XINT_FL_pfac_end_ii + \or \expandafter\XINT_FL_pfac_end_iii + \else\expandafter\XINT_FL_pfac_smallloop_a + \fi #1.#2.% }% -\def\XINT_flsqrt_big_eA #1#2#3% +\def\XINT_FL_pfac_smallloop_a #1.#2.% {% - \XINT_flsqrt_big_eA_a #3\Z {#2}{#1}{#3}% + \expandafter\XINT_FL_pfac_smallloop_b + \the\numexpr #1+\xint_c_iv\expandafter.% + \the\numexpr #2\expandafter.% + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% }% -\def\XINT_flsqrt_big_eA_a #1#2#3#4#5#6#7#8#9\Z +\def\XINT_FL_pfac_smallloop_b #1.% {% - \XINT_flsqrt_big_eA_b {#1#2#3#4#5#6#7#8}% + \ifnum #1>98 \expandafter\XINT_FL_pfac_medloop \else + \expandafter\XINT_FL_pfac_smallloop \fi #1.% }% -\def\XINT_flsqrt_big_eA_b #1#2% +\def\XINT_FL_pfac_medloop #1.#2.% {% - \expandafter\XINT_flsqrt_big_f - \romannumeral0\XINT_flsqrt_small_e {#2001}{#1}% + \ifcase\numexpr #2-#1\relax + \expandafter\XINT_FL_pfac_end_ + \or \expandafter\XINT_FL_pfac_end_i + \or \expandafter\XINT_FL_pfac_end_ii + \else\expandafter\XINT_FL_pfac_medloop_a + \fi #1.#2.% }% -\def\XINT_flsqrt_big_eB #1#2#3% +\def\XINT_FL_pfac_medloop_a #1.#2.% {% - \XINT_flsqrt_big_eB_a #3\Z {#2}{#1}{#3}% + \expandafter\XINT_FL_pfac_medloop_b + \the\numexpr #1+\xint_c_iii\expandafter.% + \the\numexpr #2\expandafter.% + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% }% -\def\XINT_flsqrt_big_eB_a #1#2#3#4#5#6#7#8#9% +\def\XINT_FL_pfac_medloop_b #1.% {% - \XINT_flsqrt_big_eB_b {#1#2#3#4#5#6#7#8#9}% + \ifnum #1>463 \expandafter\XINT_FL_pfac_bigloop \else + \expandafter\XINT_FL_pfac_medloop \fi #1.% }% -\def\XINT_flsqrt_big_eB_b #1#2\Z #3% +\def\XINT_FL_pfac_bigloop #1.#2.% {% - \expandafter\XINT_flsqrt_big_f - \romannumeral0\XINT_flsqrt_small_e {#30001}{#1}% + \ifcase\numexpr #2-#1\relax + \expandafter\XINT_FL_pfac_end_ + \or \expandafter\XINT_FL_pfac_end_i + \else\expandafter\XINT_FL_pfac_bigloop_a + \fi #1.#2.% }% -\def\XINT_flsqrt_small_e #1#2% +\def\XINT_FL_pfac_bigloop_a #1.#2.% {% - \expandafter\XINT_flsqrt_small_f\expandafter - {\the\numexpr #1*#1-#2-\xint_c_i}{#1}% + \expandafter\XINT_FL_pfac_bigloop_b + \the\numexpr #1+\xint_c_ii\expandafter.% + \the\numexpr #2\expandafter.% + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)!% }% -\def\XINT_flsqrt_small_f #1#2% +\def\XINT_FL_pfac_bigloop_b #1.% {% - \expandafter\XINT_flsqrt_small_g\expandafter - {\the\numexpr (#1+#2)/(2*#2)-\xint_c_i }{#1}{#2}% + \ifnum #1>9999 \expandafter\XINT_FL_pfac_vbigloop \else + \expandafter\XINT_FL_pfac_bigloop \fi #1.% }% -\def\XINT_flsqrt_small_g #1% +\def\XINT_FL_pfac_vbigloop #1.#2.% {% - \ifnum #1>\xint_c_ - \expandafter\XINT_flsqrt_small_h - \else - \expandafter\XINT_flsqrt_small_end - \fi - {#1}% + \ifnum #2=#1 + \expandafter\XINT_FL_pfac_end_ + \else\expandafter\XINT_FL_pfac_vbigloop_a + \fi #1.#2.% +}% +\def\XINT_FL_pfac_vbigloop_a #1.#2.% +{% + \expandafter\XINT_FL_pfac_vbigloop + \the\numexpr #1+\xint_c_i\expandafter.% + \the\numexpr #2\expandafter.% + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr\xint_c_x^viii+#1!% }% -\def\XINT_flsqrt_small_h #1#2#3% +\def\XINT_FL_pfac_end_iii #1.#2.% {% - \expandafter\XINT_flsqrt_small_f\expandafter - {\the\numexpr #2-\xint_c_ii*#1*#3+#1*#1\expandafter}\expandafter - {\the\numexpr #3-#1}% + \expandafter\XINT_FL_fac_out + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)*(#1+\xint_c_iii)!% }% -\def\XINT_flsqrt_small_end #1#2#3% +\def\XINT_FL_pfac_end_ii #1.#2.% {% - \expandafter\space\expandafter - {\the\numexpr \xint_c_i+#3*\xint_c_x^iv- - (#2*\xint_c_x^iv+#3)/(\xint_c_ii*#3)}% + \expandafter\XINT_FL_fac_out + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% }% -\def\XINT_flsqrt_big_f #1% +\def\XINT_FL_pfac_end_i #1.#2.% {% - \expandafter\XINT_flsqrt_big_fa\expandafter - {\romannumeral0\xintiisqr {#1}}{#1}% + \expandafter\XINT_FL_fac_out + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)!% }% -\def\XINT_flsqrt_big_fa #1#2#3#4% +\def\XINT_FL_pfac_end_ #1.#2.% {% - \expandafter\XINT_flsqrt_big_fb\expandafter - {\romannumeral0\XINT_dsx_addzerosnofuss - {\numexpr #3-\xint_c_viii\relax}{#2}}% - {\romannumeral0\xintiisub - {\XINT_dsx_addzerosnofuss - {\numexpr \xint_c_ii*(#3-\xint_c_viii)\relax}{#1}}{#4}}% - {#3}% + \expandafter\XINT_FL_fac_out + \romannumeral0\expandafter\XINT_FL_fac_mul + \the\numexpr \xint_c_x^viii+#1!% }% -\def\XINT_flsqrt_big_fb #1#2% +\def\xintFloatBinomial {\romannumeral0\xintfloatbinomial}% +\def\xintfloatbinomial #1{\XINT_flbinom_chkopt \xintfloat #1\xint_relax }% +\def\XINTinFloatBinomial {\romannumeral0\XINTinfloatbinomial }% +\def\XINTinfloatbinomial #1{\XINT_flbinom_chkopt \XINTinfloat #1\xint_relax }% +\def\XINT_flbinom_chkopt #1#2% {% - \expandafter\XINT_flsqrt_big_g\expandafter {#2}{#1}% + \ifx [#2\expandafter\XINT_flbinom_opt + \else\expandafter\XINT_flbinom_noopt + \fi #1#2% }% -\def\XINT_flsqrt_big_g #1#2% +\def\XINT_flbinom_noopt #1#2\xint_relax #3% {% - \expandafter\XINT_flsqrt_big_j - \romannumeral0\xintiidivision - {#1}{\romannumeral0\XINT_dbl_pos #2\Z}{#2}% + \expandafter\XINT_FL_binom_a + \the\numexpr\xintNum{#2}\expandafter.\the\numexpr\xintNum{#3}.\XINTdigits.#1% }% -\def\XINT_flsqrt_big_j #1% +\def\XINT_flbinom_opt #1[\xint_relax #2]#3#4% {% - \if0\XINT_Sgn #1\Z - \expandafter \XINT_flsqrt_big_end_a - \else \expandafter \XINT_flsqrt_big_k - \fi {#1}% + \expandafter\XINT_FL_binom_a + \the\numexpr\xintNum{#3}\expandafter.\the\numexpr\xintNum{#4}\expandafter.% + \the\numexpr #2.#1% +}% +\def\XINT_FL_binom_a #1.#2.% +{% + \expandafter\XINT_FL_binom_fork \the\numexpr #1-#2.#2.#1.% +}% +\def\XINT_FL_binom_fork #1#2.#3#4.#5.% +{% + \if-#1\xint_dothis \XINT_FL_binom_outofrange\fi + \if-#3\xint_dothis \XINT_FL_binom_outofrange\fi + \if0#1\xint_dothis \XINT_FL_binom_one\fi + \if0#3\xint_dothis \XINT_FL_binom_one\fi + \ifnum #5>\xint_c_x^viii_mone \xint_dothis\XINT_FL_binom_outofrange\fi + \ifnum #1#2>#3#4 \xint_dothis\XINT_FL_binom_ab \fi + \xint_orthat\XINT_FL_binom_aa + #1#2.#3#4.#5.% +}% +\def\XINT_FL_binom_outofrange #1.#2.#3.#4.#5% + {\xintError:OutOfRangeBinomial #5[#4]{0/1[0]}}% +\def\XINT_FL_binom_one #1.#2.#3.#4.#5{#5[#4]{1/1[0]}}% +\def\XINT_FL_binom_aa #1.#2.#3.#4.#5% +{% + #5[#4]{\xintDiv{\XINT_FL_pfac_increaseP + #2.#3.\xint_c_iv{#4+\xint_c_i}{\XINTinfloat[#4+\xint_c_iii]}}% + {\XINT_FL_fac_fork_b + #1.\xint_c_iv{#4+\xint_c_i}\XINT_FL_fac_out{\XINTinfloat[#4+\xint_c_iii]}}}% +}% +\def\XINT_FL_binom_ab #1.#2.#3.#4.#5% +{% + #5[#4]{\xintDiv{\XINT_FL_pfac_increaseP + #1.#3.\xint_c_iv{#4+\xint_c_i}{\XINTinfloat[#4+\xint_c_iii]}}% + {\XINT_FL_fac_fork_b + #2.\xint_c_iv{#4+\xint_c_i}\XINT_FL_fac_out{\XINTinfloat[#4+\xint_c_iii]}}}% +}% +\def\xintFloatSqrt {\romannumeral0\xintfloatsqrt }% +\def\xintfloatsqrt #1{\XINT_flsqrt_chkopt \xintfloat #1\xint_relax }% +\def\XINTinFloatSqrt {\romannumeral0\XINTinfloatsqrt }% +\def\XINTinfloatsqrt #1{\XINT_flsqrt_chkopt \XINTinfloat #1\xint_relax }% +\def\XINT_flsqrt_chkopt #1#2% +{% + \ifx [#2\expandafter\XINT_flsqrt_opt + \else\expandafter\XINT_flsqrt_noopt + \fi #1#2% +}% +\def\XINT_flsqrt_noopt #1#2\xint_relax +{% + \expandafter\XINT_FL_sqrt_a + \romannumeral0\XINTinfloat[\XINTdigits]{#2}\XINTdigits.#1% +}% +\def\XINT_flsqrt_opt #1[\xint_relax #2]%#3% +{% + \expandafter\XINT_flsqrt_opt_a\the\numexpr #2.#1% +}% +\def\XINT_flsqrt_opt_a #1.#2#3% +{% + \expandafter\XINT_FL_sqrt_a\romannumeral0\XINTinfloat[#1]{#3}#1.#2% +}% +\def\XINT_FL_sqrt_a #1% +{% + \xint_UDzerominusfork + #1-\XINT_FL_sqrt_iszero + 0#1\XINT_FL_sqrt_isneg + 0-{\XINT_FL_sqrt_pos #1}% + \krof +}%[ +\def\XINT_FL_sqrt_iszero #1]#2.#3{#3[#2]{0[0]}}% +\def\XINT_FL_sqrt_isneg #1]#2.#3{\xintError:RootOfNegative #3[#2]{0[0]}}% +\def\XINT_FL_sqrt_pos #1[#2]#3.% +{% + \expandafter\XINT_flsqrt + \the\numexpr #3\ifodd #2 \xint_dothis {+\xint_c_iii.(#2+\xint_c_i).0}\fi + \xint_orthat {+\xint_c_ii.#2.{}}#100.#3.% }% -\def\XINT_flsqrt_big_k #1#2#3% +\def\XINT_flsqrt #1.#2.% {% - \expandafter\XINT_flsqrt_big_l\expandafter - {\romannumeral0\xintiisub {#3}{#1}}% - {\romannumeral0\xintiiadd {#2}{\romannumeral0\XINT_sqr #1\Z}}% + \expandafter\XINT_flsqrt_a + \the\numexpr #2/\xint_c_ii-(#1-\xint_c_i)/\xint_c_ii.#1.% }% -\def\XINT_flsqrt_big_l #1#2% +\def\XINT_flsqrt_a #1.#2.#3#4.#5.% {% - \expandafter\XINT_flsqrt_big_g\expandafter - {#2}{#1}% + \expandafter\XINT_flsqrt_b + \the\numexpr (#2-\xint_c_i)/\xint_c_ii\expandafter.% + \romannumeral0\XINT_sqrt_start #2.#4#3.#5.#2.#4#3.#5.#1.% }% -\def\XINT_flsqrt_big_end_a #1#2#3#4#5% +\def\XINT_flsqrt_b #1.#2#3% {% - \expandafter\XINT_flsqrt_big_end_b\expandafter - {\the\numexpr -#4+#5/\xint_c_ii\expandafter}\expandafter - {\romannumeral0\xintiisub - {\XINT_dsx_addzerosnofuss {#4}{#3}}% - {\xintHalf{\xintiiQuo{\XINT_dsx_addzerosnofuss {#4}{#2}}{#3}}}}% + \expandafter\XINT_flsqrt_c + \romannumeral0\xintiisub + {\XINT_dsx_addzerosnofuss {#1}{#2}}% + {\xintiiDivRound{\XINT_dsx_addzerosnofuss {#1}{#3}}{\XINT_dbl_pos#2\Z}}.% }% -\def\XINT_flsqrt_big_end_b #1#2{#2[#1]}% +\def\XINT_flsqrt_c #1.#2.% +{% + \expandafter\XINT_flsqrt_d + \romannumeral0\XINT_split_fromleft_loop #2.{}#1\W\W\W\W\W\W\W\W\Z +}% +\def\XINT_flsqrt_d #1.#2#3.% +{% + \ifnum #2=\xint_c_v + \expandafter\XINT_flsqrt_f\else\expandafter\XINT_flsqrt_finish\fi + #2#3.#1.% +}% +\def\XINT_flsqrt_finish #1#2.#3.#4.#5.#6.#7.#8{#8[#6]{#3#1[#7]}}% +\def\XINT_flsqrt_f 5#1.% + {\xintiiifGt{\xintiNum{#1}}{2}{\XINT_flsqrt_finish 5.}{\XINT_flsqrt_again}}% +\def\XINT_flsqrt_again #1.#2.% +{% + \expandafter\XINT_flsqrt_again_a\the\numexpr #2+\xint_c_viii.% +}% +\def\XINT_flsqrt_again_a #1.#2.#3.% +{% + \expandafter\XINT_flsqrt_b + \the\numexpr (#1-\xint_c_i)/\xint_c_ii\expandafter.% + \romannumeral0\XINT_sqrt_start #1.#200000000.#3.% + #1.#200000000.#3.% +}% +\def\xintFloatE {\romannumeral0\xintfloate }% +\def\xintfloate #1{\XINT_floate_chkopt #1\xint_relax }% +\def\XINT_floate_chkopt #1% +{% + \ifx [#1\expandafter\XINT_floate_opt + \else\expandafter\XINT_floate_noopt + \fi #1% +}% +\def\XINT_floate_noopt #1\xint_relax +{% + \expandafter\XINT_floate_a\expandafter\XINTdigits + \romannumeral0\XINT_infrac {#1}% +}% +\def\XINT_floate_opt [\xint_relax #1]#2% +{% + \expandafter\XINT_floate_a\expandafter + {\the\numexpr #1\expandafter}\romannumeral0\XINT_infrac {#2}% +}% +\def\XINT_floate_a #1#2#3#4#5% +{% + \expandafter\XINT_float_a\the\numexpr#1\expandafter.% + \expandafter{\the\numexpr #2+#5}{#3}{#4}\XINT_float_Q +}% +\def\XINTinFloatE {\romannumeral0\XINTinfloate }% +\def\XINTinfloate + {\expandafter\XINT_infloate\romannumeral0\XINTinfloat [\XINTdigits]}% +\def\XINT_infloate #1[#2]#3% + {\expandafter\XINT_infloate_end\the\numexpr #3+#2.{#1}}% +\def\XINT_infloate_end #1.#2{ #2[#1]}% +\def\XINTinFloatMod {\romannumeral0\XINTinfloatmod [\XINTdigits]}% +\def\XINTinfloatmod [#1]#2#3{\expandafter\XINT_infloatmod\expandafter + {\romannumeral0\XINTinfloat[#1]{#2}}% + {\romannumeral0\XINTinfloat[#1]{#3}}{#1}}% +\def\XINT_infloatmod #1#2{\expandafter\XINT_infloatmod_a\expandafter {#2}{#1}}% +\def\XINT_infloatmod_a #1#2#3{\XINTinfloat [#3]{\xintMod {#2}{#1}}}% \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 874385ef298..78537efcf48 100644 --- a/Master/texmf-dist/tex/generic/xint/xintgcd.sty +++ b/Master/texmf-dist/tex/generic/xint/xintgcd.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintgcd: Euclidean algorithm with xint package %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintgcd}% - [2015/11/22 v1.2e Euclide algorithm with xint package (jfB)]% + [2016/03/12 1.2f Euclide algorithm with xint package (JFB)]% \def\xintGCD {\romannumeral0\xintgcd }% \def\xintgcd #1% {% diff --git a/Master/texmf-dist/tex/generic/xint/xintkernel.sty b/Master/texmf-dist/tex/generic/xint/xintkernel.sty index 79a9bebef7d..9a001625dae 100644 --- a/Master/texmf-dist/tex/generic/xint/xintkernel.sty +++ b/Master/texmf-dist/tex/generic/xint/xintkernel.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintkernel: Paraphernalia for the xint packages %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -156,7 +156,7 @@ \fi \XINT_providespackage \ProvidesPackage {xintkernel}% - [2015/11/22 v1.2e Paraphernalia for the xint packages (jfB)]% + [2016/03/12 1.2f Paraphernalia for the xint packages (JFB)]% \chardef\xint_c_ 0 \chardef\xint_c_i 1 \chardef\xint_c_ii 2 @@ -240,11 +240,11 @@ \long\def\xint_gob_til_xint_relax #1\xint_relax {}% \long\def\xint_afterfi #1#2\fi {\fi #1}% \long\def\xint_bye #1\xint_bye {}% -\long\def\xint_dothis #1#2\xint_orthat #3{\fi #1}% v1.1 +\long\def\xint_dothis #1#2\xint_orthat #3{\fi #1}% 1.1 \let\xint_orthat \xint_firstofone \long\def\xintdothis #1#2\xintorthat #3{\fi #1}% \let\xintorthat \xint_firstofone -\def\xint_zapspaces #1 #2{#1#2\xint_zapspaces }% v1.1 +\def\xint_zapspaces #1 #2{#1#2\xint_zapspaces }% 1.1 \def\xint_zapspaces_o #1{\expandafter\xint_zapspaces#1 \xint_gobble_i}% \def\xintodef #1{\expandafter\def\expandafter#1\expandafter }% \def\xintoodef #1{\expandafter\expandafter\expandafter\def diff --git a/Master/texmf-dist/tex/generic/xint/xintseries.sty b/Master/texmf-dist/tex/generic/xint/xintseries.sty index cdaf499c432..b9523bf4231 100644 --- a/Master/texmf-dist/tex/generic/xint/xintseries.sty +++ b/Master/texmf-dist/tex/generic/xint/xintseries.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintseries: Expandable partial sums with xint package %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintseries}% - [2015/11/22 v1.2e Expandable partial sums with xint package (jfB)]% + [2016/03/12 1.2f Expandable partial sums with xint package (JFB)]% \def\xintSeries {\romannumeral0\xintseries }% \def\xintseries #1#2% {% diff --git a/Master/texmf-dist/tex/generic/xint/xinttools.sty b/Master/texmf-dist/tex/generic/xint/xinttools.sty index 80e85234943..8fb291a28cd 100644 --- a/Master/texmf-dist/tex/generic/xint/xinttools.sty +++ b/Master/texmf-dist/tex/generic/xint/xinttools.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle v1.2e 2015/11/22 -%% Copyright (C) 2013-2015 by Jean-Francois Burnol +%% The xint bundle 1.2f 2016/03/12 +%% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xinttools: Expandable and non-expandable utilities %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xinttools}% - [2015/11/22 v1.2e Expandable and non-expandable utilities (jfB)]% + [2016/03/12 1.2f Expandable and non-expandable utilities (JFB)]% \newtoks\XINT_toks \xint_firstofone{\let\XINT_sptoken= } %<- space here! \def\xintgodef {\global\xintodef }% |