%% %% 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 v1.2b 2015/10/29 %% Copyright (C) 2013-2015 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}% [2015/10/29 v1.2b 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_firstofthree_thenstop #1#2#3{ #1}% 1.09i \long\def\xint_secondofthree_thenstop #1#2#3{ #2}% \long\def\xint_thirdofthree_thenstop #1#2#3{ #3}% \edef\xint_cleanupzeros_andstop #1#2#3#4% {% \noexpand\expandafter\space\noexpand\the\numexpr #1#2#3#4\relax }% \def\xintSgnFork {\romannumeral0\xintsgnfork }% \def\xintsgnfork #1% {% \ifcase #1 \expandafter\xint_secondofthree_thenstop \or\expandafter\xint_thirdofthree_thenstop \else\expandafter\xint_firstofthree_thenstop \fi }% \def\xintiiIsOne {\romannumeral0\xintiiisone }% \def\xintiiisone #1{\expandafter\XINT_isone\romannumeral`&&@#1\W\Z }% \def\xintIsOne {\romannumeral0\xintisone }% \def\xintisone #1{\expandafter\XINT_isone\romannumeral0\xintnum{#1}\W\Z }% \def\XINT_isOne #1{\romannumeral0\XINT_isone #1\W\Z }% \def\XINT_isone #1#2% {% \xint_gob_til_one #1\XINT_isone_b 1% \expandafter\space\expandafter 0\xint_gob_til_Z #2% }% \def\XINT_isone_b #1\xint_gob_til_Z #2% {% \xint_gob_til_W #2\XINT_isone_yes \W \expandafter\space\expandafter 0\xint_gob_til_Z }% \def\XINT_isone_yes #1\Z { 1}% \let\xintRev\xintReverseDigits \def\xintLen {\romannumeral0\xintlen }% \def\xintlen #1% {% \expandafter\XINT_len_fork \romannumeral0\xintnum{#1}\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_Len #1% variant which does not expand via \xintnum. {% \romannumeral0\XINT_len_fork #1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_len_fork #1% {% \expandafter\XINT_length_loop \xint_UDsignfork #1{0.}% -{0.#1}% \krof }% \def\xintBool #1{\romannumeral`&&@% \csname if#1\endcsname\expandafter1\else\expandafter0\fi }% \def\xintToggle #1{\romannumeral`&&@\iftoggle{#1}{1}{0}}% \def\xintifSgn {\romannumeral0\xintifsgn }% \def\xintifsgn #1% {% \ifcase \xintSgn{#1} \expandafter\xint_secondofthree_thenstop \or\expandafter\xint_thirdofthree_thenstop \else\expandafter\xint_firstofthree_thenstop \fi }% \def\xintiiifSgn {\romannumeral0\xintiiifsgn }% \def\xintiiifsgn #1% {% \ifcase \xintiiSgn{#1} \expandafter\xint_secondofthree_thenstop \or\expandafter\xint_thirdofthree_thenstop \else\expandafter\xint_firstofthree_thenstop \fi }% \def\xintifZero {\romannumeral0\xintifzero }% \def\xintifzero #1% {% \if0\xintSgn{#1}% \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintifNotZero {\romannumeral0\xintifnotzero }% \def\xintifnotzero #1% {% \if0\xintSgn{#1}% \expandafter\xint_secondoftwo_thenstop \else \expandafter\xint_firstoftwo_thenstop \fi }% \def\xintiiifZero {\romannumeral0\xintiiifzero }% \def\xintiiifzero #1% {% \if0\xintiiSgn{#1}% \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintiiifNotZero {\romannumeral0\xintiiifnotzero }% \def\xintiiifnotzero #1% {% \if0\xintiiSgn{#1}% \expandafter\xint_secondoftwo_thenstop \else \expandafter\xint_firstoftwo_thenstop \fi }% \def\xintiiifOne {\romannumeral0\xintiiifone }% \def\xintiiifone #1% {% \if1\xintiiIsOne{#1}% \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintifOne {\romannumeral0\xintifone }% \def\xintifone #1% {% \if1\xintIsOne{#1}% \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \let\xintifTrueAelseB\xintifNotZero \let\xintifFalseAelseB\xintifZero \let\xintifTrue\xintifNotZero \let\xintifTrueFalse\xintifNotZero \def\xintifCmp {\romannumeral0\xintifcmp }% \def\xintifcmp #1#2% {% \ifcase\xintCmp {#1}{#2} \expandafter\xint_secondofthree_thenstop \or\expandafter\xint_thirdofthree_thenstop \else\expandafter\xint_firstofthree_thenstop \fi }% \def\xintiiifCmp {\romannumeral0\xintiiifcmp }% \def\xintiiifcmp #1#2% {% \ifcase\xintiiCmp {#1}{#2} \expandafter\xint_secondofthree_thenstop \or\expandafter\xint_thirdofthree_thenstop \else\expandafter\xint_firstofthree_thenstop \fi }% \def\xintifEq {\romannumeral0\xintifeq }% \def\xintifeq #1#2% {% \if0\xintCmp{#1}{#2}% \expandafter\xint_firstoftwo_thenstop \else\expandafter\xint_secondoftwo_thenstop \fi }% \def\xintiiifEq {\romannumeral0\xintiiifeq }% \def\xintiiifeq #1#2% {% \if0\xintiiCmp{#1}{#2}% \expandafter\xint_firstoftwo_thenstop \else\expandafter\xint_secondoftwo_thenstop \fi }% \def\xintifGt {\romannumeral0\xintifgt }% \def\xintifgt #1#2% {% \if1\xintCmp{#1}{#2}% \expandafter\xint_firstoftwo_thenstop \else\expandafter\xint_secondoftwo_thenstop \fi }% \def\xintiiifGt {\romannumeral0\xintiiifgt }% \def\xintiiifgt #1#2% {% \if1\xintiiCmp{#1}{#2}% \expandafter\xint_firstoftwo_thenstop \else\expandafter\xint_secondoftwo_thenstop \fi }% \def\xintifLt {\romannumeral0\xintiflt }% \def\xintiflt #1#2% {% \ifnum\xintCmp{#1}{#2}<\xint_c_ \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintiiifLt {\romannumeral0\xintiiiflt }% \def\xintiiiflt #1#2% {% \ifnum\xintiiCmp{#1}{#2}<\xint_c_ \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintiiifOdd {\romannumeral0\xintiiifodd }% \def\xintiiifodd #1% {% \if\xintiiOdd{#1}1% \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintifOdd {\romannumeral0\xintifodd }% \def\xintifodd #1% {% \if\xintOdd{#1}1% \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintCmp {\romannumeral0\xintcmp }% \def\xintcmp #1{\expandafter\XINT_icmp\romannumeral0\xintnum{#1}\Z }% \def\xintiiCmp {\romannumeral0\xintiicmp }% \def\xintiicmp #1{\expandafter\XINT_iicmp\romannumeral`&&@#1\Z }% \def\XINT_iicmp #1#2\Z #3% {% \expandafter\XINT_cmp_nfork\expandafter #1\romannumeral`&&@#3\Z #2\Z }% \let\XINT_Cmp \xintiiCmp \def\XINT_icmp #1#2\Z #3% {% \expandafter\XINT_cmp_nfork\expandafter #1\romannumeral0\xintnum{#3}\Z #2\Z }% \def\XINT_cmp_nfork #1#2% {% \xint_UDzerofork #1\XINT_cmp_firstiszero #2\XINT_cmp_secondiszero 0{}% \krof \xint_UDsignsfork #1#2\XINT_cmp_minusminus #1-\XINT_cmp_minusplus #2-\XINT_cmp_plusminus --\XINT_cmp_plusplus \krof #1#2% }% \def\XINT_cmp_firstiszero #1\krof 0#2#3\Z #4\Z {% \xint_UDzerominusfork #2-{ 0}% 0#2{ 1}% 0-{ -1}% \krof }% \def\XINT_cmp_secondiszero #1\krof #20#3\Z #4\Z {% \xint_UDzerominusfork #2-{ 0}% 0#2{ -1}% 0-{ 1}% \krof }% \def\XINT_cmp_plusminus #1\Z #2\Z{ 1}% \def\XINT_cmp_minusplus #1\Z #2\Z{ -1}% \def\XINT_cmp_minusminus --{\expandafter\XINT_opp\romannumeral0\XINT_cmp_plusplus {}{}}% \def\XINT_cmp_plusplus #1#2#3\Z {% \expandafter\XINT_cmp_pp \romannumeral0\expandafter\XINT_sepandrev_andcount \romannumeral0\XINT_zeroes_forviii #2#3\R\R\R\R\R\R\R\R{10}0000001\W #2#3\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 #1% }% \def\XINT_cmp_pp #1.#2\X #3\Z {% \expandafter\XINT_cmp_checklengths \the\numexpr #1\expandafter.% \romannumeral0\expandafter\XINT_sepandrev_andcount \romannumeral0\XINT_zeroes_forviii #3\R\R\R\R\R\R\R\R{10}0000001\W #3\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 \Z!\Z!\Z!\Z!\Z!\W #2\Z!\Z!\Z!\Z!\Z!\W }% \def\XINT_cmp_checklengths #1.#2.% {% \ifnum #1=#2 \expandafter\xint_firstoftwo \else \expandafter\xint_secondoftwo \fi \XINT_cmp_aa {\XINT_cmp_distinctlengths {#1}{#2}}% }% \def\XINT_cmp_distinctlengths #1#2#3\W #4\W {% \ifnum #1>#2 \expandafter\xint_firstoftwo \else \expandafter\xint_secondoftwo \fi { -1}{ 1}% }% %%%%%%%%%%%% \def\XINT_cmp_aa {\expandafter\XINT_cmp_w\the\numexpr\XINT_cmp_a \xint_c_i }% %%%%%%%%%%%% \def\XINT_cmp_a #1!#2!#3!#4!#5\W #6!#7!#8!#9!% {% \XINT_cmp_b #1!#6!#2!#7!#3!#8!#4!#9!#5\W }% \def\XINT_cmp_b #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_cmp_bi \Z \expandafter\XINT_cmp_c\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_cmp_c 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_cmp_d #1% }% \def\XINT_cmp_d #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_cmp_di \Z \expandafter\XINT_cmp_e\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_cmp_e 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_cmp_f #1% }% \def\XINT_cmp_f #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_cmp_fi \Z \expandafter\XINT_cmp_g\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_cmp_g 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_cmp_h #1% }% \def\XINT_cmp_h #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_cmp_hi \Z \expandafter\XINT_cmp_i\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_cmp_i 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_cmp_a #1% }% \def\XINT_cmp_bi\Z \expandafter\XINT_cmp_c\the\numexpr#1+1#2-#3.#4!#5!#6!#7!#8!#9!\Z !\W {% \XINT_cmp_k #1#2!#5!#7!#9!% }% \def\XINT_cmp_di\Z \expandafter\XINT_cmp_e\the\numexpr#1+1#2-#3.#4!#5!#6!#7!#8\W {% \XINT_cmp_k #1#2!#5!#7!% }% \def\XINT_cmp_fi\Z \expandafter\XINT_cmp_g\the\numexpr#1+1#2-#3.#4!#5!#6\W {% \XINT_cmp_k #1#2!#5!% }% \def\XINT_cmp_hi\Z \expandafter\XINT_cmp_i\the\numexpr#1+1#2-#3.#4\W {% \XINT_cmp_k #1#2!% }% %%%%%%%%%%%% \def\XINT_cmp_k #1#2\W {% \xint_UDzerofork #1{-1\relax \XINT_cmp_greater}% 0{-1\relax \XINT_cmp_lessorequal}% \krof }% \def\XINT_cmp_w #1-1#2{#2#11\Z!\W}% \def\XINT_cmp_greater #1\Z!\W{ 1}% \def\XINT_cmp_lessorequal 1#1!% {\xint_gob_til_Z #1\XINT_cmp_equal\Z \xint_gob_til_eightzeroes #1\XINT_cmp_continue 00000000% \XINT_cmp_less }% \def\XINT_cmp_less #1\W { -1}% \def\XINT_cmp_continue 00000000\XINT_cmp_less {\XINT_cmp_lessorequal }% \def\XINT_cmp_equal\Z\xint_gob_til_eightzeroes\Z\XINT_cmp_continue 00000000\XINT_cmp_less\W { 0}% \def\xintEq {\romannumeral0\xinteq }\def\xinteq #1#2{\xintifeq{#1}{#2}{1}{0}}% \def\xintGt {\romannumeral0\xintgt }\def\xintgt #1#2{\xintifgt{#1}{#2}{1}{0}}% \def\xintLt {\romannumeral0\xintlt }\def\xintlt #1#2{\xintiflt{#1}{#2}{1}{0}}% \def\xintLtorEq #1#2{\romannumeral0\xintifgt {#1}{#2}{0}{1}}% \def\xintGtorEq #1#2{\romannumeral0\xintiflt {#1}{#2}{0}{1}}% \def\xintNeq #1#2{\romannumeral0\xintifeq {#1}{#2}{0}{1}}% \def\xintiiEq #1#2{\romannumeral0\xintiiifeq{#1}{#2}{1}{0}}% \def\xintiiGt #1#2{\romannumeral0\xintiiifgt{#1}{#2}{1}{0}}% \def\xintiiLt #1#2{\romannumeral0\xintiiiflt{#1}{#2}{1}{0}}% \def\xintiiLtorEq #1#2{\romannumeral0\xintiiifgt {#1}{#2}{0}{1}}% \def\xintiiGtorEq #1#2{\romannumeral0\xintiiiflt {#1}{#2}{0}{1}}% \def\xintiiNeq #1#2{\romannumeral0\xintiiifeq {#1}{#2}{0}{1}}% \def\xintIsZero {\romannumeral0\xintiszero }% \def\xintiszero #1{\if0\xintSgn{#1}\xint_afterfi{ 1}\else\xint_afterfi{ 0}\fi}% \def\xintIsNotZero {\romannumeral0\xintisnotzero }% \def\xintisnotzero #1{\if0\xintSgn{#1}\xint_afterfi{ 0}\else\xint_afterfi{ 1}\fi}% \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}% \let\xintIsTrue\xintIsNotZero \let\xintNot\xintIsZero \let\xintIsFalse\xintIsZero \def\xintAND {\romannumeral0\xintand }% \def\xintand #1#2{\if0\xintSgn{#1}\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo\fi { 0}{\xintisnotzero{#2}}}% \def\xintOR {\romannumeral0\xintor }% \def\xintor #1#2{\if0\xintSgn{#1}\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo\fi {\xintisnotzero{#2}}{ 1}}% \def\xintXOR {\romannumeral0\xintxor }% \def\xintxor #1#2{\if\xintIsZero{#1}\xintIsZero{#2}% \xint_afterfi{ 0}\else\xint_afterfi{ 1}\fi }% \def\xintANDof {\romannumeral0\xintandof }% \def\xintandof #1{\expandafter\XINT_andof_a\romannumeral`&&@#1\relax }% \def\XINT_andof_a #1{\expandafter\XINT_andof_b\romannumeral`&&@#1\Z }% \def\XINT_andof_b #1% {\xint_gob_til_relax #1\XINT_andof_e\relax\XINT_andof_c #1}% \def\XINT_andof_c #1\Z {\xintifTrueAelseB {#1}{\XINT_andof_a}{\XINT_andof_no}}% \def\XINT_andof_no #1\relax { 0}% \def\XINT_andof_e #1\Z { 1}% \def\xintORof {\romannumeral0\xintorof }% \def\xintorof #1{\expandafter\XINT_orof_a\romannumeral`&&@#1\relax }% \def\XINT_orof_a #1{\expandafter\XINT_orof_b\romannumeral`&&@#1\Z }% \def\XINT_orof_b #1% {\xint_gob_til_relax #1\XINT_orof_e\relax\XINT_orof_c #1}% \def\XINT_orof_c #1\Z {\xintifTrueAelseB {#1}{\XINT_orof_yes}{\XINT_orof_a}}% \def\XINT_orof_yes #1\relax { 1}% \def\XINT_orof_e #1\Z { 0}% \def\xintXORof {\romannumeral0\xintxorof }% \def\xintxorof #1{\expandafter\XINT_xorof_a\expandafter 0\romannumeral`&&@#1\relax }% \def\XINT_xorof_a #1#2{\expandafter\XINT_xorof_b\romannumeral`&&@#2\Z #1}% \def\XINT_xorof_b #1% {\xint_gob_til_relax #1\XINT_xorof_e\relax\XINT_xorof_c #1}% \def\XINT_xorof_c #1\Z #2% {\xintifTrueAelseB {#1}{\if #20\xint_afterfi{\XINT_xorof_a 1}% \else\xint_afterfi{\XINT_xorof_a 0}\fi}% {\XINT_xorof_a #2}% }% \def\XINT_xorof_e #1\Z #2{ #2}% \def\xintGeq {\romannumeral0\xintgeq }% \def\xintgeq #1{\expandafter\XINT_geq\romannumeral0\xintnum{#1}\Z }% \def\xintiiGeq {\romannumeral0\xintiigeq }% \def\xintiigeq #1{\expandafter\XINT_iigeq\romannumeral`&&@#1\Z }% \def\XINT_iigeq #1#2\Z #3% {% \expandafter\XINT_geq_fork\expandafter #1\romannumeral`&&@#3\Z #2\Z }% \let\XINT_geq_pre \xintiigeq % TEMPORAIRE \let\XINT_Geq \xintGeq % TEMPORAIRE ATTENTION FAIT xintNum \def\XINT_geq #1#2\Z #3% {% \expandafter\XINT_geq_fork\expandafter #1\romannumeral0\xintnum{#3}\Z #2\Z }% \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\Z #4\Z {\xint_UDzerofork #2{ 1}0{ 0}\krof }% \def\XINT_geq_secondiszero #1\krof #20#3\Z #4\Z { 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 #1#2#3\Z #4\Z {\XINT_geq_pp #1#4\Z #2#3\Z }% \def\XINT_geq_pp #1\Z {% \expandafter\XINT_geq_pp_a \romannumeral0\expandafter\XINT_sepandrev_andcount \romannumeral0\XINT_zeroes_forviii #1\R\R\R\R\R\R\R\R{10}0000001\W #1\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_geq_pp_a #1.#2\X #3\Z {% \expandafter\XINT_geq_checklengths \the\numexpr #1\expandafter.% \romannumeral0\expandafter\XINT_sepandrev_andcount \romannumeral0\XINT_zeroes_forviii #3\R\R\R\R\R\R\R\R{10}0000001\W #3\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 \Z!\Z!\Z!\Z!\Z!\W #2\Z!\Z!\Z!\Z!\Z!\W }% \def\XINT_geq_checklengths #1.#2.% {% \ifnum #1=#2 \expandafter\xint_firstoftwo \else \expandafter\xint_secondoftwo \fi \XINT_geq_aa {\XINT_geq_distinctlengths {#1}{#2}} }% \def\XINT_geq_distinctlengths #1#2#3\W #4\W {% \ifnum #1>#2 \expandafter\xint_firstoftwo \else \expandafter\xint_secondoftwo \fi { 1}{ 0}% }% %%%%%%%%%%%% \def\XINT_geq_aa {\expandafter\XINT_geq_w\the\numexpr\XINT_geq_a \xint_c_i }% %%%%%%%%%%%% \def\XINT_geq_a #1!#2!#3!#4!#5\W #6!#7!#8!#9!% {% \XINT_geq_b #1!#6!#2!#7!#3!#8!#4!#9!#5\W }% \def\XINT_geq_b #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_geq_bi \Z \expandafter\XINT_geq_c\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_geq_c 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_geq_d #1% }% \def\XINT_geq_d #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_geq_di \Z \expandafter\XINT_geq_e\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_geq_e 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_geq_f #1% }% \def\XINT_geq_f #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_geq_fi \Z \expandafter\XINT_geq_g\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_geq_g 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_geq_h #1% }% \def\XINT_geq_h #1#2#3!#4!% {% \xint_gob_til_Z #2\XINT_geq_hi \Z \expandafter\XINT_geq_i\the\numexpr#1+1#4-#3-\xint_c_i.% }% \def\XINT_geq_i 1#1#2.% {% 1#2\expandafter!\the\numexpr\XINT_geq_a #1% }% \def\XINT_geq_bi\Z \expandafter\XINT_geq_c\the\numexpr#1+1#2-#3.#4!#5!#6!#7!#8!#9!\Z !\W {% \XINT_geq_k #1#2!#5!#7!#9!% }% \def\XINT_geq_di\Z \expandafter\XINT_geq_e\the\numexpr#1+1#2-#3.#4!#5!#6!#7!#8\W {% \XINT_geq_k #1#2!#5!#7!% }% \def\XINT_geq_fi\Z \expandafter\XINT_geq_g\the\numexpr#1+1#2-#3.#4!#5!#6\W {% \XINT_geq_k #1#2!#5!% }% \def\XINT_geq_hi\Z \expandafter\XINT_geq_i\the\numexpr#1+1#2-#3.#4\W {% \XINT_geq_k #1#2!% }% %%%%%%%%%%%% \def\XINT_geq_k #1#2\W {% \xint_UDzerofork #1{-1\relax { 0}}% 0{-1\relax { 1}}% \krof }% \def\XINT_geq_w #1-1#2{#2}% \def\xintiMax {\romannumeral0\xintimax }% \def\xintimax #1% {% \expandafter\xint_max\expandafter {\romannumeral0\xintnum{#1}}% }% \def\xint_max #1#2% {% \expandafter\XINT_max_pre\expandafter {\romannumeral0\xintnum{#2}}{#1}% }% \def\xintiiMax {\romannumeral0\xintiimax }% \def\xintiimax #1% {% \expandafter\xint_iimax\expandafter {\romannumeral`&&@#1}% }% \def\xint_iimax #1#2% {% \expandafter\XINT_max_pre\expandafter {\romannumeral`&&@#2}{#1}% }% \def\XINT_max_pre #1#2{\XINT_max_fork #1\Z #2\Z {#2}{#1}}% \def\XINT_Max #1#2{\romannumeral0\XINT_max_fork #2\Z #1\Z {#1}{#2}}% \def\XINT_max_fork #1#2\Z #3#4\Z {% \xint_UDsignsfork #1#3\XINT_max_minusminus % A < 0, B < 0 #1-\XINT_max_minusplus % B < 0, A >= 0 #3-\XINT_max_plusminus % A < 0, B >= 0 --{\xint_UDzerosfork #1#3\XINT_max_zerozero % A = B = 0 #10\XINT_max_zeroplus % B = 0, A > 0 #30\XINT_max_pluszero % A = 0, B > 0 00\XINT_max_plusplus % A, B > 0 \krof }% \krof {#2}{#4}#1#3% }% \def\XINT_max_zerozero #1#2#3#4{\xint_firstoftwo_thenstop }% \def\XINT_max_zeroplus #1#2#3#4{\xint_firstoftwo_thenstop }% \def\XINT_max_pluszero #1#2#3#4{\xint_secondoftwo_thenstop }% \def\XINT_max_minusplus #1#2#3#4{\xint_firstoftwo_thenstop }% \def\XINT_max_plusminus #1#2#3#4{\xint_secondoftwo_thenstop }% \def\XINT_max_plusplus #1#2#3#4% {% \ifodd\XINT_Geq {#4#2}{#3#1} \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\XINT_max_minusminus #1#2#3#4% {% \ifodd\XINT_Geq {#1}{#2} \expandafter\xint_firstoftwo_thenstop \else \expandafter\xint_secondoftwo_thenstop \fi }% \def\xintiMaxof {\romannumeral0\xintimaxof }% \def\xintimaxof #1{\expandafter\XINT_imaxof_a\romannumeral`&&@#1\relax }% \def\XINT_imaxof_a #1{\expandafter\XINT_imaxof_b\romannumeral0\xintnum{#1}\Z }% \def\XINT_imaxof_b #1\Z #2% {\expandafter\XINT_imaxof_c\romannumeral`&&@#2\Z {#1}\Z}% \def\XINT_imaxof_c #1% {\xint_gob_til_relax #1\XINT_imaxof_e\relax\XINT_imaxof_d #1}% \def\XINT_imaxof_d #1\Z {\expandafter\XINT_imaxof_b\romannumeral0\xintimax {#1}}% \def\XINT_imaxof_e #1\Z #2\Z { #2}% \def\xintiiMaxof {\romannumeral0\xintiimaxof }% \def\xintiimaxof #1{\expandafter\XINT_iimaxof_a\romannumeral`&&@#1\relax }% \def\XINT_iimaxof_a #1{\expandafter\XINT_iimaxof_b\romannumeral`&&@#1\Z }% \def\XINT_iimaxof_b #1\Z #2% {\expandafter\XINT_iimaxof_c\romannumeral`&&@#2\Z {#1}\Z}% \def\XINT_iimaxof_c #1% {\xint_gob_til_relax #1\XINT_iimaxof_e\relax\XINT_iimaxof_d #1}% \def\XINT_iimaxof_d #1\Z {\expandafter\XINT_iimaxof_b\romannumeral0\xintiimax {#1}}% \def\XINT_iimaxof_e #1\Z #2\Z { #2}% \def\xintiMin {\romannumeral0\xintimin }% \def\xintimin #1% {% \expandafter\xint_min\expandafter {\romannumeral0\xintnum{#1}}% }% \def\xint_min #1#2% {% \expandafter\XINT_min_pre\expandafter {\romannumeral0\xintnum{#2}}{#1}% }% \def\xintiiMin {\romannumeral0\xintiimin }% \def\xintiimin #1% {% \expandafter\xint_iimin\expandafter {\romannumeral`&&@#1}% }% \def\xint_iimin #1#2% {% \expandafter\XINT_min_pre\expandafter {\romannumeral`&&@#2}{#1}% }% \def\XINT_min_pre #1#2{\XINT_min_fork #1\Z #2\Z {#2}{#1}}% \def\XINT_Min #1#2{\romannumeral0\XINT_min_fork #2\Z #1\Z {#1}{#2}}% \def\XINT_min_fork #1#2\Z #3#4\Z {% \xint_UDsignsfork #1#3\XINT_min_minusminus % A < 0, B < 0 #1-\XINT_min_minusplus % B < 0, A >= 0 #3-\XINT_min_plusminus % A < 0, B >= 0 --{\xint_UDzerosfork #1#3\XINT_min_zerozero % A = B = 0 #10\XINT_min_zeroplus % B = 0, A > 0 #30\XINT_min_pluszero % A = 0, B > 0 00\XINT_min_plusplus % A, B > 0 \krof }% \krof {#2}{#4}#1#3% }% \def\XINT_min_zerozero #1#2#3#4{\xint_firstoftwo_thenstop }% \def\XINT_min_zeroplus #1#2#3#4{\xint_secondoftwo_thenstop }% \def\XINT_min_pluszero #1#2#3#4{\xint_firstoftwo_thenstop }% \def\XINT_min_minusplus #1#2#3#4{\xint_secondoftwo_thenstop }% \def\XINT_min_plusminus #1#2#3#4{\xint_firstoftwo_thenstop }% \def\XINT_min_plusplus #1#2#3#4% {% \ifodd\XINT_Geq {#4#2}{#3#1} \expandafter\xint_secondoftwo_thenstop \else \expandafter\xint_firstoftwo_thenstop \fi }% \def\XINT_min_minusminus #1#2#3#4% {% \ifodd\XINT_Geq {#1}{#2} \expandafter\xint_secondoftwo_thenstop \else \expandafter\xint_firstoftwo_thenstop \fi }% \def\xintiMinof {\romannumeral0\xintiminof }% \def\xintiminof #1{\expandafter\XINT_iminof_a\romannumeral`&&@#1\relax }% \def\XINT_iminof_a #1{\expandafter\XINT_iminof_b\romannumeral0\xintnum{#1}\Z }% \def\XINT_iminof_b #1\Z #2% {\expandafter\XINT_iminof_c\romannumeral`&&@#2\Z {#1}\Z}% \def\XINT_iminof_c #1% {\xint_gob_til_relax #1\XINT_iminof_e\relax\XINT_iminof_d #1}% \def\XINT_iminof_d #1\Z {\expandafter\XINT_iminof_b\romannumeral0\xintimin {#1}}% \def\XINT_iminof_e #1\Z #2\Z { #2}% \def\xintiiMinof {\romannumeral0\xintiiminof }% \def\xintiiminof #1{\expandafter\XINT_iiminof_a\romannumeral`&&@#1\relax }% \def\XINT_iiminof_a #1{\expandafter\XINT_iiminof_b\romannumeral`&&@#1\Z }% \def\XINT_iiminof_b #1\Z #2% {\expandafter\XINT_iiminof_c\romannumeral`&&@#2\Z {#1}\Z}% \def\XINT_iiminof_c #1% {\xint_gob_til_relax #1\XINT_iiminof_e\relax\XINT_iiminof_d #1}% \def\XINT_iiminof_d #1\Z {\expandafter\XINT_iiminof_b\romannumeral0\xintiimin {#1}}% \def\XINT_iiminof_e #1\Z #2\Z { #2}% \def\xintiiSum {\romannumeral0\xintiisum }% \def\xintiisum #1{\xintiisumexpr #1\relax }% \def\xintiiSumExpr {\romannumeral0\xintiisumexpr }% \def\xintiisumexpr {\expandafter\XINT_sumexpr\romannumeral`&&@}% \def\XINT_sumexpr {\XINT_sum_loop_a 0\Z }% \def\XINT_sum_loop_a #1\Z #2% {\expandafter\XINT_sum_loop_b \romannumeral`&&@#2\Z #1\Z \Z}% \def\XINT_sum_loop_b #1% {\xint_gob_til_relax #1\XINT_sum_finished\relax\XINT_sum_loop_c #1}% \def\XINT_sum_loop_c {\expandafter\XINT_sum_loop_a\romannumeral0\XINT_add_fork }% \def\XINT_sum_finished #1\Z #2\Z \Z { #2}% \def\xintiiPrd {\romannumeral0\xintiiprd }% \def\xintiiprd #1{\xintiiprdexpr #1\relax }% \def\xintiiPrdExpr {\romannumeral0\xintiiprdexpr }% \def\xintiiprdexpr {\expandafter\XINT_prdexpr\romannumeral`&&@}% \def\XINT_prdexpr {\XINT_prod_loop_a 1\Z }% \def\XINT_prod_loop_a #1\Z #2% {\expandafter\XINT_prod_loop_b \romannumeral`&&@#2\Z #1\Z \Z}% \def\XINT_prod_loop_b #1% {\xint_gob_til_relax #1\XINT_prod_finished\relax\XINT_prod_loop_c #1}% \def\XINT_prod_loop_c {\expandafter\XINT_prod_loop_a\romannumeral0\XINT_mul_fork }% \def\XINT_prod_finished\relax\XINT_prod_loop_c #1\Z #2\Z \Z { #2}% \def\xintiiMON {\romannumeral0\xintiimon }% \def\xintiimon #1% {% \ifodd\xintiiLDg {#1} \xint_afterfi{ -1}% \else \xint_afterfi{ 1}% \fi }% \def\xintiiMMON {\romannumeral0\xintiimmon }% \def\xintiimmon #1% {% \ifodd\xintiiLDg {#1} \xint_afterfi{ 1}% \else \xint_afterfi{ -1}% \fi }% \def\xintMON {\romannumeral0\xintmon }% \def\xintmon #1% {% \ifodd\xintLDg {#1} \xint_afterfi{ -1}% \else \xint_afterfi{ 1}% \fi }% \def\xintMMON {\romannumeral0\xintmmon }% \def\xintmmon #1% {% \ifodd\xintLDg {#1} \xint_afterfi{ 1}% \else \xint_afterfi{ -1}% \fi }% \def\xintiiOdd {\romannumeral0\xintiiodd }% \def\xintiiodd #1% {% \ifodd\xintiiLDg{#1} \xint_afterfi{ 1}% \else \xint_afterfi{ 0}% \fi }% \def\xintiiEven {\romannumeral0\xintiieven }% \def\xintiieven #1% {% \ifodd\xintiiLDg{#1} \xint_afterfi{ 0}% \else \xint_afterfi{ 1}% \fi }% \def\xintOdd {\romannumeral0\xintodd }% \def\xintodd #1% {% \ifodd\xintLDg{#1} \xint_afterfi{ 1}% \else \xint_afterfi{ 0}% \fi }% \def\xintEven {\romannumeral0\xinteven }% \def\xinteven #1% {% \ifodd\xintLDg{#1} \xint_afterfi{ 0}% \else \xint_afterfi{ 1}% \fi }% \def\xintDSL {\romannumeral0\xintdsl }% \def\xintdsl #1% {% \expandafter\XINT_dsl \romannumeral`&&@#1\Z }% \def\XINT_DSL #1{\romannumeral0\XINT_dsl #1\Z }% \def\XINT_dsl #1% {% \xint_gob_til_zero #1\xint_dsl_zero 0\XINT_dsl_ #1% }% \def\xint_dsl_zero 0\XINT_dsl_ 0#1\Z { 0}% \def\XINT_dsl_ #1\Z { #10}% \def\xintDSR {\romannumeral0\xintdsr }% \def\xintdsr #1% {% \expandafter\XINT_dsr_a\expandafter {\romannumeral`&&@#1}\W\Z }% \def\XINT_DSR #1{\romannumeral0\XINT_dsr_a {#1}\W\Z }% \def\XINT_dsr_a {% \expandafter\XINT_dsr_b\romannumeral0\xintreverseorder }% \def\XINT_dsr_b #1#2#3\Z {% \xint_gob_til_W #2\xint_dsr_onedigit\W \xint_gob_til_minus #2\xint_dsr_onedigit-% \expandafter\XINT_dsr_removew \romannumeral0\xintreverseorder {#2#3}% }% \def\xint_dsr_onedigit #1\xintreverseorder #2{ 0}% \def\XINT_dsr_removew #1\W { }% \def\xintDSHr {\romannumeral0\xintdshr }% \def\xintdshr #1% {% \expandafter\XINT_dshr_checkxpositive \the\numexpr #1\relax\Z }% \def\XINT_dshr_checkxpositive #1% {% \xint_UDzerominusfork 0#1\XINT_dshr_xzeroorneg #1-\XINT_dshr_xzeroorneg 0-\XINT_dshr_xpositive \krof #1% }% \def\XINT_dshr_xzeroorneg #1\Z #2{ 0}% \def\XINT_dshr_xpositive #1\Z {% \expandafter\xint_secondoftwo_thenstop\romannumeral0\xintdsx {#1}% }% \def\xintDSH {\romannumeral0\xintdsh }% \def\xintdsh #1#2% {% \expandafter\xint_dsh\expandafter {\romannumeral`&&@#2}{#1}% }% \def\xint_dsh #1#2% {% \expandafter\XINT_dsh_checksignx \the\numexpr #2\relax\Z {#1}% }% \def\XINT_dsh_checksignx #1% {% \xint_UDzerominusfork #1-\XINT_dsh_xiszero 0#1\XINT_dsx_xisNeg_checkA % on passe direct dans DSx 0-{\XINT_dsh_xisPos #1}% \krof }% \def\XINT_dsh_xiszero #1\Z #2{ #2}% \def\XINT_dsh_xisPos #1\Z #2% {% \expandafter\xint_firstoftwo_thenstop \romannumeral0\XINT_dsx_checksignA #2\Z {#1}% via DSx }% \def\xintDSx {\romannumeral0\xintdsx }% \def\xintdsx #1#2% {% \expandafter\xint_dsx\expandafter {\romannumeral`&&@#2}{#1}% }% \def\xint_dsx #1#2% {% \expandafter\XINT_dsx_checksignx \the\numexpr #2\relax\Z {#1}% }% \def\XINT_DSx #1#2{\romannumeral0\XINT_dsx_checksignx #1\Z {#2}}% \def\XINT_dsx #1#2{\XINT_dsx_checksignx #1\Z {#2}}% \def\XINT_dsx_checksignx #1% {% \xint_UDzerominusfork #1-\XINT_dsx_xisZero 0#1\XINT_dsx_xisNeg_checkA 0-{\XINT_dsx_xisPos #1}% \krof }% \def\XINT_dsx_xisZero #1\Z #2{ {#2}{0}}% attention comme x > 0 \def\XINT_dsx_xisNeg_checkA #1\Z #2% {% \XINT_dsx_xisNeg_checkA_ #2\Z {#1}% }% \def\XINT_dsx_xisNeg_checkA_ #1#2\Z #3% {% \xint_gob_til_zero #1\XINT_dsx_xisNeg_Azero 0% \XINT_dsx_xisNeg_checkx {#3}{#3}{}\Z {#1#2}% }% \def\XINT_dsx_xisNeg_Azero #1\Z #2{ 0}% \def\XINT_dsx_xisNeg_checkx #1% {% \ifnum #1>1000000 \xint_afterfi {\xintError:TooBigDecimalShift \expandafter\space\expandafter 0\xint_gobble_iv }% \else \expandafter \XINT_dsx_zeroloop \fi }% \def\XINT_dsx_addzerosnofuss #1{\XINT_dsx_zeroloop {#1}{}\Z }% \def\XINT_dsx_zeroloop #1#2% {% \ifnum #1<\xint_c_ix \XINT_dsx_exita\fi \expandafter\XINT_dsx_zeroloop\expandafter {\the\numexpr #1-\xint_c_viii}{#200000000}% }% \def\XINT_dsx_exita\fi\expandafter\XINT_dsx_zeroloop {% \fi\expandafter\XINT_dsx_exitb }% \def\XINT_dsx_exitb #1#2% {% \expandafter\expandafter\expandafter \XINT_dsx_addzeros\csname xint_gobble_\romannumeral -#1\endcsname #2% }% \def\XINT_dsx_addzeros #1\Z #2{ #2#1}% \def\XINT_dsx_xisPos #1\Z #2% {% \XINT_dsx_checksignA #2\Z {#1}% }% \def\XINT_dsx_checksignA #1% {% \xint_UDzerominusfork #1-\XINT_dsx_AisZero 0#1\XINT_dsx_AisNeg 0-{\XINT_dsx_AisPos #1}% \krof }% \def\XINT_dsx_AisZero #1\Z #2{ {0}{0}}% \def\XINT_dsx_AisNeg #1\Z #2% {% \expandafter\XINT_dsx_AisNeg_dosplit_andcheckfirst \romannumeral0\XINT_split_checksizex {#2}{#1}% }% \def\XINT_dsx_AisNeg_dosplit_andcheckfirst #1% {% \XINT_dsx_AisNeg_checkiffirstempty #1\Z }% \def\XINT_dsx_AisNeg_checkiffirstempty #1% {% \xint_gob_til_Z #1\XINT_dsx_AisNeg_finish_zero\Z \XINT_dsx_AisNeg_finish_notzero #1% }% \def\XINT_dsx_AisNeg_finish_zero\Z \XINT_dsx_AisNeg_finish_notzero\Z #1% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {-#1}}{0}% }% \def\XINT_dsx_AisNeg_finish_notzero #1\Z #2% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {#2}}{-#1}% }% \def\XINT_dsx_AisPos #1\Z #2% {% \expandafter\XINT_dsx_AisPos_finish \romannumeral0\XINT_split_checksizex {#2}{#1}% }% \def\XINT_dsx_AisPos_finish #1#2% {% \expandafter\XINT_dsx_end \expandafter {\romannumeral0\XINT_num {#2}}% {\romannumeral0\XINT_num {#1}}% }% \edef\XINT_dsx_end #1#2% {% \noexpand\expandafter\space\noexpand\expandafter{#2}{#1}% }% \def\xintDecSplitL {\romannumeral0\xintdecsplitl }% \def\xintDecSplitR {\romannumeral0\xintdecsplitr }% \def\xintdecsplitl {% \expandafter\xint_firstoftwo_thenstop \romannumeral0\xintdecsplit }% \def\xintdecsplitr {% \expandafter\xint_secondoftwo_thenstop \romannumeral0\xintdecsplit }% \def\xintDecSplit {\romannumeral0\xintdecsplit }% \def\xintdecsplit #1#2% {% \expandafter \xint_split \expandafter {\romannumeral0\xintiiabs {#2}}{#1}% fait expansion de A }% \def\xint_split #1#2% {% \expandafter\XINT_split_checksizex\expandafter{\the\numexpr #2}{#1}% }% \def\XINT_split_checksizex #1% 999999999 is anyhow very big, could be reduced {% \ifnum\numexpr\XINT_Abs{#1}>999999999 \xint_afterfi {\xintError:TooBigDecimalSplit\XINT_split_bigx }% \else \expandafter\XINT_split_xfork \fi #1\Z }% \def\XINT_split_bigx #1\Z #2% {% \ifcase\XINT_cntSgn #1\Z \or \xint_afterfi { {}{#2}}% positive big x \else \xint_afterfi { {#2}{}}% negative big x \fi }% \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\Z #2{ {#2}{}}% \def\XINT_split_fromleft #1\Z #2% {% \XINT_split_fromleft_loop {#1}{}#2\W\W\W\W\W\W\W\W\Z }% \def\XINT_split_fromleft_loop #1% {% \ifnum #1<\xint_c_viii\XINT_split_fromleft_exita\fi \expandafter\XINT_split_fromleft_loop_perhaps\expandafter {\the\numexpr #1-\xint_c_viii\expandafter}\XINT_split_fromleft_eight }% \def\XINT_split_fromleft_eight #1#2#3#4#5#6#7#8#9{#9{#1#2#3#4#5#6#7#8#9}}% \def\XINT_split_fromleft_loop_perhaps #1#2% {% \xint_gob_til_W #2\XINT_split_fromleft_toofar\W \XINT_split_fromleft_loop {#1}% }% \def\XINT_split_fromleft_toofar\W\XINT_split_fromleft_loop #1#2#3\Z {% \XINT_split_fromleft_toofar_b #2\Z }% \def\XINT_split_fromleft_toofar_b #1\W #2\Z { {#1}{}}% \def\XINT_split_fromleft_exita\fi \expandafter\XINT_split_fromleft_loop_perhaps\expandafter #1#2% {\fi \XINT_split_fromleft_exitb #1}% \def\XINT_split_fromleft_exitb\the\numexpr #1-\xint_c_viii\expandafter {% \csname XINT_split_fromleft_endsplit_\romannumeral #1\endcsname }% \def\XINT_split_fromleft_endsplit_ #1#2\W #3\Z { {#1}{#2}}% \def\XINT_split_fromleft_endsplit_i #1#2% {\XINT_split_fromleft_checkiftoofar #2{#1#2}}% \def\XINT_split_fromleft_endsplit_ii #1#2#3% {\XINT_split_fromleft_checkiftoofar #3{#1#2#3}}% \def\XINT_split_fromleft_endsplit_iii #1#2#3#4% {\XINT_split_fromleft_checkiftoofar #4{#1#2#3#4}}% \def\XINT_split_fromleft_endsplit_iv #1#2#3#4#5% {\XINT_split_fromleft_checkiftoofar #5{#1#2#3#4#5}}% \def\XINT_split_fromleft_endsplit_v #1#2#3#4#5#6% {\XINT_split_fromleft_checkiftoofar #6{#1#2#3#4#5#6}}% \def\XINT_split_fromleft_endsplit_vi #1#2#3#4#5#6#7% {\XINT_split_fromleft_checkiftoofar #7{#1#2#3#4#5#6#7}}% \def\XINT_split_fromleft_endsplit_vii #1#2#3#4#5#6#7#8% {\XINT_split_fromleft_checkiftoofar #8{#1#2#3#4#5#6#7#8}}% \def\XINT_split_fromleft_checkiftoofar #1#2#3\W #4\Z {% \xint_gob_til_W #1\XINT_split_fromleft_wenttoofar\W \space {#2}{#3}% }% \def\XINT_split_fromleft_wenttoofar\W\space #1% {% \XINT_split_fromleft_wenttoofar_b #1\Z }% \def\XINT_split_fromleft_wenttoofar_b #1\W #2\Z { {#1}}% \def\XINT_split_fromright #1\Z #2% {% \expandafter \XINT_split_fromright_a \expandafter {\romannumeral0\xintreverseorder {#2}}{#1}{#2}% }% \def\XINT_split_fromright_a #1#2% {% \XINT_split_fromright_loop {#2}{}#1\W\W\W\W\W\W\W\W\Z }% \def\XINT_split_fromright_loop #1% {% \ifnum #1<\xint_c_viii\XINT_split_fromright_exita\fi \expandafter\XINT_split_fromright_loop_perhaps\expandafter {\the\numexpr #1-\xint_c_viii\expandafter }\XINT_split_fromright_eight }% \def\XINT_split_fromright_eight #1#2#3#4#5#6#7#8#9{#9{#9#8#7#6#5#4#3#2#1}}% \def\XINT_split_fromright_loop_perhaps #1#2% {% \xint_gob_til_W #2\XINT_split_fromright_toofar\W \XINT_split_fromright_loop {#1}% }% \def\XINT_split_fromright_toofar\W\XINT_split_fromright_loop #1#2#3\Z { {}}% \def\XINT_split_fromright_exita\fi \expandafter\XINT_split_fromright_loop_perhaps\expandafter #1#2% {\fi \XINT_split_fromright_exitb #1}% \def\XINT_split_fromright_exitb\the\numexpr #1-\xint_c_viii\expandafter {% \csname XINT_split_fromright_endsplit_\romannumeral #1\endcsname }% \edef\XINT_split_fromright_endsplit_ #1#2\W #3\Z #4% {% \noexpand\expandafter\space\noexpand\expandafter {\noexpand\romannumeral0\noexpand\xintreverseorder {#2}}{#1}% }% \def\XINT_split_fromright_endsplit_i #1#2% {\XINT_split_fromright_checkiftoofar #2{#2#1}}% \def\XINT_split_fromright_endsplit_ii #1#2#3% {\XINT_split_fromright_checkiftoofar #3{#3#2#1}}% \def\XINT_split_fromright_endsplit_iii #1#2#3#4% {\XINT_split_fromright_checkiftoofar #4{#4#3#2#1}}% \def\XINT_split_fromright_endsplit_iv #1#2#3#4#5% {\XINT_split_fromright_checkiftoofar #5{#5#4#3#2#1}}% \def\XINT_split_fromright_endsplit_v #1#2#3#4#5#6% {\XINT_split_fromright_checkiftoofar #6{#6#5#4#3#2#1}}% \def\XINT_split_fromright_endsplit_vi #1#2#3#4#5#6#7% {\XINT_split_fromright_checkiftoofar #7{#7#6#5#4#3#2#1}}% \def\XINT_split_fromright_endsplit_vii #1#2#3#4#5#6#7#8% {\XINT_split_fromright_checkiftoofar #8{#8#7#6#5#4#3#2#1}}% \def\XINT_split_fromright_checkiftoofar #1% {% \xint_gob_til_W #1\XINT_split_fromright_wenttoofar\W \XINT_split_fromright_endsplit_ }% \def\XINT_split_fromright_wenttoofar\W\XINT_split_fromright_endsplit_ #1\Z #2% { {}{#2}}% \def\xintiiSqrt {\romannumeral0\xintiisqrt }% \def\xintiiSqrtR {\romannumeral0\xintiisqrtr }% \def\xintiiSquareRoot {\romannumeral0\xintiisquareroot }% \def\xintiSqrt {\romannumeral0\xintisqrt }% \def\xintiSquareRoot {\romannumeral0\xintisquareroot }% \def\xintisqrt {\expandafter\XINT_sqrt_post\romannumeral0\xintisquareroot }% \def\xintiisqrt {\expandafter\XINT_sqrt_post\romannumeral0\xintiisquareroot }% \def\xintiisqrtr {\expandafter\XINT_sqrtr_post\romannumeral0\xintiisquareroot }% \def\XINT_sqrt_post #1#2{\XINT_dec_pos #1\Z }% \def\XINT_sqrtr_post #1#2{\xintiiifLt {#2}{#1}{ #1}{\XINT_dec_pos #1\Z}}% \def\xintisquareroot #1% {\expandafter\XINT_sqrt_checkin\romannumeral0\xintnum{#1}\Z }% \def\xintiisquareroot #1{\expandafter\XINT_sqrt_checkin\romannumeral`&&@#1\Z }% \def\XINT_sqrt_checkin #1% {% \xint_UDzerominusfork #1-\XINT_sqrt_iszero 0#1\XINT_sqrt_isneg 0-{\XINT_sqrt #1}% \krof }% \def\XINT_sqrt_iszero #1\Z { 11}% \edef\XINT_sqrt_isneg #1\Z {\noexpand\xintError:RootOfNegative\space 11}% \def\XINT_sqrt #1\Z {% \expandafter\XINT_sqrt_start\expandafter {\romannumeral0\xintlength {#1}}{#1}% }% \def\XINT_sqrt_start #1% {% \ifnum #1<\xint_c_x \expandafter\XINT_sqrt_small_a \else \expandafter\XINT_sqrt_big_a \fi {#1}% }% \def\XINT_sqrt_small_a #1{\XINT_sqrt_a {#1}\XINT_sqrt_small_d }% \def\XINT_sqrt_big_a #1{\XINT_sqrt_a {#1}\XINT_sqrt_big_d }% \def\XINT_sqrt_a #1% {% \ifodd #1 \expandafter\XINT_sqrt_bB \else \expandafter\XINT_sqrt_bA \fi {#1}% }% \def\XINT_sqrt_bA #1#2#3% {% \XINT_sqrt_bA_b #3\Z #2{#1}{#3}% }% \def\XINT_sqrt_bA_b #1#2#3\Z {% \XINT_sqrt_c {#1#2}% }% \def\XINT_sqrt_bB #1#2#3% {% \XINT_sqrt_bB_b #3\Z #2{#1}{#3}% }% \def\XINT_sqrt_bB_b #1#2\Z {% \XINT_sqrt_c #1% }% \def\XINT_sqrt_c #1#2% {% \expandafter #2\expandafter {\the\numexpr\ifnum #1>\xint_c_iii \ifnum #1>\xint_c_viii \ifnum #1>15 \ifnum #1>24 \ifnum #1>35 \ifnum #1>48 \ifnum #1>63 \ifnum #1>80 10\else 9\fi \else 8\fi \else 7\fi \else 6\fi \else 5\fi \else 4\fi \else 3\fi \else 2\fi \relax }% }% \def\XINT_sqrt_small_d #1#2% {% \expandafter\XINT_sqrt_small_e\expandafter {\the\numexpr #1\ifcase \numexpr #2/\xint_c_ii-\xint_c_i\relax \or 0\or 00\or 000\or 0000\fi }% }% \def\XINT_sqrt_small_e #1#2% {% \expandafter\XINT_sqrt_small_f\expandafter {\the\numexpr #1*#1-#2}{#1}% }% \def\XINT_sqrt_small_f #1#2% {% \expandafter\XINT_sqrt_small_g\expandafter {\the\numexpr ((#1+#2)/(\xint_c_ii*#2))-\xint_c_i}{#1}{#2}% }% \def\XINT_sqrt_small_g #1% {% \ifnum #1>\xint_c_ \expandafter\XINT_sqrt_small_h \else \expandafter\XINT_sqrt_small_end \fi {#1}% }% \def\XINT_sqrt_small_h #1#2#3% {% \expandafter\XINT_sqrt_small_f\expandafter {\the\numexpr #2-\xint_c_ii*#1*#3+#1*#1\expandafter}\expandafter {\the\numexpr #3-#1}% }% \def\XINT_sqrt_small_end #1#2#3{ {#3}{#2}}% \def\XINT_sqrt_big_d #1#2% {% \ifodd #2 \expandafter\expandafter\expandafter\XINT_sqrt_big_eB \else \expandafter\expandafter\expandafter\XINT_sqrt_big_eA \fi \expandafter {\the\numexpr #2/\xint_c_ii }{#1}% }% \def\XINT_sqrt_big_eA #1#2#3% {% \XINT_sqrt_big_eA_a #3\Z {#2}{#1}{#3}% }% \def\XINT_sqrt_big_eA_a #1#2#3#4#5#6#7#8#9\Z {% \XINT_sqrt_big_eA_b {#1#2#3#4#5#6#7#8}% }% \def\XINT_sqrt_big_eA_b #1#2% {% \expandafter\XINT_sqrt_big_f \romannumeral0\XINT_sqrt_small_e {#2000}{#1}{#1}% }% \def\XINT_sqrt_big_eB #1#2#3% {% \XINT_sqrt_big_eB_a #3\Z {#2}{#1}{#3}% }% \def\XINT_sqrt_big_eB_a #1#2#3#4#5#6#7#8#9% {% \XINT_sqrt_big_eB_b {#1#2#3#4#5#6#7#8#9}% }% \def\XINT_sqrt_big_eB_b #1#2\Z #3% {% \expandafter\XINT_sqrt_big_f \romannumeral0\XINT_sqrt_small_e {#30000}{#1}{#1}% }% \def\XINT_sqrt_big_f #1#2#3#4% {% \expandafter\XINT_sqrt_big_f_a\expandafter {\the\numexpr #2+#3\expandafter}\expandafter {\romannumeral0\XINT_dsx_addzerosnofuss {\numexpr #4-\xint_c_iv\relax}{#1}}{#4}% }% \def\XINT_sqrt_big_f_a #1#2#3#4% {% \expandafter\XINT_sqrt_big_g\expandafter {\romannumeral0\xintiisub {\XINT_dsx_addzerosnofuss {\numexpr \xint_c_ii*#3-\xint_c_viii\relax}{#1}}{#4}}% {#2}{#3}% }% \def\XINT_sqrt_big_g #1#2% {% \expandafter\XINT_sqrt_big_j \romannumeral0\xintiidivision{#1}{\romannumeral0\XINT_dbl_pos #2\Z}{#2}% }% \def\XINT_sqrt_big_j #1% {% \if0\XINT_Sgn #1\Z \expandafter \XINT_sqrt_big_end \else \expandafter \XINT_sqrt_big_k \fi {#1}% }% \def\XINT_sqrt_big_k #1#2#3% {% \expandafter\XINT_sqrt_big_l\expandafter {\romannumeral0\xintiisub {#3}{#1}}% {\romannumeral0\xintiiadd {#2}{\xintiiSqr {#1}}}% }% \def\XINT_sqrt_big_l #1#2% {% \expandafter\XINT_sqrt_big_g\expandafter {#2}{#1}% }% \def\XINT_sqrt_big_end #1#2#3#4{ {#3}{#2}}% \def\xintiiE {\romannumeral0\xintiie }% used in \xintMod. \def\xintiie #1#2% {\expandafter\XINT_iie\the\numexpr #2\expandafter.\expandafter{\romannumeral`&&@#1}}% \def\XINT_iie #1.#2{\ifnum#1>\xint_c_ \xint_dothis{\xint_dsh {#2}{-#1}}\fi \xint_orthat{ #2}}% \catcode`! 11 \def\xintMax {\Did_you_mean_iiMax?or_load_xintfrac!}% \def\xintMin {\Did_you_mean_iiMin?or_load_xintfrac!}% \def\xintMaxof {\Did_you_mean_iMaxof?or_load_xintfrac!}% \def\xintMinof {\Did_you_mean_iMinof?or_load_xintfrac!}% \def\xintSum {\Did_you_mean_iiSum?or_load_xintfrac!}% \def\xintPrd {\Did_you_mean_iiPrd?or_load_xintfrac!}% \def\xintPrdExpr {\Did_you_mean_iiPrdExpr?or_load_xintfrac!}% \def\xintSumExpr {\Did_you_mean_iiSumExpr?or_load_xintfrac!}% \XINT_restorecatcodes_endinput% \endinput %% %% End of file `xint.sty'.