%% %% This is file `xintfrac.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% xint.dtx (with options: `xintfrac') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from xintfrac.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.2h 2016/11/20 %% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xintfrac: Expandable operations on fractions %% --------------------------------------------------------------- \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@xintfrac.sty\endcsname \expandafter\let\expandafter\w\csname ver@xint.sty\endcsname \expandafter \ifx\csname PackageInfo\endcsname\relax \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% \else \def\y#1#2{\PackageInfo{#1}{#2}}% \fi \expandafter \ifx\csname numexpr\endcsname\relax \y{xintfrac}{\numexpr not available, aborting input}% \aftergroup\endinput \else \ifx\x\relax % plain-TeX, first loading of xintfrac.sty \ifx\w\relax % but xint.sty not yet loaded. \def\z{\endgroup\input xint.sty\relax}% \fi \else \def\empty {}% \ifx\x\empty % LaTeX, first loading, % variable is initialized, but \ProvidesPackage not yet seen \ifx\w\relax % xint.sty not yet loaded. \def\z{\endgroup\RequirePackage{xint}}% \fi \else \aftergroup\endinput % xintfrac already loaded. \fi \fi \fi \z% \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintfrac}% [2016/11/20 1.2h Expandable operations on fractions (JFB)]% \def\XINT_cntSgnFork #1% {% \ifcase #1\expandafter\xint_secondofthree \or\expandafter\xint_thirdofthree \else\expandafter\xint_firstofthree \fi }% \def\xintLen {\romannumeral0\xintlen }% \def\xintlen #1% {% \expandafter\XINT_flen\romannumeral0\XINT_infrac {#1}% }% \def\XINT_flen #1#2#3% {% \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% {% \xint_gob_til_W #9\XINT_lenrord_W\W \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 #1.#2#3\Z {% \expandafter\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}% }% \def\XINT_lenrord_Y #1#2#3#4#5#6#7#8\T {% \xint_gob_til_W #7\XINT_lenrord_Z \xint_c_viii #6\XINT_lenrord_Z \xint_c_vii #5\XINT_lenrord_Z \xint_c_vi #4\XINT_lenrord_Z \xint_c_v #3\XINT_lenrord_Z \xint_c_iv #2\XINT_lenrord_Z \xint_c_iii \W\XINT_lenrord_Z \xint_c_ii \Z }% \def\XINT_lenrord_Z #1#2\Z #3{\the\numexpr #3-#1.}% \def\XINT_outfrac #1#2#3% {% \ifcase\XINT_cntSgn #3\Z \expandafter \XINT_outfrac_divisionbyzero \or \expandafter \XINT_outfrac_P \else \expandafter \XINT_outfrac_N \fi {#2}{#3}[#1]% }% \def\XINT_outfrac_divisionbyzero #1#2{\xintError:DivisionByZero\space #1/0}% \edef\XINT_outfrac_P #1#2% {% \noexpand\if0\noexpand\XINT_Sgn #1\noexpand\Z \noexpand\expandafter\noexpand\XINT_outfrac_Zero \noexpand\fi \space #1/#2% }% \def\XINT_outfrac_Zero #1[#2]{ 0/1[0]}% \def\XINT_outfrac_N #1#2% {% \expandafter\XINT_outfrac_N_a\expandafter {\romannumeral0\XINT_opp #2}{\romannumeral0\XINT_opp #1}% }% \def\XINT_outfrac_N_a #1#2% {% \expandafter\XINT_outfrac_P\expandafter {#2}{#1}% }% \def\XINT_inFrac {\romannumeral0\XINT_infrac }% \def\XINT_infrac #1% {% \expandafter\XINT_infrac_fork\romannumeral`&&@#1/\XINT_W[\XINT_W\XINT_T }% \def\XINT_infrac_fork #1[#2% {% \xint_UDXINTWfork #2\XINT_frac_gen \XINT_W\XINT_infrac_res_a % strict A[N] or A/B[N] input \krof #1[#2% }% \def\XINT_infrac_res_a #1% {% \xint_gob_til_zero #1\XINT_infrac_res_zero 0\XINT_infrac_res_b #1% }% \def\XINT_infrac_res_zero 0\XINT_infrac_res_b #1\XINT_T {{0}{0}{1}}% \def\XINT_infrac_res_b #1/#2% {% \xint_UDXINTWfork #2\XINT_infrac_res_ca \XINT_W\XINT_infrac_res_cb \krof #1/#2% }% \def\XINT_infrac_res_ca #1[#2]/\XINT_W[\XINT_W\XINT_T {\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 #3}{#2}{#1}}% \def\XINT_frac_gen #1/#2% {% \xint_UDXINTWfork #2\XINT_frac_gen_A \XINT_W\XINT_frac_gen_B \krof #1/#2% }% \def\XINT_frac_gen_A #1/\XINT_W [\XINT_W {\XINT_frac_gen_C 0~1!#1ee.\XINT_W }% \def\XINT_frac_gen_B #1/#2/\XINT_W[%\XINT_W {% \expandafter\XINT_frac_gen_Ba \romannumeral`&&@#2ee.\XINT_W\XINT_Z #1ee.%\XINT_W }% \def\XINT_frac_gen_Ba #1.#2% {% \xint_UDXINTWfork #2\XINT_frac_gen_Bb \XINT_W\XINT_frac_gen_Bc \krof #1.#2% }% \def\XINT_frac_gen_Bb #1e#2e#3\XINT_Z {\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 #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!% }% \def\XINT_frac_gen_C #1!#2.#3% {% \xint_UDXINTWfork #3\XINT_frac_gen_Ca \XINT_W\XINT_frac_gen_Cb \krof #1!#2.#3% }% \def\XINT_frac_gen_Ca #1~#2!#3e#4e#5\XINT_T {% \expandafter\XINT_frac_gen_F\the\numexpr #4-#1\expandafter ~\romannumeral0\XINT_num_loop #2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\Z~#3~% }% \def\XINT_frac_gen_Cb #1.#2e% {% \expandafter\XINT_frac_gen_Cc\romannumeral`&&@#2.#1e% }% \def\XINT_frac_gen_Cc #1.#2~#3!#4e#5e#6\XINT_T {% \expandafter\XINT_frac_gen_F\the\numexpr #5-#2-% \romannumeral0\XINT_length_loop 0.#1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye\expandafter ~\romannumeral0\XINT_num_loop #3\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\Z ~#4#1~% }% \def\XINT_frac_gen_F #1~#2% {% \xint_UDzerominusfork #2-\XINT_frac_gen_Gdivbyzero 0#2{\XINT_frac_gen_G -{}}% 0-{\XINT_frac_gen_G {}#2}% \krof #1~% }% \def\XINT_frac_gen_Gdivbyzero #1~~#2~% {% \expandafter\XINT_frac_gen_Gdivbyzero_a \romannumeral0\XINT_num_loop #2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\Z~#1~% }% \def\XINT_frac_gen_Gdivbyzero_a #1~#2~% {% \xintError:DivisionByZero {#2}{#1}{0}% }% \def\XINT_frac_gen_G #1#2#3~#4~#5~% {% \expandafter\XINT_frac_gen_Ga \romannumeral0\XINT_num_loop #1#5\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\Z~#3~{#2#4}% }% \def\XINT_frac_gen_Ga #1#2~#3~% {% \xint_gob_til_zero #1\XINT_frac_gen_zero 0% {#3}{#1#2}% }% \def\XINT_frac_gen_zero 0#1#2#3{{0}{0}{1}}% \def\XINT_factortens #1% {% \expandafter\XINT_cuz_cnt_loop\expandafter {\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 \R\R\R\R\R\R\R\R\Z }% \def\XINT_cuz_cnt #1% {% \XINT_cuz_cnt_loop {}#1\R\R\R\R\R\R\R\R\Z }% \def\XINT_cuz_cnt_loop #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_R #9\XINT_cuz_cnt_toofara \R \expandafter\XINT_cuz_cnt_checka\expandafter {\the\numexpr #1+8\relax}{#2#3#4#5#6#7#8#9}% }% \def\XINT_cuz_cnt_toofara\R \expandafter\XINT_cuz_cnt_checka\expandafter #1#2% {% \XINT_cuz_cnt_toofarb {#1}#2% }% \def\XINT_cuz_cnt_toofarb #1#2\Z {\XINT_cuz_cnt_toofarc #2\Z {#1}}% \def\XINT_cuz_cnt_toofarc #1#2#3#4#5#6#7#8% {% \xint_gob_til_R #2\XINT_cuz_cnt_toofard 7% #3\XINT_cuz_cnt_toofard 6% #4\XINT_cuz_cnt_toofard 5% #5\XINT_cuz_cnt_toofard 4% #6\XINT_cuz_cnt_toofard 3% #7\XINT_cuz_cnt_toofard 2% #8\XINT_cuz_cnt_toofard 1% \Z #1#2#3#4#5#6#7#8% }% \def\XINT_cuz_cnt_toofard #1#2\Z #3\R #4\Z #5% {% \expandafter\XINT_cuz_cnt_toofare \the\numexpr #3\relax \R\R\R\R\R\R\R\R\Z {\the\numexpr #5-#1\relax}\R\Z }% \def\XINT_cuz_cnt_toofare #1#2#3#4#5#6#7#8% {% \xint_gob_til_R #2\XINT_cuz_cnt_stopc 1% #3\XINT_cuz_cnt_stopc 2% #4\XINT_cuz_cnt_stopc 3% #5\XINT_cuz_cnt_stopc 4% #6\XINT_cuz_cnt_stopc 5% #7\XINT_cuz_cnt_stopc 6% #8\XINT_cuz_cnt_stopc 7% \Z #1#2#3#4#5#6#7#8% }% \def\XINT_cuz_cnt_checka #1#2% {% \expandafter\XINT_cuz_cnt_checkb\the\numexpr #2\relax \Z {#1}% }% \def\XINT_cuz_cnt_checkb #1% {% \xint_gob_til_zero #1\expandafter\XINT_cuz_cnt_loop\xint_gob_til_Z 0\XINT_cuz_cnt_stopa #1% }% \def\XINT_cuz_cnt_stopa #1\Z {% \XINT_cuz_cnt_stopb #1\R\R\R\R\R\R\R\R\Z % }% \def\XINT_cuz_cnt_stopb #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_R #2\XINT_cuz_cnt_stopc 1% #3\XINT_cuz_cnt_stopc 2% #4\XINT_cuz_cnt_stopc 3% #5\XINT_cuz_cnt_stopc 4% #6\XINT_cuz_cnt_stopc 5% #7\XINT_cuz_cnt_stopc 6% #8\XINT_cuz_cnt_stopc 7% #9\XINT_cuz_cnt_stopc 8% \Z #1#2#3#4#5#6#7#8#9% }% \def\XINT_cuz_cnt_stopc #1#2\Z #3\R #4\Z #5% {% \expandafter\XINT_cuz_cnt_stopd\expandafter {\the\numexpr #5-#1}#3% }% \def\XINT_cuz_cnt_stopd #1#2\R #3\Z {% \expandafter\space\expandafter {\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 }{#1}% }% \def\XINT_addm_A #1#2#3#4#5#6% {% \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% {% \XINT_addm_AC_checkcarry #1% }% \def\XINT_addm_AB #1#2#3#4\W\X\Y\Z #5#6#7#8% {% \XINT_addm_ABE #1#2{#8#7#6#5}{#3}#4\W\X\Y\Z }% \def\XINT_addm_ABE #1#2#3#4#5#6% {% \expandafter\XINT_addm_ABEA\the\numexpr #1+10#5#4#3#2+#6.% }% \def\XINT_addm_ABEA #1#2#3.#4% {% \XINT_addm_A #2{#3#4}% }% \def\XINT_addm_AC_checkcarry #1% {% \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 {% \expandafter \xint_cleanupzeros_andstop \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 #1% }% \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 \W\XINT_addm_CD {#5#4#3#2}{#1}% }% \def\XINT_addm_CD #1% {% \expandafter\XINT_addm_CC\the\numexpr 1+10#1.% }% \def\XINT_addm_CC #1#2#3.#4% {% \XINT_addm_AC_checkcarry #2{#3#4}% }% \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.% }% \def\XINT_addm_CDw #1.#2#3\X\Y\Z {% \XINT_addm_end #1#3% }% \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.% }% \def\XINT_addm_CDx #1.#2#3\Y\Z {% \XINT_addm_end #1#3% }% \def\XINT_addm_cy #1\XINT_addm_cz \W\XINT_addm_CD {% \expandafter\XINT_addm_CDy\the\numexpr 1+#1.% }% \def\XINT_addm_CDy #1.#2#3\Z {% \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 }% \def\xintraw {% \expandafter\XINT_raw\romannumeral0\XINT_infrac }% \def\XINT_raw #1#2#3{ #2/#3[#1]}% \def\xintPRaw {\romannumeral0\xintpraw }% \def\xintpraw {% \expandafter\XINT_praw\romannumeral0\XINT_infrac }% \def\XINT_praw #1% {% \ifnum #1=\xint_c_ \expandafter\XINT_praw_a\fi \XINT_praw_A {#1}% }% \def\XINT_praw_A #1#2#3% {% \if\XINT_isOne{#3}1\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi { #2[#1]}{ #2/#3[#1]}% }% \def\XINT_praw_a\XINT_praw_A #1#2#3% {% \if\XINT_isOne{#3}1\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi { #2}{ #2/#3}% }% \def\xintRawWithZeros {\romannumeral0\xintrawwithzeros }% \def\xintrawwithzeros {% \expandafter\XINT_rawz\romannumeral0\XINT_infrac }% \def\XINT_rawz #1% {% \ifcase\XINT_cntSgn #1\Z \expandafter\XINT_rawz_Ba \or \expandafter\XINT_rawz_A \else \expandafter\XINT_rawz_Ba \fi {#1}% }% \def\XINT_rawz_A #1#2#3{\xint_dsh {#2}{-#1}/#3}% \def\XINT_rawz_Ba #1#2#3{\expandafter\XINT_rawz_Bb \expandafter{\romannumeral0\xint_dsh {#3}{#1}}{#2}}% \def\XINT_rawz_Bb #1#2{ #2/#1}% \def\xintFloor {\romannumeral0\xintfloor }% \def\xintfloor #1% devrais-je faire \xintREZ? {\expandafter\XINT_ifloor \romannumeral0\xintrawwithzeros {#1}./1[0]}% \def\xintiFloor {\romannumeral0\xintifloor }% \def\xintifloor #1% {\expandafter\XINT_ifloor \romannumeral0\xintrawwithzeros {#1}.}% \def\XINT_ifloor #1/#2.{\xintiiquo {#1}{#2}}% \def\xintCeil {\romannumeral0\xintceil }% \def\xintceil #1{\xintiiopp {\xintFloor {\xintOpp{#1}}}}% \def\xintiCeil {\romannumeral0\xinticeil }% \def\xinticeil #1{\xintiiopp {\xintiFloor {\xintOpp{#1}}}}% \def\xintNumerator {\romannumeral0\xintnumerator }% \def\xintnumerator {% \expandafter\XINT_numer\romannumeral0\XINT_infrac }% \def\XINT_numer #1% {% \ifcase\XINT_cntSgn #1\Z \expandafter\XINT_numer_B \or \expandafter\XINT_numer_A \else \expandafter\XINT_numer_B \fi {#1}% }% \def\XINT_numer_A #1#2#3{\xint_dsh {#2}{-#1}}% \def\XINT_numer_B #1#2#3{ #2}% \def\xintDenominator {\romannumeral0\xintdenominator }% \def\xintdenominator {% \expandafter\XINT_denom\romannumeral0\XINT_infrac }% \def\XINT_denom #1% {% \ifcase\XINT_cntSgn #1\Z \expandafter\XINT_denom_B \or \expandafter\XINT_denom_A \else \expandafter\XINT_denom_B \fi {#1}% }% \def\XINT_denom_A #1#2#3{ #3}% \def\XINT_denom_B #1#2#3{\xint_dsh {#3}{#1}}% \def\xintFrac {\romannumeral0\xintfrac }% \def\xintfrac #1% {% \expandafter\XINT_fracfrac_A\romannumeral0\XINT_infrac {#1}% }% \def\XINT_fracfrac_A #1{\XINT_fracfrac_B #1\Z }% \catcode`^=7 \def\XINT_fracfrac_B #1#2\Z {% \xint_gob_til_zero #1\XINT_fracfrac_C 0\XINT_fracfrac_D {10^{#1#2}}% }% \def\XINT_fracfrac_C 0\XINT_fracfrac_D #1#2#3% {% \if1\XINT_isOne {#3}% \xint_afterfi {\expandafter\xint_firstoftwo_thenstop\xint_gobble_ii }% \fi \space \frac {#2}{#3}% }% \def\XINT_fracfrac_D #1#2#3% {% \if1\XINT_isOne {#3}\XINT_fracfrac_E\fi \space \frac {#2}{#3}#1% }% \def\XINT_fracfrac_E \fi\space\frac #1#2{\fi \space #1\cdot }% \def\xintSignedFrac {\romannumeral0\xintsignedfrac }% \def\xintsignedfrac #1% {% \expandafter\XINT_sgnfrac_a\romannumeral0\XINT_infrac {#1}% }% \def\XINT_sgnfrac_a #1#2% {% \XINT_sgnfrac_b #2\Z {#1}% }% \def\XINT_sgnfrac_b #1% {% \xint_UDsignfork #1\XINT_sgnfrac_N -{\XINT_sgnfrac_P #1}% \krof }% \def\XINT_sgnfrac_P #1\Z #2% {% \XINT_fracfrac_A {#2}{#1}% }% \def\XINT_sgnfrac_N {% \expandafter-\romannumeral0\XINT_sgnfrac_P }% \def\xintFwOver {\romannumeral0\xintfwover }% \def\xintfwover #1% {% \expandafter\XINT_fwover_A\romannumeral0\XINT_infrac {#1}% }% \def\XINT_fwover_A #1{\XINT_fwover_B #1\Z }% \def\XINT_fwover_B #1#2\Z {% \xint_gob_til_zero #1\XINT_fwover_C 0\XINT_fwover_D {10^{#1#2}}% }% \catcode`^=11 \def\XINT_fwover_C #1#2#3#4#5% {% \if0\XINT_isOne {#5}\xint_afterfi { {#4\over #5}}% \else\xint_afterfi { #4}% \fi }% \def\XINT_fwover_D #1#2#3% {% \if0\XINT_isOne {#3}\xint_afterfi { {#2\over #3}}% \else\xint_afterfi { #2\cdot }% \fi #1% }% \def\xintSignedFwOver {\romannumeral0\xintsignedfwover }% \def\xintsignedfwover #1% {% \expandafter\XINT_sgnfwover_a\romannumeral0\XINT_infrac {#1}% }% \def\XINT_sgnfwover_a #1#2% {% \XINT_sgnfwover_b #2\Z {#1}% }% \def\XINT_sgnfwover_b #1% {% \xint_UDsignfork #1\XINT_sgnfwover_N -{\XINT_sgnfwover_P #1}% \krof }% \def\XINT_sgnfwover_P #1\Z #2% {% \XINT_fwover_A {#2}{#1}% }% \def\XINT_sgnfwover_N {% \expandafter-\romannumeral0\XINT_sgnfwover_P }% \def\xintREZ {\romannumeral0\xintrez }% \def\xintrez {% \expandafter\XINT_rez_A\romannumeral0\XINT_infrac }% \def\XINT_rez_A #1#2% {% \XINT_rez_AB #2\Z {#1}% }% \def\XINT_rez_AB #1% {% \xint_UDzerominusfork #1-\XINT_rez_zero 0#1\XINT_rez_neg 0-{\XINT_rez_B #1}% \krof }% \def\XINT_rez_zero #1\Z #2#3{ 0/1[0]}% \def\XINT_rez_neg {\expandafter-\romannumeral0\XINT_rez_B }% \def\XINT_rez_B #1\Z {% \expandafter\XINT_rez_C\romannumeral0\XINT_factortens {#1}% }% \def\XINT_rez_C #1#2#3#4% {% \expandafter\XINT_rez_D\romannumeral0\XINT_factortens {#4}{#3}{#2}{#1}% }% \def\XINT_rez_D #1#2#3#4#5% {% \expandafter\XINT_rez_E\expandafter {\the\numexpr #3+#4-#2}{#1}{#5}% }% \def\XINT_rez_E #1#2#3{ #3/#2[#1]}% \def\xintE {\romannumeral0\xinte }% \def\xinte #1% {% \expandafter\XINT_e \romannumeral0\XINT_infrac {#1}% }% \def\XINT_e #1#2#3#4% {% \expandafter\XINT_e_end\the\numexpr #1+#4.{#2}{#3}% }% \def\XINT_e_end #1.#2#3{ #2/#3[#1]}% \def\xintIrr {\romannumeral0\xintirr }% \def\xintirr #1% {% \expandafter\XINT_irr_start\romannumeral0\xintrawwithzeros {#1}\Z }% \def\XINT_irr_start #1#2/#3\Z {% \if0\XINT_isOne {#3}% \xint_afterfi {\xint_UDsignfork #1\XINT_irr_negative -{\XINT_irr_nonneg #1}% \krof}% \else \xint_afterfi{\XINT_irr_denomisone #1}% \fi #2\Z {#3}% }% \def\XINT_irr_denomisone #1\Z #2{ #1/1}% changed in 1.08 \def\XINT_irr_negative #1\Z #2{\XINT_irr_D #1\Z #2\Z -}% \def\XINT_irr_nonneg #1\Z #2{\XINT_irr_D #1\Z #2\Z \space}% \def\XINT_irr_D #1#2\Z #3#4\Z {% \xint_UDzerosfork #3#1\XINT_irr_indeterminate #30\XINT_irr_divisionbyzero #10\XINT_irr_zero 00\XINT_irr_loop_a \krof {#3#4}{#1#2}{#3#4}{#1#2}% }% \def\XINT_irr_indeterminate #1#2#3#4#5{\xintError:NaN\space 0/0}% \def\XINT_irr_divisionbyzero #1#2#3#4#5{\xintError:DivisionByZero #5#2/0}% \def\XINT_irr_zero #1#2#3#4#5{ 0/1}% changed in 1.08 \def\XINT_irr_loop_a #1#2% {% \expandafter\XINT_irr_loop_d \romannumeral0\XINT_div_prepare {#1}{#2}{#1}% }% \def\XINT_irr_loop_d #1#2% {% \XINT_irr_loop_e #2\Z }% \def\XINT_irr_loop_e #1#2\Z {% \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% {% \expandafter\XINT_irr_loop_exitb\expandafter {\romannumeral0\xintiiquo {#3}{#2}}% {\romannumeral0\xintiiquo {#4}{#2}}% }% \def\XINT_irr_loop_exitb #1#2% {% \expandafter\XINT_irr_finish\expandafter {#2}{#1}% }% \def\XINT_irr_finish #1#2#3{#3#1/#2}% changed in 1.08 \def\xintifInt {\romannumeral0\xintifint }% \def\xintifint #1{\expandafter\XINT_ifint\romannumeral0\xintrawwithzeros {#1}.}% \def\XINT_ifint #1/#2.% {% \if 0\xintiiRem {#1}{#2}% \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintJrr {\romannumeral0\xintjrr }% \def\xintjrr #1% {% \expandafter\XINT_jrr_start\romannumeral0\xintrawwithzeros {#1}\Z }% \def\XINT_jrr_start #1#2/#3\Z {% \if0\XINT_isOne {#3}\xint_afterfi {\xint_UDsignfork #1\XINT_jrr_negative -{\XINT_jrr_nonneg #1}% \krof}% \else \xint_afterfi{\XINT_jrr_denomisone #1}% \fi #2\Z {#3}% }% \def\XINT_jrr_denomisone #1\Z #2{ #1/1}% changed in 1.08 \def\XINT_jrr_negative #1\Z #2{\XINT_jrr_D #1\Z #2\Z -}% \def\XINT_jrr_nonneg #1\Z #2{\XINT_jrr_D #1\Z #2\Z \space}% \def\XINT_jrr_D #1#2\Z #3#4\Z {% \xint_UDzerosfork #3#1\XINT_jrr_indeterminate #30\XINT_jrr_divisionbyzero #10\XINT_jrr_zero 00\XINT_jrr_loop_a \krof {#3#4}{#1#2}1001% }% \def\XINT_jrr_indeterminate #1#2#3#4#5#6#7{\xintError:NaN\space 0/0}% \def\XINT_jrr_divisionbyzero #1#2#3#4#5#6#7{\xintError:DivisionByZero #7#2/0}% \def\XINT_jrr_zero #1#2#3#4#5#6#7{ 0/1}% changed in 1.08 \def\XINT_jrr_loop_a #1#2% {% \expandafter\XINT_jrr_loop_b \romannumeral0\XINT_div_prepare {#1}{#2}{#1}% }% \def\XINT_jrr_loop_b #1#2#3#4#5#6#7% {% \expandafter \XINT_jrr_loop_c \expandafter {\romannumeral0\xintiiadd{\XINT_mul_fork #4\Z #1\Z}{#6}}% {\romannumeral0\xintiiadd{\XINT_mul_fork #5\Z #1\Z}{#7}}% {#2}{#3}{#4}{#5}% }% \def\XINT_jrr_loop_c #1#2% {% \expandafter \XINT_jrr_loop_d \expandafter{#2}{#1}% }% \def\XINT_jrr_loop_d #1#2#3#4% {% \XINT_jrr_loop_e #3\Z {#4}{#2}{#1}% }% \def\XINT_jrr_loop_e #1#2\Z {% \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% {% \XINT_irr_finish {#3}{#4}% }% \def\xintTFrac {\romannumeral0\xinttfrac }% \def\xinttfrac #1{\expandafter\XINT_tfrac_fork\romannumeral0\xintrawwithzeros {#1}\Z }% \def\XINT_tfrac_fork #1% {% \xint_UDzerominusfork #1-\XINT_tfrac_zero 0#1{\xintiiopp\XINT_tfrac_P }% 0-{\XINT_tfrac_P #1}% \krof }% \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\xintTrunc {\romannumeral0\xinttrunc }% \def\xintiTrunc {\romannumeral0\xintitrunc }% \def\xinttrunc #1% {% \expandafter\XINT_trunc\expandafter {\the\numexpr #1}% }% \def\XINT_trunc #1#2% {% \expandafter\XINT_trunc_G \romannumeral0\expandafter\XINT_trunc_A \romannumeral0\XINT_infrac {#2}{#1}{#1}% }% \def\xintitrunc #1% {% \expandafter\XINT_itrunc\expandafter {\the\numexpr #1}% }% \def\XINT_itrunc #1#2% {% \expandafter\XINT_itrunc_G \romannumeral0\expandafter\XINT_trunc_A \romannumeral0\XINT_infrac {#2}{#1}{#1}% }% \def\XINT_trunc_A #1#2#3#4% {% \expandafter\XINT_trunc_checkifzero \expandafter{\the\numexpr #1+#4}#2\Z {#3}% }% \def\XINT_trunc_checkifzero #1#2#3\Z {% \xint_gob_til_zero #2\XINT_trunc_iszero0\XINT_trunc_B {#1}{#2#3}% }% \def\XINT_trunc_iszero0\XINT_trunc_B #1#2#3{ 0\Z 0}% \def\XINT_trunc_B #1% {% \ifcase\XINT_cntSgn #1\Z \expandafter\XINT_trunc_D \or \expandafter\XINT_trunc_D \else \expandafter\XINT_trunc_C \fi {#1}% }% \def\XINT_trunc_C #1#2#3% {% \expandafter\XINT_trunc_CE\expandafter {\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}.% }% \def\XINT_trunc_E #1% {% \xint_UDsignfork #1\XINT_trunc_Fneg -{\XINT_trunc_Fpos #1}% \krof }% \def\XINT_trunc_Fneg #1.#2{\expandafter\xint_firstoftwo_thenstop \romannumeral0\XINT_div_prepare {#2}{#1}\Z -}% \def\XINT_trunc_Fpos #1.#2{\expandafter\xint_firstoftwo_thenstop \romannumeral0\XINT_div_prepare {#2}{#1}\Z \space }% \def\XINT_itrunc_G #1#2\Z #3#4% {% \xint_gob_til_zero #1\XINT_trunc_zero 0#3#1#2% }% \def\XINT_trunc_zero 0#1#20{ 0}% \def\XINT_trunc_G #1\Z #2#3% {% \xint_gob_til_zero #2\XINT_trunc_zero 0% \expandafter\XINT_trunc_H\expandafter {\the\numexpr\romannumeral0\xintlength {#1}-#3}{#3}{#1}#2% }% \def\XINT_trunc_H #1#2% {% \ifnum #1 > \xint_c_ \xint_afterfi {\XINT_trunc_Ha {#2}}% \else \xint_afterfi {\XINT_trunc_Hb {-#1}}% -0,--1,--2, .... \fi }% \def\XINT_trunc_Ha {% \expandafter\XINT_trunc_Haa\romannumeral0\xintdecsplit }% \def\XINT_trunc_Haa #1#2#3% {% #3#1.#2% }% \def\XINT_trunc_Hb #1#2#3% {% \expandafter #3\expandafter0\expandafter.% \romannumeral0\XINT_dsx_zeroloop #1.{}\Z {}#2% #1=-0 autoris\'e ! }% \def\xintTTrunc {\romannumeral0\xintttrunc }% \def\xintttrunc #1% {% \expandafter\XINT_itrunc_G \romannumeral0\expandafter\XINT_ttrunc_A \romannumeral0\XINT_infrac {#1}0% this last 0 to let \XINT_itrunc_G be happy }% \def\XINT_ttrunc_A #1#2#3{\XINT_trunc_checkifzero {#1}#2\Z {#3}}% \let\xintNum \xintTTrunc \let\xintnum \xintttrunc \def\xintRound {\romannumeral0\xintround }% \def\xintiRound {\romannumeral0\xintiround }% \def\xintround #1% {% \expandafter\XINT_round\expandafter {\the\numexpr #1}% }% \def\XINT_round {% \expandafter\XINT_trunc_G\romannumeral0\XINT_round_A }% \def\xintiround #1% {% \expandafter\XINT_iround\expandafter {\the\numexpr #1}% }% \def\XINT_iround {% \expandafter\XINT_itrunc_G\romannumeral0\XINT_round_A }% \def\XINT_round_A #1#2% {% \expandafter\XINT_round_B \romannumeral0\expandafter\XINT_trunc_A \romannumeral0\XINT_infrac {#2}{#1+\xint_c_i}{#1}% }% \def\XINT_round_B #1\Z {% \expandafter\XINT_round_C \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 \Z }% \def\XINT_round_C #1% {% \ifnum #1<\xint_c_v \expandafter\XINT_round_Daa \else \expandafter\XINT_round_Dba \fi }% \def\XINT_round_Daa #1% {% \xint_gob_til_Z #1\XINT_round_Daz\Z \XINT_round_Da #1% }% \def\XINT_round_Daz\Z \XINT_round_Da \Z { 0\Z }% \def\XINT_round_Da #1\Z {% \XINT_rord_main {}#1% \xint_relax \xint_bye\xint_bye\xint_bye\xint_bye \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax \Z }% \def\XINT_round_Dba #1% {% \xint_gob_til_Z #1\XINT_round_Dbz\Z \XINT_round_Db #1% }% \def\XINT_round_Dbz\Z \XINT_round_Db \Z { 1\Z }% \def\XINT_round_Db #1\Z {% \XINT_addm_A 0{}1000\W\X\Y\Z #1000\W\X\Y\Z \Z }% \def\xintXTrunc #1#2% {% \expandafter\XINT_xtrunc_a\expandafter {\the\numexpr #1\expandafter}\romannumeral0\xintraw {#2}% }% \def\XINT_xtrunc_a #1% {% \expandafter\XINT_xtrunc_b\expandafter {\the\numexpr\ifnum#1<\xint_c_i \xint_c_i-\fi #1}% }% \def\XINT_xtrunc_b #1% {% \expandafter\XINT_xtrunc_c\expandafter {\the\numexpr (#1+\xint_c_ii^v)/\xint_c_ii^vi-\xint_c_i}{#1}% }% \def\XINT_xtrunc_c #1#2% {% \expandafter\XINT_xtrunc_d\expandafter {\the\numexpr #2-\xint_c_ii^vi*#1}{#1}{#2}% }% \def\XINT_xtrunc_d #1#2#3#4/#5[#6]% {% \XINT_xtrunc_e #4.{#6}{#5}{#3}{#2}{#1}% }% \def\XINT_xtrunc_e #1% {% \xint_UDzerominusfork #1-\XINT_xtrunc_zero 0#1\XINT_xtrunc_N 0-{\XINT_xtrunc_P #1}% \krof }% \def\XINT_xtrunc_zero .#1#2#3#4#5% {% 0.\romannumeral0\expandafter\XINT_dsx_zeroloop \the\numexpr #5.{}\Z {}% \xintiloop [#4+-1] \ifnum \xintiloopindex>\xint_c_ 0000000000000000000000000000000000000000000000000000000000000000% \repeat }% \def\XINT_xtrunc_N {-\XINT_xtrunc_P }% \def\XINT_xtrunc_P #1.#2% {% \ifnum #2<\xint_c_ \expandafter\XINT_xtrunc_negN_Q \else \expandafter\XINT_xtrunc_Q \fi {#2}{#1}.% }% \def\XINT_xtrunc_negN_Q #1#2.#3#4#5#6% {% \expandafter\XINT_xtrunc_negN_R \romannumeral0\XINT_div_prepare {#3}{#2}{#3}{#1}{#4}% }% \def\XINT_xtrunc_negN_R #1#2#3#4#5% {% \expandafter\XINT_xtrunc_negN_S\expandafter {\the\numexpr -#4}{#5}{#2}{#3}{#1}% }% \def\XINT_xtrunc_negN_S #1#2% {% \expandafter\XINT_xtrunc_negN_T\expandafter {\the\numexpr #2-#1}{#1}{#2}% }% \def\XINT_xtrunc_negN_T #1% {% \ifnum \xint_c_<#1 \expandafter\XINT_xtrunc_negNA \else \expandafter\XINT_xtrunc_negNW \fi {#1}% }% \def\XINT_xtrunc_unlock #10.{ }% \def\XINT_xtrunc_negNA #1#2#3#4#5#6% {% \expandafter\XINT_xtrunc_negNB\expandafter {\romannumeral0\expandafter\expandafter\expandafter \XINT_xtrunc_unlock\expandafter\string \csname\XINT_xtrunc_b {#1}#4/#5[0]\expandafter\endcsname \expandafter}\expandafter {\the\numexpr\xintLength{#6}-#2}{#6}% }% \def\XINT_xtrunc_negNB #1#2#3{\XINT_xtrunc_negNC {#2}{#3}#1}% \def\XINT_xtrunc_negNC #1% {% \ifnum \xint_c_ < #1 \expandafter\XINT_xtrunc_negNDa \else \expandafter\XINT_xtrunc_negNE \fi {#1}% }% \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 }% \def\XINT_xtrunc_negNDb #1.#2.{#1.#2}% \def\XINT_xtrunc_negNE #1#2% {% 0.\romannumeral0\XINT_dsx_zeroloop -#1.{}\Z {}#2% }% \def\XINT_xtrunc_negNW #1#2#3#4#5#6% {% \expandafter\XINT_xtrunc_negNX\expandafter {\romannumeral0\xintnum{\xintDecSplitL {-#1}{#6}}}{#3}% }% \def\XINT_xtrunc_negNX #1#2% {% \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 \the\numexpr #7.{}\Z {}% \xintiloop [#6+-1] \ifnum \xintiloopindex>\xint_c_ 0000000000000000000000000000000000000000000000000000000000000000% \repeat }% \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 \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 }% \def\XINT_xtrunc_prepare #1.#2#3% {% \expandafter\XINT_xtrunc_Pa\expandafter {\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 \XINT_xtrunc_prepare_b #9% }% \def\XINT_xtrunc_prepare_small\R #1!#2% {% \ifcase #2 \or\xint_afterfi{ \XINT_div_BisOne}% \or\xint_afterfi{ \XINT_div_BisTwo}% \else\expandafter\XINT_xtrunc_small_aa \fi {#2}% }% \def\XINT_xtrunc_small_aa #1% {% \expandafter\space\expandafter\XINT_xtrunc_small_a \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 .\the\numexpr #2\expandafter!% \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!% {% \XINT_xtrunc_prepare_d #1.00000000!{#1}% }% \def\XINT_xtrunc_prepare_d #1#2#3#4#5#6#7#8#9% {% \expandafter\XINT_xtrunc_prepare_e\xint_gob_til_dot #1#2#3#4#5#6#7#8#9!% }% \def\XINT_xtrunc_prepare_e #1!#2!#3#4% {% \XINT_xtrunc_prepare_f #4#3\X {#1}{#3}% }% \def\XINT_xtrunc_prepare_f #1#2#3#4#5#6#7#8#9\X {% \expandafter\space\expandafter\XINT_div_prepare_g \the\numexpr #1#2#3#4#5#6#7#8+\xint_c_i\expandafter .\the\numexpr (#1#2#3#4#5#6#7#8+\xint_c_i)/\xint_c_ii\expandafter .\the\numexpr #1#2#3#4#5#6#7#8\expandafter .\romannumeral0\XINT_sepandrev_andcount #1#2#3#4#5#6#7#8#9\XINT_rsepbyviii_end_A 2345678% \XINT_rsepbyviii_end_B 2345678% \relax\xint_c_ii\xint_c_iii \R.\xint_c_vi\R.\xint_c_v\R.\xint_c_iv\R.\xint_c_iii \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}% }% \def\XINT_xtrunc_Pb #1#2#3#4{#1.\XINT_xtrunc_A {#4}{#2}{#3}}% \def\XINT_xtrunc_A #1% {% \unless\ifnum #1>\xint_c_ \XINT_xtrunc_transition\fi \expandafter\XINT_xtrunc_B\expandafter{\the\numexpr #1-\xint_c_i}% }% \def\XINT_xtrunc_B #1#2#3% {% \expandafter\XINT_xtrunc_D\romannumeral0#3% {#20000000000000000000000000000000000000000000000000000000000000000}% {#1}{#3}% }% \def\XINT_xtrunc_D #1#2#3% {% \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 \expandafter\XINT_xtrunc_B\expandafter #1#2#3#4% {% \fi \ifnum #4=\xint_c_ \XINT_xtrunc_abort\fi \expandafter\XINT_xtrunc_x\expandafter {\romannumeral0\XINT_dsx_zeroloop #4.{}\Z {#2}}{#3}{#4}% }% \def\XINT_xtrunc_x #1#2% {% \expandafter\XINT_xtrunc_y\romannumeral0#2{#1}% }% \def\XINT_xtrunc_y #1#2#3% {% \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\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\XINT_fadd_Azero #1]{\xintraw }% \def\XINT_fadd_a #1/#2[#3]#4% {\expandafter\XINT_fadd_b\romannumeral0\xintraw {#4}{#3}{#1}{#2}}% \def\XINT_fadd_b #1{\xint_gob_til_zero #1\XINT_fadd_Bzero 0\XINT_fadd_c #1}% \def\XINT_fadd_Bzero #1]#2#3#4{ #3/#4[#2]}% \def\XINT_fadd_c #1/#2[#3]#4% {% \expandafter\XINT_fadd_Aa\expandafter{\the\numexpr #4-#3}{#3}{#4}{#1}{#2}% }% \def\XINT_fadd_Aa #1% {% \ifcase\XINT_cntSgn #1\Z \expandafter\XINT_fadd_B \or \expandafter \XINT_fadd_Ba \else \expandafter \XINT_fadd_Bb \fi {#1}% }% \def\XINT_fadd_B #1#2#3#4#5#6#7{\XINT_fadd_C {#4}{#5}{#7}{#6}[#3]}% \def\XINT_fadd_Ba #1#2#3#4#5#6#7% {% \expandafter\XINT_fadd_C\expandafter {\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}}% {#5}{#7}{#6}[#3]% }% \def\XINT_fadd_C #1#2#3% {% \ifcase\romannumeral0\xintiicmp {#2}{#3} %<- intentional space here. \expandafter\XINT_fadd_eq \or\expandafter\XINT_fadd_D \else\expandafter\XINT_fadd_Da \fi {#2}{#3}{#1}% }% \def\XINT_fadd_eq #1#2#3#4%#5% {% \expandafter\XINT_fadd_G \romannumeral0\xintiiadd {#3}{#4}/#1%[#5]% }% \def\XINT_fadd_D #1#2% {% \expandafter\XINT_fadd_E\romannumeral0\XINT_div_prepare {#2}{#1}{#1}{#2}% }% \def\XINT_fadd_E #1#2% {% \if0\XINT_Sgn #2\Z \expandafter\XINT_fadd_F \else\expandafter\XINT_fadd_K \fi {#1}% }% \def\XINT_fadd_F #1#2#3#4#5%#6% {% \expandafter\XINT_fadd_G \romannumeral0\xintiiadd {\xintiiMul {#5}{#1}}{#4}/#2%[#6]% }% \def\XINT_fadd_Da #1#2% {% \expandafter\XINT_fadd_Ea\romannumeral0\XINT_div_prepare {#1}{#2}{#1}{#2}% }% \def\XINT_fadd_Ea #1#2% {% \if0\XINT_Sgn #2\Z \expandafter\XINT_fadd_Fa \else\expandafter\XINT_fadd_K \fi {#1}% }% \def\XINT_fadd_Fa #1#2#3#4#5%#6% {% \expandafter\XINT_fadd_G \romannumeral0\xintiiadd {\xintiiMul {#4}{#1}}{#5}/#3%[#6]% }% \def\XINT_fadd_G #1{\if0#1\XINT_fadd_iszero\fi\space #1}% \def\XINT_fadd_K #1#2#3#4#5% {% \expandafter\XINT_fadd_L \romannumeral0\xintiiadd {\xintiiMul {#2}{#5}}{\xintiiMul {#3}{#4}}.% {{#2}{#3}}% }% \def\XINT_fadd_L #1{\if0#1\XINT_fadd_iszero\fi \XINT_fadd_M #1}% \def\XINT_fadd_M #1.#2{\expandafter\XINT_fadd_N \expandafter {\romannumeral0\xintiimul #2}{#1}}% \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\XINT_fsub_Azero #1]{\xintopp }% \def\XINT_fsub_a #1/#2[#3]#4% {\expandafter\XINT_fsub_b\romannumeral0\xintraw {#4}{#3}{#1}{#2}}% \def\XINT_fsub_b #1{\xint_UDzerominusfork #1-\XINT_fadd_Bzero 0#1\XINT_fadd_c 0-{\XINT_fadd_c -#1}% \krof }% \def\xintSum {\romannumeral0\xintsum }% \def\xintsum #1{\xintsumexpr #1\relax }% \def\xintSumExpr {\romannumeral0\xintsumexpr }% \def\xintsumexpr {\expandafter\XINT_fsumexpr\romannumeral`&&@}% \def\XINT_fsumexpr {\XINT_fsum_loop_a {0/1[0]}}% \def\XINT_fsum_loop_a #1#2% {% \expandafter\XINT_fsum_loop_b \romannumeral`&&@#2\Z {#1}% }% \def\XINT_fsum_loop_b #1% {% \xint_gob_til_relax #1\XINT_fsum_finished\relax \XINT_fsum_loop_c #1% }% \def\XINT_fsum_loop_c #1\Z #2% {% \expandafter\XINT_fsum_loop_a\expandafter{\romannumeral0\xintadd {#2}{#1}}% }% \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\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}% \def\XINT_fmul_c #1/#2[#3]#4/#5[#6.]% {% \expandafter\XINT_fmul_d \expandafter{\the\numexpr #3+#6\expandafter}% \expandafter{\romannumeral0\xintiimul {#5}{#2}}% {\romannumeral0\xintiimul {#4}{#1}}% }% \def\XINT_fmul_d #1#2#3% {% \expandafter \XINT_fmul_e \expandafter{#3}{#1}{#2}% }% \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]% {% \expandafter\XINT_fsqr_b \expandafter{\the\numexpr #3+#3\expandafter}% \expandafter{\romannumeral0\xintiisqr {#2}}% {\romannumeral0\xintiisqr {#1}}% }% \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}}% }% \def\XINT_fpow #1#2% {% \expandafter\XINT_fpow_fork\the\numexpr \xintNum{#2}\relax\Z #1% }% \def\XINT_fpow_fork #1#2\Z {% \xint_UDzerominusfork #1-\XINT_fpow_zero 0#1\XINT_fpow_neg 0-{\XINT_fpow_pos #1}% \krof {#2}% }% \def\XINT_fpow_zero #1#2#3#4{ 1/1[0]}% \def\XINT_fpow_pos #1#2#3#4#5% {% \expandafter\XINT_fpow_pos_A\expandafter {\the\numexpr #1#2*#3\expandafter}\expandafter {\romannumeral0\xintiipow {#5}{#1#2}}% {\romannumeral0\xintiipow {#4}{#1#2}}% }% \def\XINT_fpow_neg #1#2#3#4% {% \expandafter\XINT_fpow_pos_A\expandafter {\the\numexpr -#1*#2\expandafter}\expandafter {\romannumeral0\xintiipow {#3}{#1}}% {\romannumeral0\xintiipow {#4}{#1}}% }% \def\XINT_fpow_pos_A #1#2#3% {% \expandafter\XINT_fpow_pos_B\expandafter {#3}{#1}{#2}% }% \def\XINT_fpow_pos_B #1#2{\XINT_outfrac {#2}{#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_pfac_fork \the\numexpr\xintNum{#1}\expandafter.\the\numexpr\xintNum{#2}.% }% \def\xintPrd {\romannumeral0\xintprd }% \def\xintprd #1{\xintprdexpr #1\relax }% \def\xintPrdExpr {\romannumeral0\xintprdexpr }% \def\xintprdexpr {\expandafter\XINT_fprdexpr \romannumeral`&&@}% \def\XINT_fprdexpr {\XINT_fprod_loop_a {1/1[0]}}% \def\XINT_fprod_loop_a #1#2% {% \expandafter\XINT_fprod_loop_b \romannumeral`&&@#2\Z {#1}% }% \def\XINT_fprod_loop_b #1% {% \xint_gob_til_relax #1\XINT_fprod_finished\relax \XINT_fprod_loop_c #1% }% \def\XINT_fprod_loop_c #1\Z #2% {% \expandafter\XINT_fprod_loop_a\expandafter{\romannumeral0\xintmul {#1}{#2}}% }% \def\XINT_fprod_finished #1\Z #2{ #2}% \def\xintDiv {\romannumeral0\xintdiv }% \def\xintdiv #1% {% \expandafter\XINT_fdiv\expandafter {\romannumeral0\XINT_infrac {#1}}% }% \def\XINT_fdiv #1#2% {\expandafter\XINT_fdiv_A\romannumeral0\XINT_infrac {#2}#1}% \def\XINT_fdiv_A #1#2#3#4#5#6% {% \expandafter\XINT_fdiv_B \expandafter{\the\numexpr #4-#1\expandafter}% \expandafter{\romannumeral0\xintiimul {#2}{#6}}% {\romannumeral0\xintiimul {#3}{#5}}% }% \def\XINT_fdiv_B #1#2#3% {% \expandafter\XINT_fdiv_C \expandafter{#3}{#1}{#2}% }% \def\XINT_fdiv_C #1#2{\XINT_outfrac {#2}{#1}}% \def\xintDivFloor {\romannumeral0\xintdivfloor }% \def\xintdivfloor #1#2{\xintfloor{\xintDiv {#1}{#2}}}% \def\xintDivTrunc {\romannumeral0\xintdivtrunc }% \def\xintdivtrunc #1#2{\xintttrunc {\xintDiv {#1}{#2}}}% \def\xintDivRound {\romannumeral0\xintdivround }% \def\xintdivround #1#2{\xintiround 0{\xintDiv {#1}{#2}}}% \def\xintMod {\romannumeral0\xintmod }% \def\xintmod #1{\expandafter\XINT_mod_a\romannumeral0\xintraw{#1}.}% \def\XINT_mod_a #1#2.#3% {\expandafter\XINT_mod_b\expandafter #1\romannumeral0\xintraw{#3}#2.}% \def\XINT_mod_b #1#2% #1 de A, #2 de B. {% \if0#2\xint_dothis\XINT_mod_divbyzero\fi \if0#1\xint_dothis\XINT_mod_aiszero\fi \if-#2\xint_dothis{\XINT_mod_bneg #1}\fi \xint_orthat{\XINT_mod_bpos #1#2}% }% \def\XINT_mod_bpos #1% {% \xint_UDsignfork #1{\xintiiopp\XINT_mod_pos {}}% -{\XINT_mod_pos #1}% \krof }% \def\XINT_mod_bneg #1% {% \xint_UDsignfork #1{\xintiiopp\XINT_mod_pos {}}% -{\XINT_mod_pos #1}% \krof }% \def\XINT_mod_divbyzero #1.{\xintError:DivisionByZero\space 0/1[0]}% \def\XINT_mod_aiszero #1.{ 0/1[0]}% \def\XINT_mod_pos #1#2/#3[#4]#5/#6[#7].% {% \expandafter\XINT_mod_pos_a \the\numexpr\ifnum#7>#4 #4\else #7\fi\expandafter.\expandafter {\romannumeral0\xintiimul {#6}{#3}}% n fois u {\xintiiE{\xintiiMul {#1#5}{#3}}{#7-#4}}% m fois u {\xintiiE{\xintiiMul {#2}{#6}}{#4-#7}}% t fois n }% \def\XINT_mod_pos_a #1.#2#3#4{\xintiirem {#3}{#4}/#2[#1]}% \def\xintIsOne {\romannumeral0\xintisone }% \def\xintisone #1{\expandafter\XINT_fracisone \romannumeral0\xintrawwithzeros{#1}\Z }% \def\XINT_fracisone #1/#2\Z {\if0\XINT_Cmp {#1}{#2}\xint_afterfi{ 1}\else\xint_afterfi{ 0}\fi}% \def\xintGeq {\romannumeral0\xintgeq }% \def\xintgeq #1% {% \expandafter\XINT_fgeq\expandafter {\romannumeral0\xintabs {#1}}% }% \def\XINT_fgeq #1#2% {% \expandafter\XINT_fgeq_A \romannumeral0\xintabs {#2}#1% }% \def\XINT_fgeq_A #1% {% \xint_gob_til_zero #1\XINT_fgeq_Zii 0% \XINT_fgeq_B #1% }% \def\XINT_fgeq_Zii 0\XINT_fgeq_B #1[#2]#3[#4]{ 1}% \def\XINT_fgeq_B #1/#2[#3]#4#5/#6[#7]% {% \xint_gob_til_zero #4\XINT_fgeq_Zi 0% \expandafter\XINT_fgeq_C\expandafter {\the\numexpr #7-#3\expandafter}\expandafter {\romannumeral0\xintiimul {#4#5}{#2}}% {\romannumeral0\xintiimul {#6}{#1}}% }% \def\XINT_fgeq_Zi 0#1#2#3#4#5#6#7{ 0}% \def\XINT_fgeq_C #1#2#3% {% \expandafter\XINT_fgeq_D\expandafter {#3}{#1}{#2}% }% \def\XINT_fgeq_D #1#2#3% {% \expandafter\XINT_cntSgnFork\romannumeral`&&@\expandafter\XINT_cntSgn \the\numexpr #2+\xintLength{#3}-\xintLength{#1}\relax\Z { 0}{\XINT_fgeq_E #2\Z {#3}{#1}}{ 1}% }% \def\XINT_fgeq_E #1% {% \xint_UDsignfork #1\XINT_fgeq_Fd -{\XINT_fgeq_Fn #1}% \krof }% \def\XINT_fgeq_Fd #1\Z #2#3% {% \expandafter\XINT_fgeq_Fe\expandafter {\romannumeral0\XINT_dsx_addzerosnofuss {#1}{#3}}{#2}% }% \def\XINT_fgeq_Fe #1#2{\XINT_geq_pre {#2}{#1}}% \def\XINT_fgeq_Fn #1\Z #2#3% {% \expandafter\XINT_geq_pre\expandafter {\romannumeral0\XINT_dsx_addzerosnofuss {#1}{#2}}{#3}% }% \def\xintMax {\romannumeral0\xintmax }% \def\xintmax #1% {% \expandafter\XINT_fmax\expandafter {\romannumeral0\xintraw {#1}}% }% \def\XINT_fmax #1#2% {% \expandafter\XINT_fmax_A\romannumeral0\xintraw {#2}#1% }% \def\XINT_fmax_A #1#2/#3[#4]#5#6/#7[#8]% {% \xint_UDsignsfork #1#5\XINT_fmax_minusminus -#5\XINT_fmax_firstneg #1-\XINT_fmax_secondneg --\XINT_fmax_nonneg_a \krof #1#5{#2/#3[#4]}{#6/#7[#8]}% }% \def\XINT_fmax_minusminus --% {\expandafter-\romannumeral0\XINT_fmin_nonneg_b }% \def\XINT_fmax_firstneg #1-#2#3{ #1#2}% \def\XINT_fmax_secondneg -#1#2#3{ #1#3}% \def\XINT_fmax_nonneg_a #1#2#3#4% {% \XINT_fmax_nonneg_b {#1#3}{#2#4}% }% \def\XINT_fmax_nonneg_b #1#2% {% \if0\romannumeral0\XINT_fgeq_A #1#2% \xint_afterfi{ #1}% \else \xint_afterfi{ #2}% \fi }% \def\xintMaxof {\romannumeral0\xintmaxof }% \def\xintmaxof #1{\expandafter\XINT_maxof_a\romannumeral`&&@#1\relax }% \def\XINT_maxof_a #1{\expandafter\XINT_maxof_b\romannumeral0\xintraw{#1}\Z }% \def\XINT_maxof_b #1\Z #2% {\expandafter\XINT_maxof_c\romannumeral`&&@#2\Z {#1}\Z}% \def\XINT_maxof_c #1% {\xint_gob_til_relax #1\XINT_maxof_e\relax\XINT_maxof_d #1}% \def\XINT_maxof_d #1\Z {\expandafter\XINT_maxof_b\romannumeral0\xintmax {#1}}% \def\XINT_maxof_e #1\Z #2\Z { #2}% \def\xintMin {\romannumeral0\xintmin }% \def\xintmin #1% {% \expandafter\XINT_fmin\expandafter {\romannumeral0\xintraw {#1}}% }% \def\XINT_fmin #1#2% {% \expandafter\XINT_fmin_A\romannumeral0\xintraw {#2}#1% }% \def\XINT_fmin_A #1#2/#3[#4]#5#6/#7[#8]% {% \xint_UDsignsfork #1#5\XINT_fmin_minusminus -#5\XINT_fmin_firstneg #1-\XINT_fmin_secondneg --\XINT_fmin_nonneg_a \krof #1#5{#2/#3[#4]}{#6/#7[#8]}% }% \def\XINT_fmin_minusminus --% {\expandafter-\romannumeral0\XINT_fmax_nonneg_b }% \def\XINT_fmin_firstneg #1-#2#3{ -#3}% \def\XINT_fmin_secondneg -#1#2#3{ -#2}% \def\XINT_fmin_nonneg_a #1#2#3#4% {% \XINT_fmin_nonneg_b {#1#3}{#2#4}% }% \def\XINT_fmin_nonneg_b #1#2% {% \if0\romannumeral0\XINT_fgeq_A #1#2% \xint_afterfi{ #2}% \else \xint_afterfi{ #1}% \fi }% \def\xintMinof {\romannumeral0\xintminof }% \def\xintminof #1{\expandafter\XINT_minof_a\romannumeral`&&@#1\relax }% \def\XINT_minof_a #1{\expandafter\XINT_minof_b\romannumeral0\xintraw{#1}\Z }% \def\XINT_minof_b #1\Z #2% {\expandafter\XINT_minof_c\romannumeral`&&@#2\Z {#1}\Z}% \def\XINT_minof_c #1% {\xint_gob_til_relax #1\XINT_minof_e\relax\XINT_minof_d #1}% \def\XINT_minof_d #1\Z {\expandafter\XINT_minof_b\romannumeral0\xintmin {#1}}% \def\XINT_minof_e #1\Z #2\Z { #2}% \def\xintcmp #1% {% \expandafter\XINT_fcmp\expandafter {\romannumeral0\xintraw {#1}}% }% \def\XINT_fcmp #1#2% {% \expandafter\XINT_fcmp_A\romannumeral0\xintraw {#2}#1% }% \def\XINT_fcmp_A #1#2/#3[#4]#5#6/#7[#8]% {% \xint_UDsignsfork #1#5\XINT_fcmp_minusminus -#5\XINT_fcmp_firstneg #1-\XINT_fcmp_secondneg --\XINT_fcmp_nonneg_a \krof #1#5{#2/#3[#4]}{#6/#7[#8]}% }% \def\XINT_fcmp_minusminus --#1#2{\XINT_fcmp_B #2#1}% \def\XINT_fcmp_firstneg #1-#2#3{ -1}% \def\XINT_fcmp_secondneg -#1#2#3{ 1}% \def\XINT_fcmp_nonneg_a #1#2% {% \xint_UDzerosfork #1#2\XINT_fcmp_zerozero 0#2\XINT_fcmp_firstzero #10\XINT_fcmp_secondzero 00\XINT_fcmp_pos \krof #1#2% }% \def\XINT_fcmp_zerozero #1#2#3#4{ 0}% 1.08b had some [ and ] here!!! \def\XINT_fcmp_firstzero #1#2#3#4{ -1}% incredibly I never saw that until \def\XINT_fcmp_secondzero #1#2#3#4{ 1}% preparing 1.09a. \def\XINT_fcmp_pos #1#2#3#4% {% \XINT_fcmp_B #1#3#2#4% }% \def\XINT_fcmp_B #1/#2[#3]#4/#5[#6]% {% \expandafter\XINT_fcmp_C\expandafter {\the\numexpr #6-#3\expandafter}\expandafter {\romannumeral0\xintiimul {#4}{#2}}% {\romannumeral0\xintiimul {#5}{#1}}% }% \def\XINT_fcmp_C #1#2#3% {% \expandafter\XINT_fcmp_D\expandafter {#3}{#1}{#2}% }% \def\XINT_fcmp_D #1#2#3% {% \expandafter\XINT_cntSgnFork\romannumeral`&&@\expandafter\XINT_cntSgn \the\numexpr #2+\xintLength{#3}-\xintLength{#1}\relax\Z { -1}{\XINT_fcmp_E #2\Z {#3}{#1}}{ 1}% }% \def\XINT_fcmp_E #1% {% \xint_UDsignfork #1\XINT_fcmp_Fd -{\XINT_fcmp_Fn #1}% \krof }% \def\XINT_fcmp_Fd #1\Z #2#3% {% \expandafter\XINT_fcmp_Fe\expandafter {\romannumeral0\XINT_dsx_addzerosnofuss {#1}{#3}}{#2}% }% \def\XINT_fcmp_Fe #1#2{\xintiicmp {#2}{#1}}% \def\XINT_fcmp_Fn #1\Z #2#3% {% \expandafter\xintiicmp\expandafter {\romannumeral0\XINT_dsx_addzerosnofuss {#1}{#2}}{#3}% }% \def\xintAbs {\romannumeral0\xintabs }% \def\xintabs #1{\expandafter\XINT_abs\romannumeral0\xintraw {#1}}% \def\xintOpp {\romannumeral0\xintopp }% \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#4% {% \if\romannumeral0\XINT_isone#4XY1\expandafter\XINT_float_sp \else\expandafter\XINT_float_fork\fi #3.{#1}{#2}{#4}% }% \def\XINT_float_sp #1% {% \xint_UDzerominusfork #1-\XINT_float_spzero 0#1\XINT_float_spneg 0-{\XINT_float_sppos #1}% \krof }% \def\XINT_float_spzero .#1#2#3#4{ 0.e0}% \def\XINT_float_spneg {\expandafter-\romannumeral0\XINT_float_sppos}% \def\XINT_float_sppos #1.#2#3#4#5% {% \expandafter\XINT_float_sp_b\the\numexpr#2-\xintLength{#1}.#1.#2.#3.% }% \def\XINT_float_sp_b #1% {% \xint_UDzerominusfork #1-\XINT_float_sp_quick 0#1\XINT_float_sp_c 0-{\XINT_float_sp_addzeros #1}% \krof }% \def\XINT_float_sp_quick .#1.#2.#3.% {% \expandafter\XINT_float_sp_done\the\numexpr #3+#2-\xint_c_i.#1;% }% \def\XINT_float_sp_addzeros #1.#2.#3.#4.% {% \expandafter\XINT_float_sp_done \the\numexpr #4-#1+#3-\xint_c_i\expandafter.% \romannumeral0\XINT_dsx_addzerosnofuss {#1}{#2};% }% \def\XINT_float_sp_done #1.#2#3;{ #2.#3e#1}% \def\XINT_float_sp_c #1.#2% {% \if #29\xint_dothis {\XINT_float_sp_d\XINT_float_Wb }\fi \xint_orthat {\XINT_float_sp_d\XINT_float_sp_Wa }#1.#2% }% \def\XINT_float_sp_d #1#2.#3.#4.#5.% {% \expandafter\XINT_float_sp_e \the\numexpr #5+#2+#4-\xint_c_i\expandafter.% \romannumeral0\expandafter\XINT_split_fromleft_loop \the\numexpr #4+\xint_c_i.{}#3\W\W\W\W\W\W\W\W\Z #1% }% \def\XINT_float_sp_e #1.#2.#3.% {% \expandafter\XINT_float_sp_f \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 ;#1.% }% \def\XINT_float_sp_f #1% {% \ifnum #1<\xint_c_v \expandafter\XINT_float_sp_ga\else\expandafter\XINT_float_sp_h\fi }% \def\XINT_float_sp_ga #1;#2.#3% {% \expandafter\XINT_float_sp_Wa \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 e#2% }% \def\XINT_float_sp_h #1;#2.#3% {% \expandafter#3% \romannumeral0\XINT_addm_A 0{}1000\W\X\Y\Z #1000\W\X\Y\Z e#2% }% \def\XINT_float_sp_Wa #1{ #1.}% \def\XINT_float_fork #1% {% \xint_UDsignfork #1\XINT_float_J -{\XINT_float_K #1}% \krof }% \def\XINT_float_J {\expandafter-\romannumeral0\XINT_float_K }% \def\XINT_float_K #1.#2% {% \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 \expandafter\XINT_float_N_Blong \else\expandafter\XINT_float_P\fi #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 #4.#1.#4.{#2}}% \def\XINT_float_P #1.#2.#3.#4#5#6#7#8% {% \expandafter #8\the\numexpr #1-#5+#3-\xint_c_i.{#6}{#4}{#7}{#2}% }% \def\XINT_float_Q #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 {\expandafter\XINT_infloat_clean\romannumeral0\XINT_infloat}% \def\XINT_infloat_clean #1% {\if #1!\xint_dothis\XINT_infloat_clean_a\fi\xint_orthat{ }#1}% \def\XINT_infloat_clean_a !#1.#2[#3]% {% \expandafter\XINT_infloat_sp_done \the\numexpr #3-#1\expandafter.% \romannumeral0\XINT_dsx_addzerosnofuss {#1}{#2};% }% \def\XINT_infloat_sp_done #1.#2;{ #2[#1]}% \def\XINTinFloatS {\romannumeral0\XINTinfloatS}% \def\XINTinfloatS {\expandafter\XINT_infloatS_clean\romannumeral0\XINT_infloat}% \def\XINT_infloatS_clean #1% {\if #1!\xint_dothis\XINT_infloatS_clean_a\fi\xint_orthat{ }#1}% \def\XINT_infloatS_clean_a !#1.{ }% \def\XINT_infloat [#1]#2% {% \expandafter\XINT_infloat_a\the\numexpr #1\expandafter.% \romannumeral0\XINT_infrac {#2}\XINT_infloat_Q }% \def\XINT_infloat_a #1.#2#3#4% {% \if\romannumeral0\XINT_isone#4XY1\expandafter\XINT_infloat_sp \else\expandafter\XINT_float_fork\fi #3.{#1}{#2}{#4}% }% \def\XINT_infloat_sp #1% {% \xint_UDzerominusfork #1-\XINT_infloat_spzero 0#1\XINT_infloat_spneg 0-{\XINT_infloat_sppos #1}% \krof }% \def\XINT_infloat_spzero .#1#2#3#4{ 0[0]}% \def\XINT_infloat_spneg {\expandafter\XINT_infloat_spnegend\romannumeral0\XINT_infloat_sppos}% \def\XINT_infloat_spnegend #1% {\if#1!\expandafter\XINT_infloat_spneg_needzeros\fi -#1}% \def\XINT_infloat_spneg_needzeros -!#1.{!#1.-}% \def\XINT_infloat_sppos #1.#2#3#4#5% {% \expandafter\XINT_infloat_sp_b\the\numexpr#2-\xintLength{#1}.#1.#2.#3.% }% \def\XINT_infloat_sp_b #1% {% \xint_UDzerominusfork #1-\XINT_infloat_sp_quick 0#1\XINT_infloat_sp_c 0-{\XINT_infloat_sp_needzeros #1}% \krof }% \def\XINT_infloat_sp_quick .#1.#2.#3.{ #1[#3]}% \def\XINT_infloat_sp_needzeros #1.#2.#3.#4.{!#1.#2[#4]}% \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_Q #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-\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 }% \def\XINTinfloatadd #1{\XINT_fladd_chkopt \XINTinfloatS #1\xint_relax }% \def\XINT_fladd_chkopt #1#2% {% \ifx [#2\expandafter\XINT_fladd_opt \else\expandafter\XINT_fladd_noopt \fi #1#2% }% \def\XINT_fladd_noopt #1#2\xint_relax #3% {% #1[\XINTdigits]% {\expandafter\XINT_FL_add_a \romannumeral0\XINTinfloat[\XINTdigits]{#2}\XINTdigits.{#3}}% }% \def\XINT_fladd_opt #1[\xint_relax #2]%#3#4% {% \expandafter\XINT_fladd_opt_a\the\numexpr #2.#1% }% \def\XINT_fladd_opt_a #1.#2#3#4% {% #2[#1]{\expandafter\XINT_FL_add_a\romannumeral0\XINTinfloat[#1]{#3}#1.{#4}}% }% \def\XINT_FL_add_a #1% {% \xint_gob_til_zero #1\XINT_FL_add_zero 0\XINT_FL_add_b #1% }% \def\XINT_FL_add_zero #1.#2{#2}% \def\XINT_FL_add_b #1]#2.#3% {% \expandafter\XINT_FL_add_c\romannumeral0\XINTinfloat[#2]{#3}#2.#1]% }% \def\XINT_FL_add_c #1% {% \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]% {% \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\xintFloatSub {\romannumeral0\xintfloatsub }% \def\xintfloatsub #1{\XINT_flsub_chkopt \xintfloat #1\xint_relax }% \def\XINTinFloatSub {\romannumeral0\XINTinfloatsub }% \def\XINTinfloatsub #1{\XINT_flsub_chkopt \XINTinfloatS #1\xint_relax }% \def\XINT_flsub_chkopt #1#2% {% \ifx [#2\expandafter\XINT_flsub_opt \else\expandafter\XINT_flsub_noopt \fi #1#2% }% \def\XINT_flsub_noopt #1#2\xint_relax #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_a #1.#2#3#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\XINTinFloatMul {\romannumeral0\XINTinfloatmul }% \def\XINTinfloatmul #1{\XINT_flmul_chkopt \XINTinfloatS #1\xint_relax }% \def\XINT_flmul_chkopt #1#2% {% \ifx [#2\expandafter\XINT_flmul_opt \else\expandafter\XINT_flmul_noopt \fi #1#2% }% \def\XINT_flmul_noopt #1#2\xint_relax #3% {% #1[\XINTdigits]% {\expandafter\XINT_FL_mul_a \romannumeral0\XINTinfloatS[\XINTdigits]{#2}\XINTdigits.{#3}}% }% \def\XINT_flmul_opt #1[\xint_relax #2]%#3#4% {% \expandafter\XINT_flmul_opt_a\the\numexpr #2.#1% }% \def\XINT_flmul_opt_a #1.#2#3#4% {% #2[#1]{\expandafter\XINT_FL_mul_a\romannumeral0\XINTinfloatS[#1]{#3}#1.{#4}}% }% \def\XINT_FL_mul_a #1[#2]#3.#4% {% \expandafter\XINT_FL_mul_b\romannumeral0\XINTinfloatS[#3]{#4}#1[#2]% }% \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 \XINTinfloatS #1\xint_relax }% \def\XINT_fldiv_chkopt #1#2% {% \ifx [#2\expandafter\XINT_fldiv_opt \else\expandafter\XINT_fldiv_noopt \fi #1#2% }% \def\XINT_fldiv_noopt #1#2\xint_relax #3% {% #1[\XINTdigits]% {\expandafter\XINT_FL_div_a \romannumeral0\XINTinfloatS[\XINTdigits]{#2}\XINTdigits.{#3}}% }% \def\XINT_fldiv_opt #1[\xint_relax #2]%#3#4% {% \expandafter\XINT_fldiv_opt_a\the\numexpr #2.#1% }% \def\XINT_fldiv_opt_a #1.#2#3#4% {% #2[#1]{\expandafter\XINT_FL_div_a\romannumeral0\XINTinfloatS[#1]{#3}#1.{#4}}% }% \def\XINT_FL_div_a #1[#2]#3.#4% {% \expandafter\XINT_FL_div_b\romannumeral0\XINTinfloatS[#3]{#4}#1[#2]% }% \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 \XINTinfloatS #1\xint_relax }% \def\XINT_flpow_chkopt #1#2% {% \ifx [#2\expandafter\XINT_flpow_opt \else\expandafter\XINT_flpow_noopt \fi #1#2% }% \def\XINT_flpow_noopt #1#2\xint_relax #3% {% \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_a #1.#2#3#4% {% \expandafter\XINT_flpow_checkB_a\the\numexpr #4.#1.{#3}{#2[#1]}% }% \def\XINT_flpow_checkB_a #1% {% \xint_UDzerominusfork #1-\XINT_flpow_BisZero 0#1{\XINT_flpow_checkB_b -}% 0-{\XINT_flpow_checkB_b {}#1}% \krof }% \def\XINT_flpow_BisZero .#1.#2#3{#3{1[0]}}% \def\XINT_flpow_checkB_b #1#2.#3.% {% \expandafter\XINT_flpow_checkB_c \the\numexpr\xintLength{#2}+\xint_c_iii.#3.#2.{#1}% }% \def\XINT_flpow_checkB_c #1.#2.% {% \expandafter\XINT_flpow_checkB_d\the\numexpr#1+#2.#1.#2.% }% \def\XINT_flpow_checkB_d #1.#2.#3.#4.#5#6% {% \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 \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.#3.#2.#4.{#1\ifodd #5 \xint_c_i\fi\fi}% }% \def\XINT_flpow_truncate #1.#2.#3.% {% \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_truncate_a #1.#2.#3.{#3+\xintLength{#2}.#1.}% \def\XINT_flpow_loopI #1.% {% \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.% }% \def\XINT_flpow_ItoIII\ifodd #1\fi #2.#3.#4.#5.#6% {% \expandafter\XINT_flpow_III\the\numexpr #6+\xint_c_.#3.#4.#5.% }% \def\XINT_flpow_loopI_even #1.#2.#3.%#4.% {% \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.#4.% {% \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.% {% \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.% }% \def\XINT_flpow_loopII_even #1.#2.#3.%#4.% {% \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.#5.#6.% {% \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.#5.#6.% {% \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\ifodd #1\fi #2.#3.#4.#5.#6.#7.#8% {% \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.#5% {% \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% {#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 #1{\XINT_flpower_chkopt \XINTinfloatS #1\xint_relax }% \def\XINTinFloatPowerH {\romannumeral0\XINTinfloatpowerH }% \def\XINTinfloatpowerH #1#2% {\expandafter\XINT_flpowerh_a \romannumeral0\xinttrunc 1{#2}.0;% \XINTdigits.{#1}{\XINTinfloatS[\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% }% \def\XINT_flpower_noopt #1#2\xint_relax #3% {% \expandafter\XINT_flpower_checkB_a \romannumeral0\xintnum{#3}.\XINTdigits.{#2}{#1[\XINTdigits]}% }% \def\XINT_flpower_opt #1[\xint_relax #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_a #1% {% \xint_UDzerominusfork #1-\XINT_flpower_BisZero 0#1{\XINT_flpower_checkB_b -}% 0-{\XINT_flpower_checkB_b {}#1}% \krof }% \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_d\the\numexpr#1+#2.#1.#2.% }% \def\XINT_flpower_checkB_d #1.#2.#3.#4.#5#6% {% \expandafter \XINT_flpower_aa \romannumeral0\XINTinfloat [#3]{#6}{#2}{#1}{#4}{#5}% }% \def\XINT_flpower_aa #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 \iftrue}% 0-{\XINT_flpower_b \iffalse#1}% \krof }% \def\XINT_flpower_b #1#2[#3]#4#5% {% \XINT_flpower_loopI #5.#3.#2.#4.{#1\xintiiOdd{#5}\fi}% }% \def\XINT_flpower_loopI #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 #1.#2.#3.#4.#5% {% \expandafter\XINT_flpow_III\the\numexpr #5+\xint_c_.#2.#3.#4.% }% \def\XINT_flpower_loopI_even #1.#2.#3.#4.% {% \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_toloopI #1.#2.#3.#4.{\XINT_flpower_loopI #4.#1.#2.#3.}% \def\XINT_flpower_loopI_odd #1.#2.#3.#4.% {% \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_toloopII #1.#2.#3.#4.{\XINT_flpower_loopII #4.#1.#2.#3.}% \def\XINT_flpower_loopII #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.#4.% {% \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.#5.#6.% {% \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.#5.#6.% {% \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 #1.#2.#3.#4.#5.#6.#7% {% \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 }% \def\XINTinFloatFac {\romannumeral0\XINTinfloatfac }% \def\XINTinfloatfac #1{\XINT_flfac_chkopt \XINTinfloat #1\xint_relax }% \def\XINT_flfac_chkopt #1#2% {% \ifx [#2\expandafter\XINT_flfac_opt \else\expandafter\XINT_flfac_noopt \fi #1#2% }% \def\XINT_flfac_noopt #1#2\xint_relax {% \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]% {% \expandafter\XINT_flfac_opt_a\the\numexpr #2.#1% }% \def\XINT_flfac_opt_a #1.#2#3% {% \expandafter\XINT_FL_fac_fork_a\the\numexpr \xintNum{#3}.\xint_c_i {#1}\XINT_FL_fac_out{#2[#1]}% }% \def\XINT_FL_fac_fork_a #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_iszero #1.#2#3#4#5{#5{1[0]}}% \def\XINT_FL_fac_isneg #1.#2#3#4#5{\expandafter\xintError:FactorialOfNegative #5{0[0]}}% \def\XINT_FL_fac_fork_b #1.% {% \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#5{\expandafter\xintError:TooBigFactorial #5{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 \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.% {% \ifnum #1>#2 \expandafter\XINT_FL_fac_loop_exit\fi \expandafter\XINT_FL_fac_vbigloop_loop \the\numexpr #1+\xint_c_i\expandafter.% \the\numexpr #2\expandafter.\the\numexpr\XINT_FL_fac_mul #1!% }% \def\XINT_FL_fac_bigloop_a #1.% {% \expandafter\XINT_FL_fac_bigloop_b \the\numexpr #1+\xint_c_i-\xint_c_ii*((#1-464)/\xint_c_ii).#1.% }% \def\XINT_FL_fac_bigloop_b #1.#2.#3.% {% \expandafter\XINT_FL_fac_medloop_a \the\numexpr #1-\xint_c_i.#3.{\XINT_FL_fac_bigloop_loop #1.#2.}% }% \def\XINT_FL_fac_bigloop_loop #1.#2.% {% \ifnum #1>#2 \expandafter\XINT_FL_fac_loop_exit\fi \expandafter\XINT_FL_fac_bigloop_loop \the\numexpr #1+\xint_c_ii\expandafter.% \the\numexpr #2\expandafter.\the\numexpr\XINT_FL_fac_bigloop_mul #1!% }% \def\XINT_FL_fac_bigloop_mul #1!% {% \expandafter\XINT_FL_fac_mul \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)!% }% \def\XINT_FL_fac_medloop_a #1.% {% \expandafter\XINT_FL_fac_medloop_b \the\numexpr #1+\xint_c_i-\xint_c_iii*((#1-100)/\xint_c_iii).#1.% }% \def\XINT_FL_fac_medloop_b #1.#2.#3.% {% \expandafter\XINT_FL_fac_smallloop_a \the\numexpr #1-\xint_c_i.#3.{\XINT_FL_fac_medloop_loop #1.#2.}% }% \def\XINT_FL_fac_medloop_loop #1.#2.% {% \ifnum #1>#2 \expandafter\XINT_FL_fac_loop_exit\fi \expandafter\XINT_FL_fac_medloop_loop \the\numexpr #1+\xint_c_iii\expandafter.% \the\numexpr #2\expandafter.\the\numexpr\XINT_FL_fac_medloop_mul #1!% }% \def\XINT_FL_fac_medloop_mul #1!% {% \expandafter\XINT_FL_fac_mul \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)*(#1+\xint_c_ii)!% }% \def\XINT_FL_fac_smallloop_a #1.% {% \csname XINT_FL_fac_smallloop_\the\numexpr #1-\xint_c_iv*(#1/\xint_c_iv)\relax \endcsname #1.% }% \expandafter\def\csname XINT_FL_fac_smallloop_1\endcsname #1.#2.% {% \XINT_FL_fac_addzeros #2.100000001!.{2.#1.}{#2}% }% \expandafter\def\csname XINT_FL_fac_smallloop_-2\endcsname #1.#2.% {% \XINT_FL_fac_addzeros #2.100000002!.{3.#1.}{#2}% }% \expandafter\def\csname XINT_FL_fac_smallloop_-1\endcsname #1.#2.% {% \XINT_FL_fac_addzeros #2.100000006!.{4.#1.}{#2}% }% \expandafter\def\csname XINT_FL_fac_smallloop_0\endcsname #1.#2.% {% \XINT_FL_fac_addzeros #2.100000024!.{5.#1.}{#2}% }% \def\XINT_FL_fac_addzeros #1.% {% \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_smallloop_loop #1.#2.% {% \ifnum #1>#2 \expandafter\XINT_FL_fac_loop_exit\fi \expandafter\XINT_FL_fac_smallloop_loop \the\numexpr #1+\xint_c_iv\expandafter.% \the\numexpr #2\expandafter.\romannumeral0\XINT_FL_fac_smallloop_mul #1!% }% \def\XINT_FL_fac_smallloop_mul #1!% {% \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_FL_fac_loop_exit #1!#2]#3{#3#2]}% \def\XINT_FL_fac_mul 1#1!% {\expandafter\XINT_FL_fac_mul_a\the\numexpr\XINT_FL_fac_smallmul 10!{#1}}% \def\XINT_FL_fac_mul_a #1-#2% {% \if#21\xint_afterfi{\expandafter\space\xint_gob_til_exclam}\else \expandafter\space\fi #11\Z!% }% \def\XINT_FL_fac_minimulwc_a #1#2#3#4#5!#6#7#8#9% {% \XINT_FL_fac_minimulwc_b {#1#2#3#4}{#5}{#6#7#8#9}% }% \def\XINT_FL_fac_minimulwc_b #1#2#3#4!#5% {% \expandafter\XINT_FL_fac_minimulwc_c \the\numexpr \xint_c_x^ix+#5+#2*#4.{{#1}{#2}{#3}{#4}}% }% \def\XINT_FL_fac_minimulwc_c 1#1#2#3#4#5#6.#7% {% \expandafter\XINT_FL_fac_minimulwc_d {#1#2#3#4#5}#7{#6}% }% \def\XINT_FL_fac_minimulwc_d #1#2#3#4#5% {% \expandafter\XINT_FL_fac_minimulwc_e \the\numexpr \xint_c_x^ix+#1+#2*#5+#3*#4.{#2}{#4}% }% \def\XINT_FL_fac_minimulwc_e 1#1#2#3#4#5#6.#7#8#9% {% 1#6#9\expandafter!% \the\numexpr\expandafter\XINT_FL_fac_smallmul \the\numexpr \xint_c_x^viii+#1#2#3#4#5+#7*#8!% }% \def\XINT_FL_fac_smallmul 1#1!#21#3!% {% \xint_gob_til_Z #3\XINT_FL_fac_smallmul_end\Z \XINT_FL_fac_minimulwc_a #2!#3!{#1}{#2}% }% \def\XINT_FL_fac_smallmul_end\Z\XINT_FL_fac_minimulwc_a #1!\Z!#2#3[#4]% {% \ifnum #2=\xint_c_ \expandafter\xint_firstoftwo\else \expandafter\xint_secondoftwo \fi {-2\relax[#4]}% {1#2\expandafter!\expandafter-\expandafter1\expandafter [\the\numexpr #4+\xint_c_viii]}% }% \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_flpfac_opt \else\expandafter\XINT_flpfac_noopt \fi #1#2% }% \def\XINT_flpfac_noopt #1#2\xint_relax #3% {% \expandafter\XINT_FL_pfac_fork \the\numexpr \xintNum{#2}\expandafter.% \the\numexpr \xintNum{#3}.\xint_c_i{\XINTdigits}{#1[\XINTdigits]}% }% \def\XINT_flpfac_opt #1[\xint_relax #2]% {% \expandafter\XINT_flpfac_opt_b\the\numexpr #2.#1% }% \def\XINT_flpfac_opt_b #1.#2#3#4% {% \expandafter\XINT_FL_pfac_fork \the\numexpr \xintNum{#3}\expandafter.% \the\numexpr \xintNum{#4}.\xint_c_i{#1}{#2[#1]}% }% \def\XINT_FL_pfac_fork #1#2.#3#4.% {% \unless\ifnum #1#2<#3#4 \xint_dothis\XINT_FL_pfac_one\fi \if-#3\xint_dothis\XINT_FL_pfac_neg \fi \if-#1\xint_dothis\XINT_FL_pfac_zero\fi \ifnum #3#4>\xint_c_x^viii_mone\xint_dothis\XINT_FL_pfac_outofrange\fi \xint_orthat \XINT_FL_pfac_increaseP #1#2.#3#4.% }% \def\XINT_FL_pfac_outofrange #1.#2.#3#4#5{\xintError:OutOfRangePFac #5{0[0]}}% \def\XINT_FL_pfac_one #1.#2.#3#4#5{#5{1[0]}}% \def\XINT_FL_pfac_zero #1.#2.#3#4#5{#5{0[0]}}% \def\XINT_FL_pfac_neg -#1.-#2.% {% \ifnum #1>\xint_c_x^viii\xint_dothis\XINT_FL_pfac_outofrange\fi \xint_orthat {% \ifodd\numexpr#2-#1\relax\xint_afterfi{\expandafter-\romannumeral`&&@}\fi \expandafter\XINT_FL_pfac_increaseP}% \the\numexpr #2-\xint_c_i\expandafter.\the\numexpr#1-\xint_c_i.% }% \def\XINT_FL_pfac_increaseP #1.#2.#3#4% {% \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_pfac_a #1.#2.#3.% {% \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_pfac_addzeroes #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_FL_pfac_addzeroes_exit #1.{ }% \def\XINT_FL_pfac_b #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_FL_pfac_smallloop #1.#2.% {% \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_FL_pfac_smallloop_a #1.#2.% {% \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_FL_pfac_smallloop_b #1.% {% \ifnum #1>98 \expandafter\XINT_FL_pfac_medloop \else \expandafter\XINT_FL_pfac_smallloop \fi #1.% }% \def\XINT_FL_pfac_medloop #1.#2.% {% \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_FL_pfac_medloop_a #1.#2.% {% \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_FL_pfac_medloop_b #1.% {% \ifnum #1>463 \expandafter\XINT_FL_pfac_bigloop \else \expandafter\XINT_FL_pfac_medloop \fi #1.% }% \def\XINT_FL_pfac_bigloop #1.#2.% {% \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_FL_pfac_bigloop_a #1.#2.% {% \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_FL_pfac_bigloop_b #1.% {% \ifnum #1>9999 \expandafter\XINT_FL_pfac_vbigloop \else \expandafter\XINT_FL_pfac_bigloop \fi #1.% }% \def\XINT_FL_pfac_vbigloop #1.#2.% {% \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_FL_pfac_end_iii #1.#2.% {% \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_FL_pfac_end_ii #1.#2.% {% \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_FL_pfac_end_i #1.#2.% {% \expandafter\XINT_FL_fac_out \romannumeral0\expandafter\XINT_FL_fac_mul \the\numexpr \xint_c_x^viii+#1*(#1+\xint_c_i)!% }% \def\XINT_FL_pfac_end_ #1.#2.% {% \expandafter\XINT_FL_fac_out \romannumeral0\expandafter\XINT_FL_fac_mul \the\numexpr \xint_c_x^viii+#1!% }% \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% {% \ifx [#2\expandafter\XINT_flbinom_opt \else\expandafter\XINT_flbinom_noopt \fi #1#2% }% \def\XINT_flbinom_noopt #1#2\xint_relax #3% {% \expandafter\XINT_FL_binom_a \the\numexpr\xintNum{#2}\expandafter.\the\numexpr\xintNum{#3}.\XINTdigits.#1% }% \def\XINT_flbinom_opt #1[\xint_relax #2]#3#4% {% \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#6.% {% \if-#5\xint_dothis \XINT_FL_binom_outofrange\fi \if-#1\xint_dothis \XINT_FL_binom_zero\fi \if-#3\xint_dothis \XINT_FL_binom_zero\fi \if0#1\xint_dothis \XINT_FL_binom_one\fi \if0#3\xint_dothis \XINT_FL_binom_one\fi \ifnum #5#6>\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#6.% }% \def\XINT_FL_binom_outofrange #1.#2.#3.#4.#5% {\xintError:OutOfRangeBinomial #5[#4]{0[0]}}% \def\XINT_FL_binom_one #1.#2.#3.#4.#5{#5[#4]{1[0]}}% \def\XINT_FL_binom_zero #1.#2.#3.#4.#5{#5[#4]{0[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 #1.#2.% {% \expandafter\XINT_flsqrt_a \the\numexpr #2/\xint_c_ii-(#1-\xint_c_i)/\xint_c_ii.#1.% }% \def\XINT_flsqrt_a #1.#2.#3#4.#5.% {% \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_b #1.#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_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.% {\expandafter\XINT_flsqrt_g\romannumeral0\xintinum{#1}\relax.}% \def\XINT_flsqrt_g #1#2#3.{\if\relax#2\xint_dothis{\XINT_flsqrt_h #1}\fi \xint_orthat{\XINT_flsqrt_finish 5.}}% \def\XINT_flsqrt_h #1{\ifnum #1<\xint_c_iii\xint_dothis{\XINT_flsqrt_again}\fi \xint_orthat{\XINT_flsqrt_finish 5.}}% \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 %% %% End of file `xintfrac.sty'.