%% %% This is file `xint.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% xint.dtx (with options: `xint') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from xint.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file xint.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- %% The xint bundle 1.4k 2022/05/18 %% Copyright (C) 2013-2022 by Jean-Francois Burnol %% xint: Expandable operations on big integers %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode64=11 % @ \catcode35=6 % # \catcode44=12 % , \catcode45=12 % - \catcode46=12 % . \catcode58=12 % : \let\z\endgroup \expandafter\let\expandafter\x\csname ver@xint.sty\endcsname \expandafter\let\expandafter\w\csname ver@xintcore.sty\endcsname \expandafter \ifx\csname PackageInfo\endcsname\relax \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% \else \def\y#1#2{\PackageInfo{#1}{#2}}% \fi \expandafter \ifx\csname numexpr\endcsname\relax \y{xint}{\numexpr not available, aborting input}% \aftergroup\endinput \else \ifx\x\relax % plain-TeX, first loading of xintcore.sty \ifx\w\relax % but xintkernel.sty not yet loaded. \def\z{\endgroup\input xintcore.sty\relax}% \fi \else \def\empty {}% \ifx\x\empty % LaTeX, first loading, % variable is initialized, but \ProvidesPackage not yet seen \ifx\w\relax % xintcore.sty not yet loaded. \def\z{\endgroup\RequirePackage{xintcore}}% \fi \else \aftergroup\endinput % xint already loaded. \fi \fi \fi \z% \XINTsetupcatcodes% defined in xintkernel.sty (loaded by xintcore.sty) \XINT_providespackage \ProvidesPackage{xint}% [2022/05/18 v1.4k 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}% \long\def\xint_stop_atfirstofthree #1#2#3{ #1}% \long\def\xint_stop_atsecondofthree #1#2#3{ #2}% \long\def\xint_stop_atthirdofthree #1#2#3{ #3}% \ifdefined\xint_texuniformdeviate \unless\ifdefined\xint_c_nine_x^viii \csname newcount\endcsname\xint_c_nine_x^viii \xint_c_nine_x^viii 900000000 \fi \fi \def\xintiLen {\romannumeral0\xintilen }% \def\xintilen #1{\def\xintilen ##1% {% \expandafter#1\the\numexpr \expandafter\XINT_len_fork\romannumeral0\xintinum{##1}% \xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye\relax }}\xintilen{ }% \def\xintLen {\romannumeral0\xintlen }% \let\xintlen\xintilen \def\XINT_len_fork #1% {% \expandafter\XINT_length_loop\xint_UDsignfork#1{}-#1\krof }% \def\xintiiLogTen {\the\numexpr\xintiilogten }% \def\xintiilogten #1% {% \expandafter\XINT_iilogten\romannumeral`&&@#1% \xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye \relax }% \def\XINT_iilogten #1{\if#10-"7FFF8000\fi -1+% \expandafter\XINT_length_loop\xint_UDsignfork#1{}-#1\krof}% \def\xintReverseDigits {\romannumeral0\xintreversedigits }% \def\xintreversedigits #1% {% \expandafter\XINT_revdigits\romannumeral`&&@#1% {\XINT_microrevsep_end\W}\XINT_microrevsep_end \XINT_microrevsep_end\XINT_microrevsep_end \XINT_microrevsep_end\XINT_microrevsep_end \XINT_microrevsep_end\XINT_microrevsep_end\XINT_microrevsep_end\Z 1\Z!1\R!1\R!1\R!1\R!1\R!1\R!1\R!1\R!\W }% \def\XINT_revdigits #1% {% \xint_UDsignfork #1{\expandafter-\romannumeral0\XINT_revdigits_a}% -{\XINT_revdigits_a #1}% \krof }% \def\XINT_revdigits_a {% \expandafter\XINT_revdigits_b\expandafter{\expandafter}% \the\numexpr\XINT_microrevsep }% \def\XINT_microrevsep #1#2#3#4#5#6#7#8#9% {% 1#9#8#7#6#5#4#3#2#1\expandafter!\the\numexpr\XINT_microrevsep }% \def\XINT_microrevsep_end #1\W #2\expandafter #3\Z{\relax#2!}% \def\XINT_revdigits_b #11#2!1#3!1#4!1#5!1#6!1#7!1#8!1#9!% {% \xint_gob_til_R #9\XINT_revdigits_end\R \XINT_revdigits_b {#9#8#7#6#5#4#3#2#1}% }% \def\XINT_revdigits_end#1{% \def\XINT_revdigits_end\R\XINT_revdigits_b ##1##2\W {\expandafter#1\xint_gob_til_Z ##1}% }\XINT_revdigits_end{ }% \let\xintRev\xintReverseDigits \def\xintiiE {\romannumeral0\xintiie }% \def\xintiie #1#2% {\expandafter\XINT_iie_fork\the\numexpr #2\expandafter.\romannumeral`&&@#1;}% \def\XINT_iie_fork #1% {% \xint_UDsignfork #1\XINT_iie_neg -\XINT_iie_a \krof #1% }% \def\XINT_iie_a #1.% {\expandafter\XINT_dsx_append\romannumeral\XINT_rep #1\endcsname 0.}% \def\XINT_iie_neg #1.#2;{ #2}% \def\xintDecSplit {\romannumeral0\xintdecsplit }% \def\xintdecsplit #1#2% {% \expandafter\XINT_split_finish \romannumeral0\expandafter\XINT_split_xfork \the\numexpr #1\expandafter.\romannumeral`&&@#2% \xint_bye2345678\xint_bye..% }% \def\XINT_split_finish #1.#2.{{#1}{#2}}% \def\XINT_split_xfork #1% {% \xint_UDzerominusfork #1-\XINT_split_zerosplit 0#1\XINT_split_fromleft 0-{\XINT_split_fromright #1}% \krof }% \def\XINT_split_zerosplit .#1\xint_bye#2\xint_bye..{ #1..}% \def\XINT_split_fromleft {\expandafter\XINT_split_fromleft_a\the\numexpr\xint_c_viii-}% \def\XINT_split_fromleft_a #1% {% \xint_UDsignfork #1\XINT_split_fromleft_b -{\XINT_split_fromleft_end_a #1}% \krof }% \def\XINT_split_fromleft_b #1.#2#3#4#5#6#7#8#9% {% \expandafter\XINT_split_fromleft_clean \the\numexpr1#2#3#4#5#6#7#8#9\expandafter \XINT_split_fromleft_a\the\numexpr\xint_c_viii-#1.% }% \def\XINT_split_fromleft_end_a #1.% {% \expandafter\XINT_split_fromleft_clean \the\numexpr1\csname XINT_split_fromleft_end#1\endcsname }% \def\XINT_split_fromleft_clean 1{ }% \expandafter\def\csname XINT_split_fromleft_end7\endcsname #1% {#1\XINT_split_fromleft_end_b}% \expandafter\def\csname XINT_split_fromleft_end6\endcsname #1#2% {#1#2\XINT_split_fromleft_end_b}% \expandafter\def\csname XINT_split_fromleft_end5\endcsname #1#2#3% {#1#2#3\XINT_split_fromleft_end_b}% \expandafter\def\csname XINT_split_fromleft_end4\endcsname #1#2#3#4% {#1#2#3#4\XINT_split_fromleft_end_b}% \expandafter\def\csname XINT_split_fromleft_end3\endcsname #1#2#3#4#5% {#1#2#3#4#5\XINT_split_fromleft_end_b}% \expandafter\def\csname XINT_split_fromleft_end2\endcsname #1#2#3#4#5#6% {#1#2#3#4#5#6\XINT_split_fromleft_end_b}% \expandafter\def\csname XINT_split_fromleft_end1\endcsname #1#2#3#4#5#6#7% {#1#2#3#4#5#6#7\XINT_split_fromleft_end_b}% \expandafter\def\csname XINT_split_fromleft_end0\endcsname #1#2#3#4#5#6#7#8% {#1#2#3#4#5#6#7#8\XINT_split_fromleft_end_b}% \def\XINT_split_fromleft_end_b #1\xint_bye#2\xint_bye.{.#1}% puis . \def\XINT_split_fromright #1.#2\xint_bye {% \expandafter\XINT_split_fromright_a \the\numexpr#1-\numexpr\XINT_length_loop #2\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint:\xint: \xint_c_viii\xint_c_vii\xint_c_vi\xint_c_v \xint_c_iv\xint_c_iii\xint_c_ii\xint_c_i\xint_c_\xint_bye .#2\xint_bye }% \def\XINT_split_fromright_a #1% {% \xint_UDsignfork #1\XINT_split_fromleft -\XINT_split_fromright_Lempty \krof }% \def\XINT_split_fromright_Lempty #1.#2\xint_bye#3..{.#2.}% \def\xintDecSplitL {\romannumeral0\xintdecsplitl }% \def\xintdecsplitl #1#2% {% \expandafter\XINT_splitl_finish \romannumeral0\expandafter\XINT_split_xfork \the\numexpr #1\expandafter.\romannumeral`&&@#2% \xint_bye2345678\xint_bye..% }% \def\XINT_splitl_finish #1.#2.{ #1}% \def\xintDecSplitR {\romannumeral0\xintdecsplitr }% \def\xintdecsplitr #1#2% {% \expandafter\XINT_splitr_finish \romannumeral0\expandafter\XINT_split_xfork \the\numexpr #1\expandafter.\romannumeral`&&@#2% \xint_bye2345678\xint_bye..% }% \def\XINT_splitr_finish #1.#2.{ #2}% \def\xintDSHr {\romannumeral0\xintdshr }% \def\xintdshr #1#2% {% \expandafter\XINT_dshr_fork\the\numexpr#1\expandafter.\romannumeral`&&@#2;% }% \def\XINT_dshr_fork #1% {% \xint_UDzerominusfork 0#1\XINT_dshr_xzeroorneg #1-\XINT_dshr_xzeroorneg 0-\XINT_dshr_xpositive \krof #1% }% \def\XINT_dshr_xzeroorneg #1;{ 0}% \def\XINT_dshr_xpositive {% \expandafter\xint_stop_atsecondoftwo\romannumeral0\XINT_dsx_xisPos }% \def\xintDSH {\romannumeral0\xintdsh }% \def\xintdsh #1#2% {% \expandafter\XINT_dsh_fork\the\numexpr#1\expandafter.\romannumeral`&&@#2;% }% \def\XINT_dsh_fork #1% {% \xint_UDzerominusfork #1-\XINT_dsh_xiszero 0#1\XINT_dsx_xisNeg_checkA 0-{\XINT_dsh_xisPos #1}% \krof }% \def\XINT_dsh_xiszero #1.#2;{ #2}% \def\XINT_dsh_xisPos {% \expandafter\xint_stop_atfirstoftwo\romannumeral0\XINT_dsx_xisPos }% \def\xintDSx {\romannumeral0\xintdsx }% \def\xintdsx #1#2% {% \expandafter\XINT_dsx_fork\the\numexpr#1\expandafter.\romannumeral`&&@#2;% }% \def\XINT_dsx_fork #1% {% \xint_UDzerominusfork #1-\XINT_dsx_xisZero 0#1\XINT_dsx_xisNeg_checkA 0-{\XINT_dsx_xisPos #1}% \krof }% \def\XINT_dsx_xisZero #1.#2;{{#2}{0}}% \def\XINT_dsx_xisNeg_checkA #1.#2% {% \xint_gob_til_zero #2\XINT_dsx_xisNeg_Azero 0% \expandafter\XINT_dsx_append\romannumeral\XINT_rep #1\endcsname 0.#2% }% \def\XINT_dsx_xisNeg_Azero #1;{ 0}% \def\XINT_dsx_addzeros #1% {\expandafter\XINT_dsx_append\romannumeral\XINT_rep#1\endcsname0.}% \def\XINT_dsx_addzerosnofuss #1% {\expandafter\XINT_dsx_append\romannumeral\xintreplicate{#1}0.}% \def\XINT_dsx_append #1.#2;{ #2#1}% \def\XINT_dsx_xisPos #1.#2% {% \xint_UDzerominusfork #2-\XINT_dsx_AisZero 0#2\XINT_dsx_AisNeg 0-\XINT_dsx_AisPos \krof #1.#2% }% \def\XINT_dsx_AisZero #1;{{0}{0}}% \def\XINT_dsx_AisNeg #1.-#2;% {% \expandafter\XINT_dsx_AisNeg_checkiffirstempty \romannumeral0\XINT_split_xfork #1.#2\xint_bye2345678\xint_bye..% }% \def\XINT_dsx_AisNeg_checkiffirstempty #1% {% \xint_gob_til_dot #1\XINT_dsx_AisNeg_finish_zero.% \XINT_dsx_AisNeg_finish_notzero #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.#2.% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {#2}}{-#1}% }% \def\XINT_dsx_AisPos #1.#2;% {% \expandafter\XINT_dsx_AisPos_finish \romannumeral0\XINT_split_xfork #1.#2\xint_bye2345678\xint_bye..% }% \def\XINT_dsx_AisPos_finish #1.#2.% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {#2}}% {\romannumeral0\XINT_num {#1}}% }% \def\XINT_dsx_end #1#2{\expandafter{#2}{#1}}% \def\xintiiEq #1#2{\romannumeral0\xintiiifeq{#1}{#2}{1}{0}}% \def\xintiiNotEq #1#2{\romannumeral0\xintiiifeq {#1}{#2}{0}{1}}% \def\xintiiGeq {\romannumeral0\xintiigeq }% \def\xintiigeq #1{\expandafter\XINT_iigeq\romannumeral`&&@#1\xint:}% \def\XINT_iigeq #1#2\xint:#3% {% \expandafter\XINT_geq_fork\expandafter #1\romannumeral`&&@#3\xint:#2\xint: }% \def\XINT_geq #1#2\xint:#3% {% \expandafter\XINT_geq_fork\expandafter #1\romannumeral0\xintnum{#3}\xint:#2\xint: }% \def\XINT_geq_fork #1#2% {% \xint_UDzerofork #1\XINT_geq_firstiszero #2\XINT_geq_secondiszero 0{}% \krof \xint_UDsignsfork #1#2\XINT_geq_minusminus #1-\XINT_geq_minusplus #2-\XINT_geq_plusminus --\XINT_geq_plusplus \krof #1#2% }% \def\XINT_geq_firstiszero #1\krof 0#2#3\xint:#4\xint: {\xint_UDzerofork #2{ 1}0{ 0}\krof }% \def\XINT_geq_secondiszero #1\krof #20#3\xint:#4\xint:{ 1}% \def\XINT_geq_plusminus #1-{\XINT_geq_plusplus #1{}}% \def\XINT_geq_minusplus -#1{\XINT_geq_plusplus {}#1}% \def\XINT_geq_minusminus --{\XINT_geq_plusplus {}{}}% \def\XINT_geq_plusplus {\expandafter\XINT_geq_finish\romannumeral0\XINT_cmp_plusplus}% \def\XINT_geq_finish #1{\if-#1\expandafter\XINT_geq_no \else\expandafter\XINT_geq_yes\fi}% \def\XINT_geq_no 1{ 0}% \def\XINT_geq_yes { 1}% \def\xintiiGt #1#2{\romannumeral0\xintiiifgt{#1}{#2}{1}{0}}% \def\xintiiLt #1#2{\romannumeral0\xintiiiflt{#1}{#2}{1}{0}}% \def\xintiiGtorEq #1#2{\romannumeral0\xintiiiflt {#1}{#2}{0}{1}}% \def\xintiiLtorEq #1#2{\romannumeral0\xintiiifgt {#1}{#2}{0}{1}}% \def\xintiiIsZero {\romannumeral0\xintiiiszero }% \def\xintiiiszero #1{\if0\xintiiSgn{#1}\xint_afterfi{ 1}\else\xint_afterfi{ 0}\fi}% \def\xintiiIsNotZero {\romannumeral0\xintiiisnotzero }% \def\xintiiisnotzero #1{\if0\xintiiSgn{#1}\xint_afterfi{ 0}\else\xint_afterfi{ 1}\fi}% \def\xintiiIsOne {\romannumeral0\xintiiisone }% \def\xintiiisone #1{\expandafter\XINT_isone\romannumeral`&&@#1XY}% \def\XINT_isone #1#2#3Y% {% \unless\if#2X\xint_dothis{ 0}\fi \unless\if#11\xint_dothis{ 0}\fi \xint_orthat{ 1}% }% \def\XINT_isOne #1{\XINT_is_One#1XY}% \def\XINT_is_One #1#2#3Y% {% \unless\if#2X\xint_dothis0\fi \unless\if#11\xint_dothis0\fi \xint_orthat1% }% \def\xintiiOdd {\romannumeral0\xintiiodd }% \def\xintiiodd #1% {% \ifodd\xintLDg{#1} %<- intentional space \xint_afterfi{ 1}% \else \xint_afterfi{ 0}% \fi }% \def\xintiiEven {\romannumeral0\xintiieven }% \def\xintiieven #1% {% \ifodd\xintLDg{#1} %<- intentional space \xint_afterfi{ 0}% \else \xint_afterfi{ 1}% \fi }% \def\xintiiMON {\romannumeral0\xintiimon }% \def\xintiimon #1% {% \ifodd\xintLDg {#1} %<- intentional space \xint_afterfi{ -1}% \else \xint_afterfi{ 1}% \fi }% \def\xintiiMMON {\romannumeral0\xintiimmon }% \def\xintiimmon #1% {% \ifodd\xintLDg {#1} %<- intentional space \xint_afterfi{ 1}% \else \xint_afterfi{ -1}% \fi }% \def\xintSgnFork {\romannumeral0\xintsgnfork }% \def\xintsgnfork #1% {% \ifcase #1 \expandafter\xint_stop_atsecondofthree \or\expandafter\xint_stop_atthirdofthree \else\expandafter\xint_stop_atfirstofthree \fi }% \def\xintiiifSgn {\romannumeral0\xintiiifsgn }% \def\xintiiifsgn #1% {% \ifcase \xintiiSgn{#1} \expandafter\xint_stop_atsecondofthree \or\expandafter\xint_stop_atthirdofthree \else\expandafter\xint_stop_atfirstofthree \fi }% \def\xintiiifCmp {\romannumeral0\xintiiifcmp }% \def\xintiiifcmp #1#2% {% \ifcase\xintiiCmp {#1}{#2} \expandafter\xint_stop_atsecondofthree \or\expandafter\xint_stop_atthirdofthree \else\expandafter\xint_stop_atfirstofthree \fi }% \def\xintiiifEq {\romannumeral0\xintiiifeq }% \def\xintiiifeq #1#2% {% \if0\xintiiCmp{#1}{#2}% \expandafter\xint_stop_atfirstoftwo \else\expandafter\xint_stop_atsecondoftwo \fi }% \def\xintiiifGt {\romannumeral0\xintiiifgt }% \def\xintiiifgt #1#2% {% \if1\xintiiCmp{#1}{#2}% \expandafter\xint_stop_atfirstoftwo \else\expandafter\xint_stop_atsecondoftwo \fi }% \def\xintiiifLt {\romannumeral0\xintiiiflt }% \def\xintiiiflt #1#2% {% \ifnum\xintiiCmp{#1}{#2}<\xint_c_ \expandafter\xint_stop_atfirstoftwo \else \expandafter\xint_stop_atsecondoftwo \fi }% \def\xintiiifZero {\romannumeral0\xintiiifzero }% \def\xintiiifzero #1% {% \if0\xintiiSgn{#1}% \expandafter\xint_stop_atfirstoftwo \else \expandafter\xint_stop_atsecondoftwo \fi }% \def\xintiiifNotZero {\romannumeral0\xintiiifnotzero }% \def\xintiiifnotzero #1% {% \if0\xintiiSgn{#1}% \expandafter\xint_stop_atsecondoftwo \else \expandafter\xint_stop_atfirstoftwo \fi }% \def\xintiiifOne {\romannumeral0\xintiiifone }% \def\xintiiifone #1% {% \if1\xintiiIsOne{#1}% \expandafter\xint_stop_atfirstoftwo \else \expandafter\xint_stop_atsecondoftwo \fi }% \def\xintiiifOdd {\romannumeral0\xintiiifodd }% \def\xintiiifodd #1% {% \if\xintiiOdd{#1}1% \expandafter\xint_stop_atfirstoftwo \else \expandafter\xint_stop_atsecondoftwo \fi }% \def\xintifTrueAelseB {\romannumeral0\xintiiifnotzero}% \def\xintifFalseAelseB{\romannumeral0\xintiiifzero}% \def\xintNOT{\romannumeral0\xintiiiszero}% \def\xintAND {\romannumeral0\xintand }% \def\xintand #1#2{\if0\xintiiSgn{#1}\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo\fi { 0}{\xintiiisnotzero{#2}}}% \def\xintOR {\romannumeral0\xintor }% \def\xintor #1#2{\if0\xintiiSgn{#1}\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo\fi {\xintiiisnotzero{#2}}{ 1}}% \def\xintXOR {\romannumeral0\xintxor }% \def\xintxor #1#2{\if\xintiiIsZero{#1}\xintiiIsZero{#2}% \xint_afterfi{ 0}\else\xint_afterfi{ 1}\fi }% \def\xintANDof {\romannumeral0\xintandof }% \def\xintandof #1{\expandafter\XINT_andof\romannumeral`&&@#1^}% \def\XINT_ANDof {\romannumeral0\XINT_andof}% \def\XINT_andof #1% {% \xint_gob_til_^ #1\XINT_andof_yes ^% \xintiiifNotZero{#1}\XINT_andof\XINT_andof_no }% \def\XINT_andof_no #1^{ 0}% \def\XINT_andof_yes ^#1\XINT_andof_no{ 1}% \def\xintORof {\romannumeral0\xintorof }% \def\xintorof #1{\expandafter\XINT_orof\romannumeral`&&@#1^}% \def\XINT_ORof {\romannumeral0\XINT_orof}% \def\XINT_orof #1% {% \xint_gob_til_^ #1\XINT_orof_no ^% \xintiiifNotZero{#1}\XINT_orof_yes\XINT_orof }% \def\XINT_orof_yes#1^{ 1}% \def\XINT_orof_no ^#1\XINT_orof{ 0}% \def\xintXORof {\romannumeral0\xintxorof }% \def\xintxorof #1{\expandafter\XINT_xorof\romannumeral`&&@#1^}% \def\XINT_XORof {\romannumeral0\XINT_xorof}% \def\XINT_xorof {\if1\the\numexpr\XINT_xorof_a}% \def\XINT_xorof_a #1% {% \xint_gob_til_^ #1\XINT_xorof_e ^% \xintiiifNotZero{#1}{-}{}\XINT_xorof_a }% \def\XINT_xorof_e ^#1\XINT_xorof_a {1\relax\xint_afterfi{ 0}\else\xint_afterfi{ 1}\fi}% \def\xintiiMax {\romannumeral0\xintiimax }% \def\xintiimax #1% {% \expandafter\xint_iimax \romannumeral`&&@#1\xint: }% \def\xint_iimax #1\xint:#2% {% \expandafter\XINT_max_fork\romannumeral`&&@#2\xint:#1\xint: }% \def\XINT_max_fork #1#2\xint:#3#4\xint: {% \xint_UDsignsfork #1#3\XINT_max_minusminus % A < 0, B < 0 #1-\XINT_max_plusminus % B < 0, A >= 0 #3-\XINT_max_minusplus % A < 0, B >= 0 --{\xint_UDzerosfork #1#3\XINT_max_zerozero % A = B = 0 #10\XINT_max_pluszero % B = 0, A > 0 #30\XINT_max_zeroplus % A = 0, B > 0 00\XINT_max_plusplus % A, B > 0 \krof }% \krof #3#1#2\xint:#4\xint: \expandafter\xint_stop_atfirstoftwo \else \expandafter\xint_stop_atsecondoftwo \fi {#3#4}{#1#2}% }% \def\XINT_max_zerozero #1\fi{\xint_stop_atfirstoftwo }% \def\XINT_max_zeroplus #1\fi{\xint_stop_atsecondoftwo }% \def\XINT_max_pluszero #1\fi{\xint_stop_atfirstoftwo }% \def\XINT_max_minusplus #1\fi{\xint_stop_atsecondoftwo }% \def\XINT_max_plusminus #1\fi{\xint_stop_atfirstoftwo }% \def\XINT_max_plusplus {% \if1\romannumeral0\XINT_geq_plusplus }% \def\XINT_max_minusminus --% {% \unless\if1\romannumeral0\XINT_geq_plusplus{}{}% }% \def\xintiiMin {\romannumeral0\xintiimin }% \def\xintiimin #1% {% \expandafter\xint_iimin \romannumeral`&&@#1\xint: }% \def\xint_iimin #1\xint:#2% {% \expandafter\XINT_min_fork\romannumeral`&&@#2\xint:#1\xint: }% \def\XINT_min_fork #1#2\xint:#3#4\xint: {% \xint_UDsignsfork #1#3\XINT_min_minusminus % A < 0, B < 0 #1-\XINT_min_plusminus % B < 0, A >= 0 #3-\XINT_min_minusplus % A < 0, B >= 0 --{\xint_UDzerosfork #1#3\XINT_min_zerozero % A = B = 0 #10\XINT_min_pluszero % B = 0, A > 0 #30\XINT_min_zeroplus % A = 0, B > 0 00\XINT_min_plusplus % A, B > 0 \krof }% \krof #3#1#2\xint:#4\xint: \expandafter\xint_stop_atsecondoftwo \else \expandafter\xint_stop_atfirstoftwo \fi {#3#4}{#1#2}% }% \def\XINT_min_zerozero #1\fi{\xint_stop_atfirstoftwo }% \def\XINT_min_zeroplus #1\fi{\xint_stop_atfirstoftwo }% \def\XINT_min_pluszero #1\fi{\xint_stop_atsecondoftwo }% \def\XINT_min_minusplus #1\fi{\xint_stop_atfirstoftwo }% \def\XINT_min_plusminus #1\fi{\xint_stop_atsecondoftwo }% \def\XINT_min_plusplus {% \if1\romannumeral0\XINT_geq_plusplus }% \def\XINT_min_minusminus --% {% \unless\if1\romannumeral0\XINT_geq_plusplus{}{}% }% \def\xintiiMaxof {\romannumeral0\xintiimaxof }% \def\xintiimaxof #1{\expandafter\XINT_iimaxof\romannumeral`&&@#1^}% \def\XINT_iiMaxof{\romannumeral0\XINT_iimaxof}% \def\XINT_iimaxof#1% {% \xint_gob_til_^ #1\XINT_iimaxof_empty ^% \expandafter\XINT_iimaxof_loop\romannumeral`&&@#1\xint: }% \def\XINT_iimaxof_empty ^#1\xint:{ 0}% \def\XINT_iimaxof_loop #1\xint:#2% {% \xint_gob_til_^ #2\XINT_iimaxof_e ^% \expandafter\XINT_iimaxof_loop\romannumeral0\xintiimax{#1}{#2}\xint: }% \def\XINT_iimaxof_e ^#1\xintiimax #2#3\xint:{ #2}% \def\xintiiMinof {\romannumeral0\xintiiminof }% \def\xintiiminof #1{\expandafter\XINT_iiminof\romannumeral`&&@#1^}% \def\XINT_iiMinof{\romannumeral0\XINT_iiminof}% \def\XINT_iiminof#1% {% \xint_gob_til_^ #1\XINT_iiminof_empty ^% \expandafter\XINT_iiminof_loop\romannumeral`&&@#1\xint: }% \def\XINT_iiminof_empty ^#1\xint:{ 0}% \def\XINT_iiminof_loop #1\xint:#2% {% \xint_gob_til_^ #2\XINT_iiminof_e ^% \expandafter\XINT_iiminof_loop\romannumeral0\xintiimin{#1}{#2}\xint: }% \def\XINT_iiminof_e ^#1\xintiimin #2#3\xint:{ #2}% \def\xintiiSum {\romannumeral0\xintiisum }% \def\xintiisum #1{\expandafter\XINT_iisum\romannumeral`&&@#1^}% \def\XINT_iiSum{\romannumeral0\XINT_iisum}% \def\XINT_iisum #1% {% \expandafter\XINT_iisum_a\romannumeral`&&@#1\xint: }% \def\XINT_iisum_a #1% {% \xint_gob_til_^ #1\XINT_iisum_empty ^% \XINT_iisum_loop #1% }% \def\XINT_iisum_empty ^#1\xint:{ 0}% \def\XINT_iisum_loop #1#2\xint:#3% {% \expandafter\XINT_iisum_loop_a \expandafter#1\romannumeral`&&@#3\xint:#2\xint:\xint: }% \def\XINT_iisum_loop_a #1#2% {% \xint_gob_til_^ #2\XINT_iisum_loop_end ^% \expandafter\XINT_iisum_loop\romannumeral0\XINT_add_nfork #1#2% }% \def\XINT_iisum_loop_end ^#1\XINT_add_nfork #2#3\xint:#4\xint:\xint:{ #2#4}% \def\xintiiPrd {\romannumeral0\xintiiprd }% \def\xintiiprd #1{\expandafter\XINT_iiprd\romannumeral`&&@#1^}% \def\XINT_iiPrd{\romannumeral0\XINT_iiprd}% \def\XINT_iiprd #1% {% \expandafter\XINT_iiprd_a\romannumeral`&&@#1\xint: }% \def\XINT_iiprd_a #1% {% \xint_gob_til_^ #1\XINT_iiprd_empty ^% \xint_gob_til_zero #1\XINT_iiprd_zero 0% \XINT_iiprd_loop #1% }% \def\XINT_iiprd_empty ^#1\xint:{ 1}% \def\XINT_iiprd_zero 0#1^{ 0}% \def\XINT_iiprd_loop #1#2\xint:#3% {% \expandafter\XINT_iiprd_loop_a \expandafter#1\romannumeral`&&@#3\xint:#2\xint:\xint: }% \def\XINT_iiprd_loop_a #1#2% {% \xint_gob_til_^ #2\XINT_iiprd_loop_end ^% \xint_gob_til_zero #2\XINT_iiprd_zero 0% \expandafter\XINT_iiprd_loop\romannumeral0\XINT_mul_nfork #1#2% }% \def\XINT_iiprd_loop_end ^#1\XINT_mul_nfork #2#3\xint:#4\xint:\xint:{ #2#4}% \def\xintiiSquareRoot {\romannumeral0\xintiisquareroot }% \def\xintiisquareroot #1{\expandafter\XINT_sqrt_checkin\romannumeral`&&@#1\xint:}% \def\XINT_sqrt_checkin #1% {% \xint_UDzerominusfork #1-\XINT_sqrt_iszero 0#1\XINT_sqrt_isneg 0-\XINT_sqrt \krof #1% }% \def\XINT_sqrt_iszero #1\xint:{{1}{1}}% \def\XINT_sqrt_isneg #1\xint: {\XINT_signalcondition{InvalidOperation}% {Square root of negative: #1.}{}{{0}{0}}}% \def\XINT_sqrt #1\xint: {% \expandafter\XINT_sqrt_start\romannumeral0\xintlength {#1}.#1.% }% \def\XINT_sqrt_start #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.% {% \ifodd #1 \expandafter\XINT_sqrt_bO \else \expandafter\XINT_sqrt_bE \fi #1.% }% \def\XINT_sqrt_bE #1.#2#3#4% {% \XINT_sqrt_c {#3#4}#2{#1}#3#4% }% \def\XINT_sqrt_bO #1.#2#3% {% \XINT_sqrt_c #3#2{#1}#3% }% \def\XINT_sqrt_c #1#2% {% \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_small_d #1.#2% {% \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_small_e #1.#2.% {% \expandafter\XINT_sqrt_small_ea\the\numexpr #1*#1-#2.#1.% }% \def\XINT_sqrt_small_ea #1% {% \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_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_ec \the\numexpr (#1-\xint_c_i+#2)/(\xint_c_ii*#2).#1.#2.% }% \def\XINT_sqrt_small_ec #1.#2.#3.% {% \expandafter\XINT_sqrt_small_f \the\numexpr -#2+\xint_c_ii*#3*#1+#1*#1\expandafter.\the\numexpr #3+#1.% }% \def\XINT_sqrt_small_f #1.#2.% {% \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#2.% }% \def\XINT_sqrt_small_h #1.#2.#3.% {% \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% {% \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_eO_a #1.#2;#3#4% {% \expandafter\XINT_sqrt_bigormed_f \romannumeral0\XINT_sqrt_small_e #20000.#3#4.#1;% }% \def\XINT_sqrt_bigormed_f #1#2#3;% {% \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\romannumeral\xintreplicate{#1}0.#1.% }% \def\XINT_sqrt_big_gj #1.#2.#3.#4.#5.% {% \expandafter\XINT_sqrt_big_gk \romannumeral0\xintiidivision {#4#1}% {\XINT_dbl #5\xint_bye2345678\xint_bye*\xint_c_ii\relax}.% #1.#5.#2.#3.% }% \def\XINT_sqrt_big_gk #1#2.#3.#4.% {% \expandafter\XINT_sqrt_big_gl \romannumeral0\xintiiadd {#2#3}{\xintiiSqr{#1}}.% \romannumeral0\xintiisub {#4#3}{#1}.% }% \def\XINT_sqrt_big_gl #1.#2.% {% \expandafter\XINT_sqrt_big_gm #2.#1.% }% \def\XINT_sqrt_big_gm #1.#2.#3.#4.#5.% {% \expandafter\XINT_sqrt_big_gn \romannumeral0\XINT_split_fromleft\xint_c_ii*#3.#5\xint_bye2345678\xint_bye..% #1.#2.#3.#4.% }% \def\XINT_sqrt_big_gn #1.#2.#3.#4.#5.#6.% {% \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_ka #1.#2.#3.#4.% {% \expandafter\XINT_sqrt_big_kb \romannumeral0\XINT_dsx_addzeros {#1}#3;.% \romannumeral0\xintiisub {\XINT_dsx_addzerosnofuss {\xint_c_ii*#1}#2;}% {\xintiNum{#4}}.% }% \def\XINT_sqrt_big_kb #1.#2.% {% \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#1\xint_bye2345678\xint_bye*\xint_c_ii\relax}.#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 #2\xint_bye2345678\xint_bye*\xint_c_ii\relax}{#2}% }% \def\XINT_sqrt_big_ke #1% {% \if0\XINT_Sgn #1\xint: \expandafter \XINT_sqrt_big_end \else \expandafter \XINT_sqrt_big_kf \fi {#1}% }% \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\xintiiSqrt {\romannumeral0\xintiisqrt }% \def\xintiisqrt {\expandafter\XINT_sqrt_post\romannumeral0\xintiisquareroot }% \def\XINT_sqrt_post #1#2{\XINT_dec #1\XINT_dec_bye234567890\xint_bye}% \def\xintiiSqrtR {\romannumeral0\xintiisqrtr }% \def\xintiisqrtr {\expandafter\XINT_sqrtr_post\romannumeral0\xintiisquareroot }% \def\XINT_sqrtr_post #1#2% {\xintiiifLt {#2}{#1}{ #1}{\XINT_dec #1\XINT_dec_bye234567890\xint_bye}}% \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\XINT_binom_fork #1#2.#3#4.#5#6.% {% \if-#5\xint_dothis{\XINT_signalcondition{InvalidOperation}% {Binomial with negative first argument: #5#6.}{}{ 0}}\fi \if-#1\xint_dothis{ 0}\fi \if-#3\xint_dothis{ 0}\fi \if0#1\xint_dothis{ 1}\fi \if0#3\xint_dothis{ 1}\fi \ifnum #5#6>\xint_c_x^viii_mone\xint_dothis {\XINT_signalcondition{InvalidOperation}% {Binomial with too large argument: #5#6 >= 10^8.}{}{ 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!;!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!;!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;!#2% \R!\R!\R!\R!\R!\R!\R!\R!\W \R!\R!\R!\R!\R!\R!\R!\R!\W 1;!% }% \def\XINT_binom_div #1!1;!% {% \expandafter\XINT_smalldivx_a \the\numexpr #1/\xint_c_ii\expandafter\xint: \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;!0!% {\XINT_unsep_cuzsmall #1\xint_bye!2!3!4!5!6!7!8!9!\xint_bye\xint_c_i\relax}% \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!% }% \def\XINT_binom_vsmallfinish#1{% \def\XINT_binom_vsmallfinish1##1!1!;!0!{\expandafter#1\the\numexpr##1\relax}% }\XINT_binom_vsmallfinish{ }% \def\xintiiPFactorial {\romannumeral0\xintiipfactorial }% \def\xintiipfactorial #1#2% {% \expandafter\XINT_pfac_fork\the\numexpr#1\expandafter.\the\numexpr #2.% }% \def\xintPFactorial{\romannumeral0\xintpfactorial}% \let\xintpfactorial\xintiipfactorial \def\XINT_pfac_fork #1#2.#3#4.% {% \unless\ifnum #1#2<#3#4 \xint_dothis\XINT_pfac_one\fi \if-#3\xint_dothis\XINT_pfac_neg\fi \if-#1\xint_dothis\XINT_pfac_zero\fi \ifnum #3#4>\xint_c_x^viii_mone\xint_dothis\XINT_pfac_outofrange\fi \xint_orthat \XINT_pfac_a #1#2.#3#4.% }% \def\XINT_pfac_outofrange #1.#2.% {\XINT_signalcondition{InvalidOperation}% {pFactorial with too large argument: #2 >= 10^8.}{}{ 0}}% \def\XINT_pfac_one #1.#2.{ 1}% \def\XINT_pfac_zero #1.#2.{ 0}% \def\XINT_pfac_neg -#1.-#2.% {% \ifnum #1>\xint_c_x^viii\xint_dothis\XINT_pfac_outofrange\fi \xint_orthat {\ifodd\numexpr#2-#1\relax\xint_afterfi{\expandafter-\romannumeral`&&@}\fi \expandafter\XINT_pfac_a }% \the\numexpr #2-\xint_c_i\expandafter.\the\numexpr#1-\xint_c_i.% }% \def\XINT_pfac_a #1.#2.% {% \expandafter\XINT_pfac_b\the\numexpr \xint_c_i+#1.#2.100000001!1;!% 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_mul_out \the\numexpr\expandafter\XINT_smallmul \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)!% }% \def\XINT_pfac_end_ #1.#2.% {% \expandafter\XINT_mul_out \the\numexpr\expandafter\XINT_smallmul\the\numexpr \xint_c_x^viii+#1!% }% \def\xintBool #1{\romannumeral`&&@% \csname if#1\endcsname\expandafter1\else\expandafter0\fi }% \def\xintToggle #1{\romannumeral`&&@\iftoggle{#1}{1}{0}}% \def\xintiiGCD {\romannumeral0\xintiigcd }% \def\xintiigcd #1{\expandafter\XINT_iigcd\romannumeral0\xintiiabs#1\xint:}% \def\XINT_iigcd #1#2\xint:#3% {% \expandafter\XINT_gcd_fork\expandafter#1% \romannumeral0\xintiiabs#3\xint:#1#2\xint: }% \def\XINT_gcd_fork #1#2% {% \xint_UDzerofork #1\XINT_gcd_Aiszero #2\XINT_gcd_Biszero 0\XINT_gcd_loop \krof #2% }% \def\XINT_gcd_Aiszero #1\xint:#2\xint:{ #1}% \def\XINT_gcd_Biszero #1\xint:#2\xint:{ #2}% \def\XINT_gcd_loop #1\xint:#2\xint: {% \expandafter\expandafter\expandafter\XINT_gcd_CheckRem \expandafter\xint_secondoftwo \romannumeral0\XINT_div_prepare {#1}{#2}\xint:#1\xint: }% \def\XINT_gcd_CheckRem #1% {% \xint_gob_til_zero #1\XINT_gcd_end0\XINT_gcd_loop #1% }% \def\XINT_gcd_end0\XINT_gcd_loop #1\xint:#2\xint:{ #2}% \def\xintiiGCDof {\romannumeral0\xintiigcdof }% \def\xintiigcdof #1{\expandafter\XINT_iigcdof_a\romannumeral`&&@#1^}% \def\XINT_iiGCDof {\romannumeral0\XINT_iigcdof_a}% \def\XINT_iigcdof_a #1{\expandafter\XINT_iigcdof_b\romannumeral`&&@#1!}% \def\XINT_iigcdof_b #1!#2{\expandafter\XINT_iigcdof_c\romannumeral`&&@#2!{#1}!}% \def\XINT_iigcdof_c #1{\xint_gob_til_^ #1\XINT_iigcdof_e ^\XINT_iigcdof_d #1}% \def\XINT_iigcdof_d #1!{\expandafter\XINT_iigcdof_b\romannumeral0\xintiigcd {#1}}% \def\XINT_iigcdof_e #1!#2!{ #2}% \def\xintiiLCM {\romannumeral0\xintiilcm}% \def\xintiilcm #1{\expandafter\XINT_iilcm\romannumeral0\xintiiabs#1\xint:}% \def\XINT_iilcm #1#2\xint:#3% {% \expandafter\XINT_lcm_fork\expandafter#1% \romannumeral0\xintiiabs#3\xint:#1#2\xint: }% \def\XINT_lcm_fork #1#2% {% \xint_UDzerofork #1\XINT_lcm_iszero #2\XINT_lcm_iszero 0\XINT_lcm_notzero \krof #2% }% \def\XINT_lcm_iszero #1\xint:#2\xint:{ 0}% \def\XINT_lcm_notzero #1\xint:#2\xint: {% \expandafter\XINT_lcm_end\romannumeral0% \expandafter\expandafter\expandafter\XINT_gcd_CheckRem \expandafter\xint_secondoftwo \romannumeral0\XINT_div_prepare {#1}{#2}\xint:#1\xint: \xint:#1\xint:#2\xint: }% \def\XINT_lcm_end #1\xint:#2\xint:#3\xint:{\xintiimul {#2}{\xintiiQuo{#3}{#1}}}% \def\xintiiLCMof {\romannumeral0\xintiilcmof }% \def\xintiilcmof #1{\expandafter\XINT_iilcmof_a\romannumeral`&&@#1^}% \def\XINT_iiLCMof {\romannumeral0\XINT_iilcmof_a}% \def\XINT_iilcmof_a #1{\expandafter\XINT_iilcmof_b\romannumeral`&&@#1!}% \def\XINT_iilcmof_b #1!#2{\expandafter\XINT_iilcmof_c\romannumeral`&&@#2!{#1}!}% \def\XINT_iilcmof_c #1{\xint_gob_til_^ #1\XINT_iilcmof_e ^\XINT_iilcmof_d #1}% \def\XINT_iilcmof_d #1!{\expandafter\XINT_iilcmof_b\romannumeral0\xintiilcm {#1}}% \def\XINT_iilcmof_e #1!#2!{ #2}% \def\xintRandomDigits{\romannumeral0\xintrandomdigits}% \def\xintrandomdigits#1% {% \csname xint_gob_andstop_\expandafter\XINT_randomdigits\the\numexpr#1\xint: }% \def\XINT_randomdigits#1\xint: {% \expandafter\XINT_randomdigits_a \the\numexpr(#1+\xint_c_iii)/\xint_c_viii\xint:#1\xint: }% \def\XINT_randomdigits_a#1\xint:#2\xint: {% \romannumeral\numexpr\xint_c_viii*#1-#2\csname XINT_% \romannumeral\XINT_replicate #1\endcsname \csname XINT_rdg\endcsname }% \def\XINT_rdg {% \expandafter\XINT_rdg_aux\the\numexpr% \xint_c_nine_x^viii% -\xint_texuniformdeviate\xint_c_ii^vii% -\xint_c_ii^vii*\xint_texuniformdeviate\xint_c_ii^vii% -\xint_c_ii^xiv*\xint_texuniformdeviate\xint_c_ii^vii% -\xint_c_ii^xxi*\xint_texuniformdeviate\xint_c_ii^vii% +\xint_texuniformdeviate\xint_c_x^viii% \relax% }% \def\XINT_rdg_aux#1{XINT_rdg\endcsname}% \let\XINT_XINT_rdg\endcsname \def\XINT_eightrandomdigits {% \expandafter\xint_gobble_i\the\numexpr% \xint_c_nine_x^viii% -\xint_texuniformdeviate\xint_c_ii^vii% -\xint_c_ii^vii*\xint_texuniformdeviate\xint_c_ii^vii% -\xint_c_ii^xiv*\xint_texuniformdeviate\xint_c_ii^vii% -\xint_c_ii^xxi*\xint_texuniformdeviate\xint_c_ii^vii% +\xint_texuniformdeviate\xint_c_x^viii% \relax% }% \let\xintEightRandomDigits\XINT_eightrandomdigits \def\xintRandBit{\xint_texuniformdeviate\xint_c_ii}% \def\xintRandBit{\xint_texuniformdeviate\xint_c_ii}% \def\xintXRandomDigits#1% {% \csname xint_gobble_\expandafter\XINT_xrandomdigits\the\numexpr#1\xint: }% \def\XINT_xrandomdigits#1\xint: {% \expandafter\XINT_xrandomdigits_a \the\numexpr(#1+\xint_c_iii)/\xint_c_viii\xint:#1\xint: }% \def\XINT_xrandomdigits_a#1\xint:#2\xint: {% \romannumeral\numexpr\xint_c_viii*#1-#2\expandafter\endcsname \romannumeral`&&@\romannumeral \XINT_replicate #1\endcsname\XINT_eightrandomdigits }% \def\xintiiRandRangeAtoB{\romannumeral`&&@\xintiirandrangeAtoB}% \def\xintiirandrangeAtoB#1% {% \expandafter\XINT_randrangeAtoB_a\romannumeral`&&@#1\xint: }% \def\XINT_randrangeAtoB_a#1\xint:#2% {% \xintiiadd{\expandafter\XINT_randrange \romannumeral0\xintiisub{#2}{#1}\xint:}% {#1}% }% \def\xintiiRandRange{\romannumeral`&&@\xintiirandrange}% \def\xintiirandrange#1% {% \expandafter\XINT_randrange\romannumeral`&&@#1\xint: }% \def\XINT_randrange #1% {% \xint_UDzerominusfork #1-\XINT_randrange_err:empty 0#1\XINT_randrange_err:empty 0-\XINT_randrange_a \krof #1% }% \def\XINT_randrange_err:empty#1\xint: {% \XINT_expandableerror{Empty range for randrange.} 0% }% \def\XINT_randrange_a #1\xint: {% \expandafter\XINT_randrange_b\romannumeral0\xintlength{#1}.#1\xint: }% \def\XINT_randrange_b #1.% {% \ifnum#1<\xint_c_x\xint_dothis{\the\numexpr\XINT_uniformdeviate{}}\fi \xint_orthat{\XINT_randrange_c #1.}% }% \def\XINT_randrange_c #1.#2#3#4#5#6#7#8#9% {% \expandafter\XINT_randrange_d \the\numexpr\expandafter\XINT_uniformdeviate\expandafter {\expandafter}\the\numexpr\xint_c_i+#2#3#4#5#6#7#8#9\xint:\xint: #2#3#4#5#6#7#8#9\xint:#1\xint: }% \def\XINT_randrange_d #1\xint:#2\xint: {% \ifnum#1=\xint_c_\xint_dothis\XINT_randrange_Z\fi \ifnum#1=#2 \xint_dothis\XINT_randrange_A\fi \xint_orthat\XINT_randrange_e #1\xint: }% \def\XINT_randrange_e #1\xint:#2\xint:#3\xint: {% \the\numexpr#1\expandafter\relax \romannumeral0\xintrandomdigits{#2-\xint_c_viii}% }% \def\XINT_randrange_Z 0\xint:#1\xint:#2\xint: {% \xintinum{\xintRandomDigits{#1-\xint_c_viii}}% }% \def\XINT_randrange_A #1\xint:#2\xint:#3\xint: {% \expandafter\XINT_randrange_B \romannumeral0\xintrandomdigits{#2-\xint_c_viii}\xint: #3\xint:#2.#1\xint: }% \def\XINT_randrange_B #1\xint:#2\xint:#3.#4\xint: {% \xintiiifLt{#1}{#2}{\XINT_randrange_E}{\XINT_randrange_again}% #4#1\xint:#3.#4#2\xint: }% \def\XINT_randrange_E #1\xint:#2\xint:{ #1}% \def\XINT_randrange_again #1\xint:{\XINT_randrange_c}% \ifdefined\xint_texuniformdeviate \else \def\xintrandomdigits#1% {% \XINT_expandableerror {No uniformdeviate at engine level.} 0% }% \let\xintXRandomDigits\xintRandomDigits \def\XINT_randrange#1\xint: {% \XINT_expandableerror {No uniformdeviate at engine level.} 0% }% \fi \XINTrestorecatcodesendinput% \endinput %% %% End of file `xint.sty'.