From 8130b636b82bbc55d48a69eb8c28c4e966d33f1b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 3 Nov 2013 23:44:08 +0000 Subject: xint git-svn-id: svn://tug.org/texlive/trunk@32053 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/generic/xint/xint.sty | 621 +++++++++++++--------- Master/texmf-dist/tex/generic/xint/xintbinhex.sty | 12 +- Master/texmf-dist/tex/generic/xint/xintcfrac.sty | 4 +- Master/texmf-dist/tex/generic/xint/xintexpr.sty | 4 +- Master/texmf-dist/tex/generic/xint/xintfrac.sty | 83 +-- Master/texmf-dist/tex/generic/xint/xintgcd.sty | 12 +- Master/texmf-dist/tex/generic/xint/xintseries.sty | 4 +- 7 files changed, 424 insertions(+), 316 deletions(-) (limited to 'Master/texmf-dist/tex/generic') diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty index 30747397538..dca6c247cfb 100644 --- a/Master/texmf-dist/tex/generic/xint/xint.sty +++ b/Master/texmf-dist/tex/generic/xint/xint.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09d of October 22, 2013) +%% The xint bundle (version 1.09e of October 29, 2013) %% xint: Expandable operations on long numbers %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -152,7 +152,7 @@ \fi \XINT_providespackage \ProvidesPackage {xint}% - [2013/10/22 v1.09d Expandable operations on long numbers (jfB)]% + [2013/10/29 v1.09e Expandable operations on long numbers (jfB)]% \def\xint_gobble_ {}% \def\xint_gobble_i #1{}% \def\xint_gobble_ii #1#2{}% @@ -164,8 +164,8 @@ \def\xint_gobble_viii #1#2#3#4#5#6#7#8{}% \def\xint_firstofone #1{#1}% \xint_firstofone{\let\XINT_sptoken= } % 1.09d, 2013/10/22 -\def\xint_firstoftwo #1#2{#1}% -\def\xint_secondoftwo #1#2{#2}% +\long\def\xint_firstoftwo #1#2{#1}% made long in 1.09e, 2013/10/28 +\long\def\xint_secondoftwo #1#2{#2}% \def\xint_firstoftwo_andstop #1#2{ #1}% \def\xint_secondoftwo_andstop #1#2{ #2}% \def\xint_exchangetwo_keepbraces_andstop #1#2{ {#2}{#1}}% @@ -173,6 +173,7 @@ \def\xint_secondofthree #1#2#3{#2}% \def\xint_thirdofthree #1#2#3{#3}% \def\xint_minus_andstop { -}% +\def\xint_bye #1\xint_bye {}% \def\xint_gob_til_R #1\R {}% \def\xint_gob_til_W #1\W {}% \def\xint_gob_til_Z #1\Z {}% @@ -182,8 +183,9 @@ \def\xint_gob_til_minus #1-{}% \def\xint_gob_til_zeros_iii #1000{}% \def\xint_gob_til_zeros_iv #10000{}% +\let\xint_relax\relax +\def\xint_brelax {\xint_relax }% \def\xint_gob_til_relax #1\relax {}% -\def\xint_gob_til_xint_undef #1\xint_undef {}% \def\xint_gob_til_xint_relax #1\xint_relax {}% \def\xint_UDzerofork #10\dummy #2#3\krof {#2}% \def\xint_UDsignfork #1-\dummy #2#3\krof {#2}% @@ -193,8 +195,6 @@ \def\xint_UDzerominusfork #10-\dummy #2#3\krof {#2}% \def\xint_UDsignsfork #1--\dummy #2#3\krof {#2}% \def\xint_afterfi #1#2\fi {\fi #1}% -\let\xint_relax\relax -\def\xint_braced_xint_relax {\xint_relax }% \chardef\xint_c_ 0 \chardef\xint_c_i 1 \chardef\xint_c_ii 2 @@ -210,17 +210,16 @@ \def\xintrev #1% {% \expandafter\XINT_rev_fork - \romannumeral-`0#1\xint_relax % empty #1 ok - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \romannumeral-`0#1\xint_relax % empty #1 ok, \xint_relax stops expansion + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\XINT_rev_fork #1% {% \xint_UDsignfork - #1\dummy {\expandafter\xint_minus_andstop - \romannumeral0\XINT_rord_main {}}% - -\dummy {\XINT_rord_main {}#1}% + #1\dummy {\expandafter\xint_minus_andstop\romannumeral0\XINT_rord_main {}}% + -\dummy {\XINT_rord_main {}#1}% \krof }% \def\XINT_Rev {\romannumeral0\XINT_rev }% @@ -229,16 +228,16 @@ {% \XINT_rord_main {}#1% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\XINT_rord_main #1#2#3#4#5#6#7#8#9% {% - \xint_gob_til_xint_undef #9\XINT_rord_cleanup\xint_undef + \xint_bye #9\XINT_rord_cleanup\xint_bye \XINT_rord_main {#9#8#7#6#5#4#3#2#1}% }% -\def\XINT_rord_cleanup\xint_undef\XINT_rord_main #1#2\xint_relax +\def\XINT_rord_cleanup\xint_bye\XINT_rord_main #1#2\xint_relax {% \expandafter\space\xint_gob_til_xint_relax #1% }% @@ -248,20 +247,20 @@ {% \expandafter\XINT_revwbr_loop\expandafter{\expandafter}% \romannumeral-`0#1\xint_relax\xint_relax\xint_relax\xint_relax - \xint_relax\xint_relax\xint_relax\xint_relax\Z + \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\xintrevwithbracesnoexpand #1% {% \XINT_revwbr_loop {}% #1\xint_relax\xint_relax\xint_relax\xint_relax - \xint_relax\xint_relax\xint_relax\xint_relax\Z + \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_revwbr_loop #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_revwbr_finish_a\xint_relax \XINT_revwbr_loop {{#9}{#8}{#7}{#6}{#5}{#4}{#3}{#2}#1}% }% -\def\XINT_revwbr_finish_a\xint_relax\XINT_revwbr_loop #1#2\Z +\def\XINT_revwbr_finish_a\xint_relax\XINT_revwbr_loop #1#2\xint_bye {% \XINT_revwbr_finish_b #2\R\R\R\R\R\R\R\Z #1% }% @@ -288,14 +287,14 @@ {% \expandafter\XINT_length_fork \romannumeral0\xintnum{#1}\xint_relax\xint_relax\xint_relax\xint_relax - \xint_relax\xint_relax\xint_relax\xint_relax\Z + \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \let\xintLen\xintiLen \let\xintlen\xintilen \def\XINT_Len #1% {% \romannumeral0\XINT_length_fork #1\xint_relax\xint_relax\xint_relax\xint_relax - \xint_relax\xint_relax\xint_relax\xint_relax\Z + \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_length_fork #1% {% @@ -310,7 +309,7 @@ {% \XINT_length_loop {0}#1\xint_relax\xint_relax\xint_relax\xint_relax - \xint_relax\xint_relax\xint_relax\xint_relax\Z + \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \let\xintLength\XINT_Length \def\XINT_length_loop #1#2#3#4#5#6#7#8#9% @@ -319,7 +318,7 @@ \expandafter\XINT_length_loop\expandafter {\the\numexpr #1+8\relax}% }% \def\XINT_length_finish_a\xint_relax - \expandafter\XINT_length_loop\expandafter #1#2\Z + \expandafter\XINT_length_loop\expandafter #1#2\xint_bye {% \XINT_length_finish_b #2\W\W\W\W\W\W\W\Z {#1}% }% @@ -335,30 +334,29 @@ #7\XINT_length_finish_c 2% \W\XINT_length_finish_c 1\Z }% -\def\XINT_length_finish_c #1#2\Z #3% - {\expandafter\space\the\numexpr #3-#1\relax}% +\def\XINT_length_finish_c #1#2\Z #3{\expandafter\space\the\numexpr #3-#1\relax}% \def\xintCSVtoList {\romannumeral0\xintcsvtolist }% \def\xintCSVtoListNoExpand {\romannumeral0\xintcsvtolistnoexpand }% \def\xintcsvtolist #1% {% \expandafter\XINT_csvtol_loop_a\expandafter {\expandafter}\romannumeral-`0#1% - ,\xint_undef,\xint_undef,\xint_undef,\xint_undef - ,\xint_undef,\xint_undef,\xint_undef,\xint_undef,\Z + ,\xint_bye,\xint_bye,\xint_bye,\xint_bye + ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% \def\xintcsvtolistnoexpand #1% {% \XINT_csvtol_loop_a - {}#1,\xint_undef,\xint_undef,\xint_undef,\xint_undef - ,\xint_undef,\xint_undef,\xint_undef,\xint_undef,\Z + {}#1,\xint_bye,\xint_bye,\xint_bye,\xint_bye + ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% \def\XINT_csvtol_loop_a #1#2,#3,#4,#5,#6,#7,#8,#9,% {% - \xint_gob_til_xint_undef #9\XINT_csvtol_finish_a\xint_undef + \xint_bye #9\XINT_csvtol_finish_a\xint_bye \XINT_csvtol_loop_b {#1}{{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}% }% \def\XINT_csvtol_loop_b #1#2{\XINT_csvtol_loop_a {#1#2}}% -\def\XINT_csvtol_finish_a\xint_undef\XINT_csvtol_loop_b #1#2#3\Z +\def\XINT_csvtol_finish_a\xint_bye\XINT_csvtol_loop_b #1#2#3\Z {% \XINT_csvtol_finish_b #3\R,\R,\R,\R,\R,\R,\R,\Z #2{#1}% }% @@ -391,21 +389,21 @@ \def\xintListWithSepNoExpand {\romannumeral0\xintlistwithsepnoexpand }% \long\def\xintlistwithsep #1#2% {\expandafter\XINT_lws\expandafter {\romannumeral-`0#2}{#1}}% -\long\def\XINT_lws #1#2{\XINT_lws_start {#2}#1\Z }% -\long\def\xintlistwithsepnoexpand #1#2{\XINT_lws_start {#1}#2\Z }% +\long\def\XINT_lws #1#2{\XINT_lws_start {#2}#1\xint_bye }% +\long\def\xintlistwithsepnoexpand #1#2{\XINT_lws_start {#1}#2\xint_bye }% \long\def\XINT_lws_start #1#2% {% - \xint_gob_til_Z #2\XINT_lws_dont\Z + \xint_bye #2\XINT_lws_dont\xint_bye \XINT_lws_loop_a {#2}{#1}% }% -\long\def\XINT_lws_dont\Z\XINT_lws_loop_a #1#2{ }% +\long\def\XINT_lws_dont\xint_bye\XINT_lws_loop_a #1#2{ }% \long\def\XINT_lws_loop_a #1#2#3% {% - \xint_gob_til_Z #3\XINT_lws_end\Z + \xint_bye #3\XINT_lws_end\xint_bye \XINT_lws_loop_b {#1}{#2#3}{#2}% }% \long\def\XINT_lws_loop_b #1#2{\XINT_lws_loop_a {#1#2}}% -\long\def\XINT_lws_end\Z\XINT_lws_loop_b #1#2#3{ #1}% +\long\def\XINT_lws_end\xint_bye\XINT_lws_loop_b #1#2#3{ #1}% \def\xintNthElt {\romannumeral0\xintnthelt }% \def\xintNthEltNoExpand {\romannumeral0\xintntheltnoexpand }% \def\xintnthelt #1% @@ -443,7 +441,7 @@ \else \expandafter\XINT_length_loop \fi {#2}#1\xint_relax\xint_relax\xint_relax\xint_relax - \xint_relax\xint_relax\xint_relax\xint_relax\Z + \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_nthelt_loop_a #1% {% @@ -457,21 +455,17 @@ \def\XINT_nthelt_loop_b #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_nthelt_silentend\xint_relax - \expandafter\XINT_nthelt_loop_a\expandafter{\the\numexpr #1-8\relax}% + \expandafter\XINT_nthelt_loop_a\expandafter{\the\numexpr #1-8}% }% -\def\XINT_nthelt_silentend #1\Z { }% +\def\XINT_nthelt_silentend #1\xint_bye { }% \def\XINT_nthelt_getit #1% {% \expandafter\expandafter\expandafter\XINT_nthelt_finish \csname xint_gobble_\romannumeral\numexpr#1-1\endcsname }% -\def\XINT_nthelt_finish #1#2\Z -{% - \xint_UDwfork - #1\dummy { }% - \W\dummy { #1}% - \krof -}% +\def\XINT_nthelt_finish #1#2\xint_bye + {\xint_gob_til_xint_relax #1\expandafter\space + \xint_gobble_iii\xint_relax\space #1}% \def\xintApply {\romannumeral0\xintapply }% \def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }% \def\xintapply #1#2% @@ -479,17 +473,18 @@ \expandafter\XINT_apply\expandafter {\romannumeral-`0#2}% {#1}% }% -\def\XINT_apply #1#2{\XINT_apply_loop_a {}{#2}#1\Z }% -\def\xintapplynoexpand #1#2{\XINT_apply_loop_a {}{#1}#2\Z }% +\def\XINT_apply #1#2{\XINT_apply_loop_a {}{#2}#1\xint_bye }% +\def\xintapplynoexpand #1#2{\XINT_apply_loop_a {}{#1}#2\xint_bye }% \def\XINT_apply_loop_a #1#2#3% {% - \xint_gob_til_Z #3\XINT_apply_end\Z + \xint_bye #3\XINT_apply_end\xint_bye \expandafter \XINT_apply_loop_b \expandafter {\romannumeral-`0#2{#3}}{#1}{#2}% }% \def\XINT_apply_loop_b #1#2{\XINT_apply_loop_a {#2{#1}}}% -\def\XINT_apply_end\Z\expandafter\XINT_apply_loop_b\expandafter #1#2#3{ #2}% +\def\XINT_apply_end\xint_bye\expandafter\XINT_apply_loop_b + \expandafter #1#2#3{ #2}% \def\xintApplyUnbraced {\romannumeral0\xintapplyunbraced }% \def\xintApplyUnbracedNoExpand {\romannumeral0\xintapplyunbracednoexpand }% \def\xintapplyunbraced #1#2% @@ -497,27 +492,27 @@ \expandafter\XINT_applyunbr\expandafter {\romannumeral-`0#2}% {#1}% }% -\def\XINT_applyunbr #1#2{\XINT_applyunbr_loop_a {}{#2}#1\Z }% +\def\XINT_applyunbr #1#2{\XINT_applyunbr_loop_a {}{#2}#1\xint_bye }% \def\xintapplyunbracednoexpand #1#2% - {\XINT_applyunbr_loop_a {}{#1}#2\Z }% + {\XINT_applyunbr_loop_a {}{#1}#2\xint_bye }% \def\XINT_applyunbr_loop_a #1#2#3% {% - \xint_gob_til_Z #3\XINT_applyunbr_end\Z + \xint_bye #3\XINT_applyunbr_end\xint_bye \expandafter\XINT_applyunbr_loop_b \expandafter {\romannumeral-`0#2{#3}}{#1}{#2}% }% \def\XINT_applyunbr_loop_b #1#2{\XINT_applyunbr_loop_a {#2#1}}% -\def\XINT_applyunbr_end\Z - \expandafter\XINT_applyunbr_loop_b\expandafter #1#2#3{ #2}% +\def\XINT_applyunbr_end\xint_bye\expandafter\XINT_applyunbr_loop_b + \expandafter #1#2#3{ #2}% \def\xintSeq {\romannumeral0\xintseq }% -\def\xintseq #1{\XINT_seq_chkopt #1\Z }% +\def\xintseq #1{\XINT_seq_chkopt #1\xint_bye }% \def\XINT_seq_chkopt #1% {% \ifx [#1\expandafter\XINT_seq_opt \else\expandafter\XINT_seq_noopt \fi #1% }% -\def\XINT_seq_noopt #1\Z #2% +\def\XINT_seq_noopt #1\xint_bye #2% {% \expandafter\XINT_seq\expandafter {\the\numexpr#1\expandafter}\expandafter{\the\numexpr #2}% @@ -552,7 +547,7 @@ \expandafter{\the\numexpr #1+1}{#2}{#1}% }% \def\XINT_seq_e #1#2#3{ }% -\def\XINT_seq_opt [\Z #1]#2#3% +\def\XINT_seq_opt [\xint_bye #1]#2#3% {% \expandafter\XINT_seqo\expandafter {\the\numexpr #2\expandafter}\expandafter @@ -622,28 +617,53 @@ {#1}{#2}% }% \def\XINT_seqo_nd #1#2#3#4{\XINT_seqo_nb {#1}{#2}{#3}{#4{#1}}}% -\catcode`z 3% \def\XINT_xflet #1% +{% + \def\XINT_xflet_macro {#1}\XINT_xflet_get +}% +\def\XINT_xflet_get {% \expandafter\futurelet\expandafter\XINT_token - \expandafter#1\romannumeral-`0\romannumeral-`0% + \expandafter\XINT_xflet_sp?\romannumeral-`0% +}% +\def\XINT_xflet_sp? +{% + \ifx\XINT_token\XINT_sptoken + \expandafter\XINT_xflet_get + \else\expandafter\XINT_xflet_getB + \fi +}% +\def\XINT_xflet_getB +{% + \expandafter\futurelet\expandafter\XINT_tokenB + \expandafter\XINT_xflet_spB?\romannumeral-`0% +}% +\def\XINT_xflet_spB? +{% + \ifx\XINT_tokenB\XINT_sptoken + \expandafter\XINT_xflet_getB + \else\expandafter\XINT_xflet_eq? + \fi +}% +\def\XINT_xflet_eq? +{% + \ifx\XINT_token\XINT_tokenB + \expandafter\XINT_xflet_macro + \else\expandafter\XINT_xflet_get + \fi }% +\catcode`z 3% \def\xintApplyInline #1#2% {% - \expandafter\def\expandafter\XINT_inline_macro\expandafter ##\expandafter 1% - \expandafter {#1{##1}}% - \XINT_xflet\XINT_inline_b #2z% THIS z HAS CATCODE 3 + \long\expandafter\def\expandafter\XINT_inline_macro + \expandafter ##\expandafter 1\expandafter {#1{##1}}% + \XINT_xflet\XINT_inline_b #2z% this z has catcode 3 }% -\def\XINT_inline_b {\futurelet\XINT_token\XINT_inline_c }% \def\XINT_inline_b {% - \ifx\XINT_token\XINT_sptoken - \xint_afterfi{\XINT_xflet\XINT_inline_b }% - \else - \xint_afterfi - {\ifx\XINT_token z\expandafter\xint_gobble_i - \else\expandafter\XINT_inline_d\fi }% - \fi + \ifx\XINT_token z\expandafter\xint_gobble_i + \else\expandafter\XINT_inline_d + \fi }% \def\XINT_inline_d #1% {% @@ -651,13 +671,9 @@ }% \def\XINT_inline_e {% - \ifx\XINT_token\XINT_sptoken - \xint_afterfi{\XINT_xflet\XINT_inline_e }% - \else - \xint_afterfi - {\ifx\XINT_token z\expandafter\XINT_inline_w - \else \expandafter\XINT_inline_f\fi }% - \fi + \ifx\XINT_token z\expandafter\XINT_inline_w + \else\expandafter\XINT_inline_f + \fi }% \def\XINT_inline_f {% @@ -666,188 +682,288 @@ \def\XINT_inline_g #1% {% \expandafter\XINT_inline_macro\XINT_item - \def\XINT_inline_macro ##1{#1}\XINT_inline_d + \long\def\XINT_inline_macro ##1{#1}\XINT_inline_d }% \def\XINT_inline_w #1% {% \expandafter\XINT_inline_macro\XINT_item }% +\long\def\xintBreakFor #1z{}% +\long\def\xintBreakForAndDo #1#2z{#1}% +\catcode`U 3 % with numexpr +\catcode`V 3 % with xintfrac.sty (xint.sty not enough, uses \xintIrr) +\catcode`D 3 % with dimexpr +\catcode`j 3 \def\xintFor {\futurelet\XINT_token\XINT_for_ifstar }% -\def\XINT_for_ifstar {\ifx\XINT_token*\expandafter\XINT_forx +\def\XINT_for_ifstar {\let\xintifForFirst\xint_firstoftwo + \ifx\XINT_token*\expandafter\XINT_forx \else\expandafter\XINT_for \fi }% -\def\XINT_for #1#2in#3#4#5% +\long\def\XINT_for #1#2in#3#4#5% +{% + \XINT_toks {\csname XINT_for_d\romannumeral#2\endcsname {#5}}% + \expandafter\futurelet\expandafter\XINT_token + \expandafter\XINT_for_forever? #3,z% this z has catcode 3 +}% +\long\def\XINT_forx *#1#2in#3#4#5% {% - \XINT_toks \expandafter{\csname XINT_for_d\romannumeral#2\endcsname {#5}}% - \expandafter\XINT_for_b #3,z,% THIS z HAS CATCODE 3. + \XINT_toks {\csname XINT_forx_d\romannumeral#2\endcsname {#5}}% + \XINT_xflet\XINT_forx_forever? #3jz% j and z have catcode 3 }% -\def\XINT_forx *#1#2in#3#4#5% +\def\XINT_to_forever #1\XINT_toks {\fi \XINT_forever }% +\def\XINT_for_forever? {% - \XINT_toks \expandafter{\csname XINT_forx_d\romannumeral#2\endcsname {#5}}% - \XINT_xflet\XINT_forx_b #3z% THIS z HAS CATCODE 3. + \ifx\XINT_token U\XINT_to_forever\fi + \ifx\XINT_token V\XINT_to_forever\fi + \ifx\XINT_token D\XINT_to_forever\fi + \the\XINT_toks }% -\def\XINT_for_b {\futurelet\XINT_token\XINT_for_c }% -\def\XINT_for_c +\def\XINT_to_forxever #1\XINT_forx_empty? {\fi \XINT_forever }% +\def\XINT_forx_forever? {% - \ifx\XINT_token z\expandafter\xint_gobble_iv\fi - \the\XINT_toks + \ifx\XINT_token U\XINT_to_forxever\fi + \ifx\XINT_token V\XINT_to_forxever\fi + \ifx\XINT_token D\XINT_to_forxever\fi + \XINT_forx_empty? }% -\def\XINT_for_di #1#2,% +\def\XINT_forx_empty? {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {#2}{####2}{####3}{####4}}% - \XINT_toks {\XINT_x\XINT_for_di {#1}}% - \futurelet\XINT_token\XINT_for_e + \ifx\XINT_token j\expandafter\xint_gobble_iv\fi + \the\XINT_toks }% -\def\XINT_for_dii #1#2,% +\long\def\XINT_for_di #1#2,% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{#2}{####3}{####4}}% - \XINT_toks {\XINT_x \XINT_for_dii {#1}}% - \futurelet\XINT_token\XINT_for_e + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {#2}{####2}{####3}{####4}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_for_di {#1}}% + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_for_diii #1#2,% +\long\def\XINT_for_dii #1#2,% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{####2}{#2}{####4}}% - \XINT_toks {\XINT_x \XINT_for_diii {#1}}% - \futurelet\XINT_token\XINT_for_e + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{#2}{####3}{####4}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_for_dii {#1}}% + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_for_div #1#2,% +\long\def\XINT_for_diii #1#2,% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{####2}{####3}{#2}}% - \XINT_toks {\XINT_x \XINT_for_div {#1}}% - \futurelet\XINT_token\XINT_for_e + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{####2}{#2}{####4}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_for_diii {#1}}% + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_for_e +\long\def\XINT_for_div #1#2,% {% - \ifx\XINT_token z\xint_afterfi{\expandafter\XINT_x \xint_gobble_iv}\fi - \the\XINT_toks + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{####2}{####3}{#2}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_for_div {#1}}% + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_forx_b +\def\XINT_for_last? {% - \ifx\XINT_token\XINT_sptoken - \xint_afterfi{\XINT_xflet\XINT_forx_b }% - \else - \xint_afterfi - {\ifx\XINT_token z\expandafter\xint_gobble_iii\fi - \the\XINT_toks }% - \fi + \ifx\XINT_token z\xint_afterfi{\let\xintifForLast\xint_firstoftwo + \expandafter\XINT_x\xint_gobble_vi}\fi + \let\xintifForLast\xint_secondoftwo\the\XINT_toks }% -\def\XINT_forx_di #1#2% +\long\def\XINT_forx_di #1#2% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {#2}{####2}{####3}{####4}}% - \XINT_toks {\XINT_x \XINT_forx_di {#1}}% - \XINT_xflet\XINT_forx_e + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {#2}{####2}{####3}{####4}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_forx_di {#1}}% + \XINT_xflet\XINT_forx_last? }% -\def\XINT_forx_dii #1#2% +\long\def\XINT_forx_dii #1#2% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{#2}{####3}{####4}}% - \XINT_toks {\XINT_x \XINT_forx_dii {#1}}% - \XINT_xflet\XINT_forx_e + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{#2}{####3}{####4}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_forx_dii {#1}}% + \XINT_xflet\XINT_forx_last? }% -\def\XINT_forx_diii #1#2% +\long\def\XINT_forx_diii #1#2% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{####2}{#2}{####4}}% - \XINT_toks {\XINT_x \XINT_forx_diii {#1}}% - \XINT_xflet\XINT_forx_e + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{####2}{#2}{####4}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_forx_diii {#1}}% + \XINT_xflet\XINT_forx_last? }% -\def\XINT_forx_div #1#2% +\long\def\XINT_forx_div #1#2% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{####2}{####3}{#2}}% - \XINT_toks {\XINT_x \XINT_forx_div {#1}}% - \XINT_xflet\XINT_forx_e + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{####2}{####3}{#2}}% + \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_forx_div {#1}}% + \XINT_xflet\XINT_forx_last? }% -\def\XINT_forx_e +\def\XINT_forx_last? {% - \ifx\XINT_token\XINT_sptoken - \xint_afterfi{\XINT_xflet\XINT_forx_e}% - \else - \xint_afterfi - {\ifx\XINT_token z\xint_afterfi{\expandafter\XINT_x \xint_gobble_iii}\fi - \the\XINT_toks }% - \fi + \ifx\XINT_token j\xint_afterfi{\let\xintifForLast\xint_firstoftwo + \expandafter\XINT_x\xint_gobble_vii}\fi + \let\xintifForLast\xint_secondoftwo\the\XINT_toks +}% +\catcode`j 11 +\let\xintegers U% +\let\xintintegers U% +\let\xintdimensions D% +\let\xintrationals V% +\def\XINT_forever #1% +{% + \expandafter\XINT_forever_a + \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi a\expandafter\endcsname + \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi i\expandafter\endcsname + \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi \endcsname }% -\def\xintForpair #1#2#3#4in#5#6#7% +\catcode`U 11 +\catcode`D 11 +\catcode`V 11 +\def\XINT_?expr_Ua #1#2% + {\expandafter{\expandafter\numexpr\the\numexpr #1\expandafter\relax + \expandafter\relax\expandafter}% + \expandafter{\the\numexpr #2}}% +\def\XINT_?expr_Da #1#2% + {\expandafter{\expandafter\dimexpr\number\dimexpr #1\expandafter\relax + \expandafter s\expandafter p\expandafter\relax\expandafter}% + \expandafter{\number\dimexpr #2}}% +\catcode`z 11 +\def\XINT_?expr_Va #1#2% +{% + \expandafter\XINT_?expr_Vb\expandafter + {\romannumeral-`0\xintrawwithzeros{#2}}% + {\romannumeral-`0\xintrawwithzeros{#1}}% +}% +\catcode`z 3 +\def\XINT_?expr_Vb #1#2{\expandafter\XINT_?expr_Vc #2.#1.}% +\def\XINT_?expr_Vc #1/#2.#3/#4.% +{% + \xintifEq {#2}{#4} + {\XINT_?expr_Vf {#3}{#1}{#2}} + {\expandafter\XINT_?expr_Vd\expandafter + {\romannumeral0\xintimul {#2}{#4}}% + {\romannumeral0\xintimul {#1}{#4}}% + {\romannumeral0\xintimul {#2}{#3}}}% +}% +\def\XINT_?expr_Vd #1#2#3{\expandafter\XINT_?expr_Ve\expandafter {#2}{#3}{#1}}% +\def\XINT_?expr_Ve #1#2{\expandafter\XINT_?expr_Vf\expandafter {#2}{#1}}% +\def\XINT_?expr_Vf #1#2#3{{#2/#3}{{0}{#1}{#2}{#3}}}% +\def\XINT_?expr_Ui {{\numexpr 1\relax}{1}}% +\def\XINT_?expr_Di {{\dimexpr 0pt\relax}{65536}}% +\def\XINT_?expr_Vi {{1/1}{0111}}% +\def\XINT_?expr_U #1#2% + {\expandafter{\expandafter\numexpr\the\numexpr #1+#2\relax\relax}{#2}}% +\def\XINT_?expr_D #1#2% + {\expandafter{\expandafter\dimexpr\the\numexpr #1+#2\relax sp\relax}{#2}}% +\def\XINT_?expr_V #1#2{\XINT_?expr_Vx #2}% +\def\XINT_?expr_Vx #1#2% +{% + \expandafter\XINT_?expr_Vy\expandafter + {\romannumeral0\xintiadd {#1}{#2}}{#2}% +}% +\def\XINT_?expr_Vy #1#2#3#4% +{% + \expandafter{\romannumeral0\xintiadd {#3}{#1}/#4}{{#1}{#2}{#3}{#4}}% +}% +\def\XINT_forever_a #1#2#3#4% +{% + \ifx #4[\expandafter\XINT_forever_opt_a + \else\expandafter\XINT_forever_b + \fi #1#2#3% +}% +\def\XINT_forever_b #1#2#3#4z{\expandafter\XINT_forever_c\the\XINT_toks #2#3}% +\long\def\XINT_forever_c #1\romannumeral #2#3#4#5#6% +{% + \csname XINT_forever_d\romannumeral#2\expandafter\endcsname #5#6{#4}z% +}% +\def\XINT_forever_opt_a #1#2#3#4+#5]#6z% +{% + \expandafter\expandafter\expandafter + \XINT_forever_opt_c\expandafter\the\expandafter\XINT_toks + \romannumeral-`0#1{#4}{#5}#3% +}% +\long\def\XINT_forever_opt_c #1\romannumeral #2#3#4#5#6#7% +{% + \csname XINT_forever_d\romannumeral#2\endcsname {#5}{#6}#7{#4}z% +}% +\long\def\XINT_forever_di #1#2#3#4% +{% + \long\def\XINT_y ##1##2##3##4{#4}% + \XINT_y {#1}{##2}{##3}{##4}% + \let\xintifForFirst\xint_secondoftwo + \expandafter\XINT_forever_di\romannumeral-`0#3{#1}{#2}#3{#4}% +}% +\long\def\XINT_forever_dii #1#2#3#4% {% - \XINT_toks \expandafter{% - \csname XINT_forii_d\romannumeral#2\endcsname {#7}}% - \expandafter\XINT_forii_b #5,z,% THIS z HAS CATCODE 3 + \long\def\XINT_y ##1##2##3##4{#4}% + \XINT_y {##1}{#1}{##3}{##4}% + \let\xintifForFirst\xint_secondoftwo + \expandafter\XINT_forever_dii\romannumeral-`0#3{#1}{#2}#3{#4}% }% -\def\XINT_forii_b {\futurelet\XINT_token\XINT_forii_c }% -\def\XINT_forii_c +\long\def\XINT_forever_diii #1#2#3#4% {% - \ifx\XINT_token z\expandafter\xint_gobble_iv\fi - \the\XINT_toks + \long\def\XINT_y ##1##2##3##4{#4}% + \XINT_y {##1}{##2}{#1}{##4}% + \let\xintifForFirst\xint_secondoftwo + \expandafter\XINT_forever_diii\romannumeral-`0#3{#1}{#2}#3{#4}% }% -\def\XINT_forii_di #1(#2,#3),% +\long\def\XINT_forever_div #1#2#3#4% {% - \def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_y ##1##2##3##4{#4}% + \XINT_y {##1}{##2}{##3}{#1}% + \let\xintifForFirst\xint_secondoftwo + \expandafter\XINT_forever_div\romannumeral-`0#3{#1}{#2}#3{#4}% +}% +\long\def\xintForpair #1#2#3#4in#5#6#7% +{% + \XINT_toks \expandafter{\csname XINT_forii_d\romannumeral#2\endcsname {#7}}% + \expandafter\the\expandafter\XINT_toks #5,z% THIS z HAS CATCODE 3 +}% +\long\def\XINT_forii_di #1(#2,#3),% +{% + \long\def\XINT_y ##1##2##3##4{#1}% \def\XINT_x {\XINT_y {#2}{#3}{####3}{####4}}% \XINT_toks {\XINT_x\XINT_forii_di {#1}}% - \futurelet\XINT_token\XINT_for_e + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_forii_dii #1(#2,#3),% +\long\def\XINT_forii_dii #1(#2,#3),% {% - \def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_y ##1##2##3##4{#1}% \def\XINT_x {\XINT_y {####1}{#2}{#3}{####4}}% \XINT_toks {\XINT_x \XINT_forii_dii {#1}}% - \futurelet\XINT_token\XINT_for_e + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_forii_diii #1(#2,#3),% +\long\def\XINT_forii_diii #1(#2,#3),% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{####2}{#2}{#3}}% + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{####2}{#2}{#3}}% \XINT_toks {\XINT_x \XINT_forii_diii {#1}}% - \futurelet\XINT_token\XINT_for_e -}% -\def\xintForthree #1#2#3in#4#5#6% -{% - \XINT_toks \expandafter{% - \csname XINT_foriii_d\romannumeral#2\endcsname {#6}}% - \expandafter\XINT_foriii_b #4,z,% + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_foriii_b {\futurelet\XINT_token\XINT_foriii_c }% -\def\XINT_foriii_c +\long\def\xintForthree #1#2#3in#4#5#6% {% - \ifx\XINT_token z\expandafter\xint_gobble_iv\fi - \the\XINT_toks + \XINT_toks \expandafter{\csname XINT_foriii_d\romannumeral#2\endcsname {#6}}% + \expandafter\the\expandafter\XINT_toks #4,z% }% -\def\XINT_foriii_di #1(#2,#3,#4),% +\long\def\XINT_foriii_di #1(#2,#3,#4),% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {#2}{#3}{#4}{####4}}% + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {#2}{#3}{#4}{####4}}% \XINT_toks {\XINT_x\XINT_foriii_di {#1}}% - \futurelet\XINT_token\XINT_for_e + \futurelet\XINT_token\XINT_for_last? }% -\def\XINT_foriii_dii #1(#2,#3,#4),% +\long\def\XINT_foriii_dii #1(#2,#3,#4),% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {####1}{#2}{#3}{#4}}% + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {####1}{#2}{#3}{#4}}% \XINT_toks {\XINT_x \XINT_foriii_dii {#1}}% - \futurelet\XINT_token\XINT_for_e + \futurelet\XINT_token\XINT_for_last? }% -\def\xintForfour #1#2#3in#4#5#6% +\long\def\xintForfour #1#2#3in#4#5#6% {% \XINT_toks {\XINT_foriv_di {#6}}% - \expandafter\XINT_foriv_b #4,z,% -}% -\def\XINT_foriv_b {\futurelet\XINT_token\XINT_foriv_c }% -\def\XINT_foriv_c -{% - \ifx\XINT_token z\expandafter\xint_gobble_iv\fi - \the\XINT_toks + \expandafter\the\expandafter\XINT_toks #4,z% }% -\def\XINT_foriv_di #1(#2,#3,#4,#5),% +\long\def\XINT_foriv_di #1(#2,#3,#4,#5),% {% - \def\XINT_y ##1##2##3##4{#1}% - \def\XINT_x {\XINT_y {#2}{#3}{#4}{#5}}% + \long\def\XINT_y ##1##2##3##4{#1}% + \long\def\XINT_x {\XINT_y {#2}{#3}{#4}{#5}}% \XINT_toks {\XINT_x\XINT_foriv_di {#1}}% - \futurelet\XINT_token\XINT_for_e + \futurelet\XINT_token\XINT_for_last? }% \catcode`z 11 \def\xintAssign #1\to @@ -909,7 +1025,7 @@ \def\XINT_assignarray_loop #1% {% \def\xint_temp {#1}% - \ifx\xint_braced_xint_relax\xint_temp + \ifx\xint_brelax\xint_temp \expandafter\edef\csname\xint_arrayname 0\endcsname{\the\count 255 }% \expandafter\expandafter\expandafter\XINT_assignarray_end_a \else @@ -1049,8 +1165,8 @@ \expandafter\xint_cleanupzeros_andstop \romannumeral0\XINT_rord_main {}#1% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\XINT_cuz #1% @@ -1193,6 +1309,16 @@ \fi }% \let\xintifTrue\xintifNotZero +\let\xintifTrueFalse\xintifNotZero +\def\xintifCmp {\romannumeral0\xintifcmp }% +\def\xintifcmp #1#2% +{% + \ifcase \xintCmp {#1}{#2} + \xint_afterfi{\expandafter\space\xint_secondofthree}% + \or\xint_afterfi{\expandafter\space\xint_thirdofthree}% + \else\xint_afterfi{\expandafter\space\xint_firstofthree}% + \fi +}% \def\xintifEq {\romannumeral0\xintifeq }% \def\xintifeq #1#2% {% @@ -1217,6 +1343,15 @@ {\expandafter\space\xint_secondoftwo}% {\expandafter\space\xint_secondoftwo}% }% +\def\xintifOdd {\romannumeral0\xintifodd }% +\def\xintifodd #1% +{% + \if\xintOdd{#1}1% + \xint_afterfi{\expandafter\space\xint_firstoftwo}% + \else + \xint_afterfi{\expandafter\space\xint_secondoftwo}% + \fi +}% \def\xintiiOpp {\romannumeral0\xintiiopp }% \def\xintiiopp #1% {% @@ -1272,7 +1407,7 @@ }% \def\XINT_add_ABE #1#2#3#4#5#6% {% - \expandafter\XINT_add_ABEA\the\numexpr #1+10#5#4#3#2+#6\relax.% + \expandafter\XINT_add_ABEA\the\numexpr #1+10#5#4#3#2+#6.% }% \def\XINT_add_ABEA #1#2#3.#4% {% @@ -1280,7 +1415,7 @@ }% \def\xint_add_bz\W\XINT_add_ABE #1#2#3#4#5#6% {% - \expandafter\XINT_add_CC\the\numexpr #1+10#5#4#3#2\relax.% + \expandafter\XINT_add_CC\the\numexpr #1+10#5#4#3#2.% }% \def\XINT_add_CC #1#2#3.#4% {% @@ -1297,8 +1432,8 @@ \romannumeral0% \XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax #1% }% @@ -1309,7 +1444,7 @@ }% \def\XINT_add_CD #1% {% - \expandafter\XINT_add_CC\the\numexpr 1+10#1\relax.% + \expandafter\XINT_add_CC\the\numexpr 1+10#1.% }% \def\xint_add_cz\W\XINT_add_CD #1#2{ 1#2}% \def\XINT_addr_A #1#2#3#4#5#6% @@ -1372,7 +1507,7 @@ }% \def\XINT_addm_ABE #1#2#3#4#5#6% {% - \expandafter\XINT_addm_ABEA\the\numexpr #1+10#5#4#3#2+#6\relax.% + \expandafter\XINT_addm_ABEA\the\numexpr #1+10#5#4#3#2+#6.% }% \def\XINT_addm_ABEA #1#2#3.#4% {% @@ -1389,8 +1524,8 @@ \romannumeral0% \XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax #1% }% @@ -1405,7 +1540,7 @@ }% \def\XINT_addm_CD #1% {% - \expandafter\XINT_addm_CC\the\numexpr 1+10#1\relax.% + \expandafter\XINT_addm_CC\the\numexpr 1+10#1.% }% \def\XINT_addm_CC #1#2#3.#4% {% @@ -1417,7 +1552,7 @@ #3\xint_addm_cz \W\XINT_addm_CD {% - \expandafter\XINT_addm_CDw\the\numexpr 1+#1#2#3\relax.% + \expandafter\XINT_addm_CDw\the\numexpr 1+#1#2#3.% }% \def\XINT_addm_CDw #1.#2#3\X\Y\Z {% @@ -1428,7 +1563,7 @@ #2\xint_addm_cz \W\XINT_addm_CD {% - \expandafter\XINT_addm_CDx\the\numexpr 1+#1#2\relax.% + \expandafter\XINT_addm_CDx\the\numexpr 1+#1#2.% }% \def\XINT_addm_CDx #1.#2#3\Y\Z {% @@ -1438,7 +1573,7 @@ #1\xint_addm_cz \W\XINT_addm_CD {% - \expandafter\XINT_addm_CDy\the\numexpr 1+#1\relax.% + \expandafter\XINT_addm_CDy\the\numexpr 1+#1.% }% \def\XINT_addm_CDy #1.#2#3\Z {% @@ -1727,7 +1862,7 @@ }% \def\XINT_sub_onestep #1#2#3#4#5#6% {% - \expandafter\XINT_sub_backtoA\the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i\relax.% + \expandafter\XINT_sub_backtoA\the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i.% }% \def\XINT_sub_backtoA #1#2#3.#4% {% @@ -1749,8 +1884,8 @@ \romannumeral0% \XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax #1% }% @@ -1762,7 +1897,7 @@ }% \def\XINT_sub_AC_onestep #1% {% - \expandafter\XINT_sub_backtoC\the\numexpr 11#1-\xint_c_i\relax.% + \expandafter\XINT_sub_backtoC\the\numexpr 11#1-\xint_c_i.% }% \def\XINT_sub_backtoC #1#2#3.#4% {% @@ -1779,8 +1914,8 @@ \romannumeral0% \XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax #1\W\W\W\W\W\W\W\Z }% @@ -1801,8 +1936,8 @@ \romannumeral0% \XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax \W\X\Y\Z #1% }% @@ -1813,7 +1948,7 @@ }% \def\XINT_sub_Eonestep #1#2% {% - \expandafter\XINT_sub_backtoE\the\numexpr 109999-#2+#1\relax.% + \expandafter\XINT_sub_backtoE\the\numexpr 109999-#2+#1.% }% \def\XINT_sub_backtoE #1#2#3.#4% {% @@ -1836,7 +1971,7 @@ }% \def\XINT_sub_Fdec_onestep #1#2% {% - \expandafter\XINT_sub_backtoFdec\the\numexpr 11#2+#1-\xint_c_i\relax.% + \expandafter\XINT_sub_backtoFdec\the\numexpr 11#2+#1-\xint_c_i.% }% \def\XINT_sub_backtoFdec #1#2#3.#4% {% @@ -1853,7 +1988,7 @@ }% \def\XINT_sub_Finc_onestep #1#2% {% - \expandafter\XINT_sub_backtoFinc\the\numexpr 10#2+#1\relax.% + \expandafter\XINT_sub_backtoFinc\the\numexpr 10#2+#1.% }% \def\XINT_sub_backtoFinc #1#2#3.#4% {% @@ -1882,8 +2017,8 @@ \romannumeral0% \XINT_rord_main {}#1% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\XINT_sub_KK #1#2#3#4#5#6% @@ -1893,7 +2028,7 @@ }% \def\XINT_sub_KK_onestep #1#2% {% - \expandafter\XINT_sub_backtoKK\the\numexpr 109999-#2+#1\relax.% + \expandafter\XINT_sub_backtoKK\the\numexpr 109999-#2+#1.% }% \def\XINT_sub_backtoKK #1#2#3.#4% {% @@ -1967,7 +2102,7 @@ }% \def\XINT_cmp_onestep #1#2#3#4#5#6% {% - \expandafter\XINT_cmp_backtoA\the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i\relax.% + \expandafter\XINT_cmp_backtoA\the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i.% }% \def\XINT_cmp_backtoA #1#2#3.#4% {% @@ -2157,7 +2292,7 @@ }% \def\XINT_geq_onestep #1#2#3#4#5#6% {% - \expandafter\XINT_geq_backtoA\the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i\relax.% + \expandafter\XINT_geq_backtoA\the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i.% }% \def\XINT_geq_backtoA #1#2#3.#4% {% @@ -2478,7 +2613,7 @@ \def\XINT_mul_Br #1#2#3#4\W\X\Y\Z #5#6#7#8% {% \expandafter\XINT_mul_ABEAr - \the\numexpr #1+10#2+#8#7#6#5\relax.{#3}#4\W\X\Y\Z + \the\numexpr #1+10#2+#8#7#6#5.{#3}#4\W\X\Y\Z }% \def\XINT_mul_ABEAr #1#2#3#4#5#6.#7% {% @@ -2920,8 +3055,8 @@ \fi {#1}{#2}\XINT_pow_posprod \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\XINT_pow_BtooBig #1\xint_relax #2\xint_relax @@ -3418,7 +3553,7 @@ \def\XINT_div_sub_onestep #1#2#3#4#5#6% {% \expandafter\XINT_div_sub_backtoA - \the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i\relax.% + \the\numexpr 11#5#4#3#2-#6+#1-\xint_c_i.% }% \def\XINT_div_sub_backtoA #1#2#3.#4% {% @@ -3438,8 +3573,8 @@ \romannumeral0% \XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax #1% }% @@ -3450,7 +3585,7 @@ }% \def\XINT_div_sub_AC_onestep #1% {% - \expandafter\XINT_div_sub_backtoC\the\numexpr 11#1-\xint_c_i\relax.% + \expandafter\XINT_div_sub_backtoC\the\numexpr 11#1-\xint_c_i.% }% \def\XINT_div_sub_backtoC #1#2#3.#4% {% @@ -3466,8 +3601,8 @@ \romannumeral0% \XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax #1% }% @@ -4036,8 +4171,8 @@ \expandafter\XINT_dec_cleanup \romannumeral0\XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax #1% }% @@ -4095,8 +4230,8 @@ 0-\dummy {\XINT_sqrt #1}% \krof }% -\def\XINT_sqrt_iszero #1\Z { 0}% -\def\XINT_sqrt_isneg #1\Z {\xintError:RootOfNegative\space 0}% +\def\XINT_sqrt_iszero #1\Z { 1.}% 1.09e was wrong from inception in 1.08 :-(( +\def\XINT_sqrt_isneg #1\Z {\xintError:RootOfNegative\space 1.}% \def\XINT_sqrt #1\Z {% \expandafter\XINT_sqrt_start\expandafter diff --git a/Master/texmf-dist/tex/generic/xint/xintbinhex.sty b/Master/texmf-dist/tex/generic/xint/xintbinhex.sty index 5b2695c4103..caadf6f105e 100644 --- a/Master/texmf-dist/tex/generic/xint/xintbinhex.sty +++ b/Master/texmf-dist/tex/generic/xint/xintbinhex.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09d of October 22, 2013) +%% The xint bundle (version 1.09e of October 29, 2013) %% xintbinhex: Expandable binary and hexadecimal conversions %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -105,7 +105,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintbinhex}% - [2013/10/22 v1.09d Expandable binary and hexadecimal conversions (jfB)]% + [2013/10/29 v1.09e Expandable binary and hexadecimal conversions (jfB)]% \chardef\xint_c_xvi 16 \chardef\xint_c_ii^v 32 \chardef\xint_c_ii^vi 64 @@ -390,8 +390,8 @@ \expandafter\xint_cleanupzeros_andstop \romannumeral0\XINT_rord_main {}#1% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\XINT_htd_II_ci #1\XINT_htd_II_ciii @@ -478,8 +478,8 @@ \expandafter\XINT_btd_II_c_end \romannumeral0\XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\XINT_btd_II_c_end #1#2#3#4#5#6% diff --git a/Master/texmf-dist/tex/generic/xint/xintcfrac.sty b/Master/texmf-dist/tex/generic/xint/xintcfrac.sty index b8b934b9294..7019c7af6b3 100644 --- a/Master/texmf-dist/tex/generic/xint/xintcfrac.sty +++ b/Master/texmf-dist/tex/generic/xint/xintcfrac.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09d of October 22, 2013) +%% The xint bundle (version 1.09e of October 29, 2013) %% xintcfrac: Expandable continued fractions with xint package %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -105,7 +105,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintcfrac}% - [2013/10/22 v1.09d Expandable continued fractions with xint package (jfB)]% + [2013/10/29 v1.09e Expandable continued fractions with xint package (jfB)]% \def\xintCFrac {\romannumeral0\xintcfrac }% \def\xintcfrac #1% {% diff --git a/Master/texmf-dist/tex/generic/xint/xintexpr.sty b/Master/texmf-dist/tex/generic/xint/xintexpr.sty index ccc877a888d..2abe4875295 100644 --- a/Master/texmf-dist/tex/generic/xint/xintexpr.sty +++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09d of October 22, 2013) +%% The xint bundle (version 1.09e of October 29, 2013) %% xintexpr: Expandable expression parser %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -105,7 +105,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintexpr}% - [2013/10/22 v1.09d Expandable expression parser (jfB)]% + [2013/10/29 v1.09e Expandable expression parser (jfB)]% \def\xint_gob_til_dot #1.{}% \def\xint_gob_til_dot_andstop #1.{ }% \def\xint_gob_til_! #1!{}% nota bene: ! is of catcode 11 diff --git a/Master/texmf-dist/tex/generic/xint/xintfrac.sty b/Master/texmf-dist/tex/generic/xint/xintfrac.sty index b4ab5fbe664..36ea3fd20c6 100644 --- a/Master/texmf-dist/tex/generic/xint/xintfrac.sty +++ b/Master/texmf-dist/tex/generic/xint/xintfrac.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09d of October 22, 2013) +%% The xint bundle (version 1.09e of October 29, 2013) %% xintfrac: Expandable operations on fractions %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -105,7 +105,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintfrac}% - [2013/10/22 v1.09d Expandable operations on fractions (jfB)]% + [2013/10/29 v1.09e Expandable operations on fractions (jfB)]% \chardef\xint_c_vi 6 \chardef\xint_c_vii 7 \chardef\xint_c_xviii 18 @@ -306,8 +306,8 @@ \expandafter\XINT_cuz_cnt_loop\expandafter {\expandafter}\romannumeral0\XINT_rord_main {}#1% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \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 }% @@ -390,8 +390,8 @@ \expandafter\space\expandafter {\romannumeral0\XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }{#1}% }% \def\xintRaw {\romannumeral0\xintraw }% @@ -706,6 +706,16 @@ \xintError:NotAnInteger \fi\space #1% }% +\def\xintifInt {\romannumeral0\xintifint }% +\def\xintifint #1{\expandafter\XINT_ifint\romannumeral0\xintirr {#1}\Z }% +\def\XINT_ifint #1/#2\Z +{% + \if\XINT_isOne {#2}1% + \xint_afterfi{\expandafter\space\xint_firstoftwo}% + \else + \xint_afterfi{\expandafter\space\xint_secondoftwo}% + \fi +}% \def\xintJrr {\romannumeral0\xintjrr }% \def\xintjrr #1% {% @@ -897,8 +907,8 @@ \expandafter\XINT_round_C \romannumeral0\XINT_rord_main {}#1% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax \Z }% @@ -919,8 +929,8 @@ {% \XINT_rord_main {}#1% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax \Z }% \def\XINT_round_Dba #1% @@ -1095,8 +1105,8 @@ \romannumeral0\expandafter\XINT_float_Wa \romannumeral0\XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \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% @@ -1198,8 +1208,8 @@ \expandafter#1% \romannumeral0\XINT_rord_main {}#2% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \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 @@ -1745,43 +1755,6 @@ \romannumeral0\xintdivision }% \def\xintrem {\expandafter\xint_secondoftwo_andstop \romannumeral0\xintdivision }% -\def\xintFDg {\romannumeral0\xintfdg }% -\def\xintfdg #1% -{% - \expandafter\XINT_fdg\romannumeral0\xintnum {#1}\W\Z -}% -\def\xintLDg {\romannumeral0\xintldg }% -\def\xintldg #1% -{% - \expandafter\XINT_ldg\expandafter{\romannumeral0\xintnum {#1}}% -}% -\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\xintOdd {\romannumeral0\xintodd }% -\def\xintodd #1% -{% - \ifodd\xintLDg{#1} - \xint_afterfi{ 1}% - \else - \xint_afterfi{ 0}% - \fi -}% \def\xintFloatAdd {\romannumeral0\xintfloatadd }% \def\xintfloatadd #1{\XINT_fladd_chkopt \xintfloat #1\Z }% \def\XINTinFloatAdd {\romannumeral0\XINTinfloatadd }% @@ -2013,8 +1986,8 @@ {% \XINT_flpow_loop {#1}{#2}{#3}{{#1}}\XINT_flpow_prd \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax {#4}% }% \def\XINT_flpow_loop #1#2#3% @@ -2153,8 +2126,8 @@ {% \XINT_flpower_loop {#1}{#2}{#3}{{#1}}\XINT_flpow_prd \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax {#4}% }% \def\XINT_flpower_loop #1#2#3% diff --git a/Master/texmf-dist/tex/generic/xint/xintgcd.sty b/Master/texmf-dist/tex/generic/xint/xintgcd.sty index 87f1880991d..1660cda8541 100644 --- a/Master/texmf-dist/tex/generic/xint/xintgcd.sty +++ b/Master/texmf-dist/tex/generic/xint/xintgcd.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09d of October 22, 2013) +%% The xint bundle (version 1.09e of October 29, 2013) %% xintgcd: Euclidean algorithm with xint package %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -105,7 +105,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintgcd}% - [2013/10/22 v1.09d Euclide algorithm with xint package (jfB)]% + [2013/10/29 v1.09e Euclide algorithm with xint package (jfB)]% \def\xintGCD {\romannumeral0\xintgcd }% \def\xintgcd #1% {% @@ -372,8 +372,8 @@ \romannumeral0% \XINT_rord_main {}#4{{#1}{#3}}% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\xint_euc_end_ #1#2#3% @@ -431,8 +431,8 @@ \romannumeral0% \XINT_rord_main {}#8{{#1}{#3}}% \xint_relax - \xint_undef\xint_undef\xint_undef\xint_undef - \xint_undef\xint_undef\xint_undef\xint_undef + \xint_bye\xint_bye\xint_bye\xint_bye + \xint_bye\xint_bye\xint_bye\xint_bye \xint_relax }% \def\xint_bezalg_end_ #1#2#3#4% diff --git a/Master/texmf-dist/tex/generic/xint/xintseries.sty b/Master/texmf-dist/tex/generic/xint/xintseries.sty index 2e2deaa7ec9..dec1e89498c 100644 --- a/Master/texmf-dist/tex/generic/xint/xintseries.sty +++ b/Master/texmf-dist/tex/generic/xint/xintseries.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) %% %%---------------------------------------------------------------- -%% The xint bundle (version 1.09d of October 22, 2013) +%% The xint bundle (version 1.09e of October 29, 2013) %% xintseries: Expandable partial sums with xint package %% Copyright (C) 2013 by Jean-Francois Burnol %%---------------------------------------------------------------- @@ -105,7 +105,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintseries}% - [2013/10/22 v1.09d Expandable partial sums with xint package (jfB)]% + [2013/10/29 v1.09e Expandable partial sums with xint package (jfB)]% \def\xintSeries {\romannumeral0\xintseries }% \def\xintseries #1#2% {% -- cgit v1.2.3