diff options
author | Karl Berry <karl@freefriends.org> | 2020-02-26 22:09:41 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-02-26 22:09:41 +0000 |
commit | 99b2adbfc26d5f6af886cad6177e3bee811e59ea (patch) | |
tree | 60e38e4b58a686fe0a9338f98629135297e191a7 /Master/texmf-dist/tex | |
parent | 72d53c78195f62dc7d8b66f7399ef0c8c2ccdc6f (diff) |
xint (26feb20)
git-svn-id: svn://tug.org/texlive/trunk@53930 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xint.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintbinhex.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintcfrac.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintcore.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintexpr.sty | 344 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintfrac.sty | 59 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintgcd.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintkernel.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintlog.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintseries.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttools.sty | 168 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttrig.sty | 8 |
12 files changed, 422 insertions, 189 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty index 68d37b63ea7..17115294aac 100644 --- a/Master/texmf-dist/tex/generic/xint/xint.sty +++ b/Master/texmf-dist/tex/generic/xint/xint.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xint: Expandable operations on big integers %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty (loaded by xintcore.sty) \XINT_providespackage \ProvidesPackage{xint}% - [2020/02/19 v1.4a Expandable operations on big integers (JFB)]% + [2020/02/25 v1.4b 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}% diff --git a/Master/texmf-dist/tex/generic/xint/xintbinhex.sty b/Master/texmf-dist/tex/generic/xint/xintbinhex.sty index dd03a0f5378..22aac49ae40 100644 --- a/Master/texmf-dist/tex/generic/xint/xintbinhex.sty +++ b/Master/texmf-dist/tex/generic/xint/xintbinhex.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintbinhex: Expandable binary and hexadecimal conversions %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintbinhex}% - [2020/02/19 v1.4a Expandable binary and hexadecimal conversions (JFB)]% + [2020/02/25 v1.4b Expandable binary and hexadecimal conversions (JFB)]% \newcount\xint_c_ii^xv \xint_c_ii^xv 32768 \newcount\xint_c_ii^xvi \xint_c_ii^xvi 65536 \def\XINT_tmpa #1{\ifx\relax#1\else diff --git a/Master/texmf-dist/tex/generic/xint/xintcfrac.sty b/Master/texmf-dist/tex/generic/xint/xintcfrac.sty index 8d82132fcd0..4be57daef06 100644 --- a/Master/texmf-dist/tex/generic/xint/xintcfrac.sty +++ b/Master/texmf-dist/tex/generic/xint/xintcfrac.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintcfrac: Expandable continued fractions with xint package %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintcfrac}% - [2020/02/19 v1.4a Expandable continued fractions with xint package (JFB)]% + [2020/02/25 v1.4b Expandable continued fractions with xint package (JFB)]% \def\xintCFrac {\romannumeral0\xintcfrac }% \def\xintcfrac #1% {% diff --git a/Master/texmf-dist/tex/generic/xint/xintcore.sty b/Master/texmf-dist/tex/generic/xint/xintcore.sty index 909eabff017..59aa7106101 100644 --- a/Master/texmf-dist/tex/generic/xint/xintcore.sty +++ b/Master/texmf-dist/tex/generic/xint/xintcore.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintcore: Expandable arithmetic on big integers %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintcore}% - [2020/02/19 v1.4a Expandable arithmetic on big integers (JFB)]% + [2020/02/25 v1.4b Expandable arithmetic on big integers (JFB)]% \csname XINT_Clamped_istrapped\endcsname \csname XINT_ConversionSyntax_istrapped\endcsname \csname XINT_DivisionByZero_istrapped\endcsname diff --git a/Master/texmf-dist/tex/generic/xint/xintexpr.sty b/Master/texmf-dist/tex/generic/xint/xintexpr.sty index 2d8a4df7af5..889e3e521b9 100644 --- a/Master/texmf-dist/tex/generic/xint/xintexpr.sty +++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintexpr: Expandable expression parser %% --------------------------------------------------------------- @@ -82,7 +82,7 @@ \XINTsetupcatcodes% \XINT_providespackage \ProvidesPackage{xintexpr}% - [2020/02/19 v1.4a Expandable expression parser (JFB)]% + [2020/02/25 v1.4b Expandable expression parser (JFB)]% \catcode`! 11 \let\XINT_Cmp \xintiiCmp \def\XINTfstop{\noexpand\XINTfstop}% @@ -120,6 +120,35 @@ \xint_orthat<]\XINT:expr:toblist_c>#1#2% >% \catcode`{ 1 \catcode`} 2 \catcode`< 12 \catcode`> 12 +\def\XINT:expr:flatten#1% +{% + {{\expandafter\XINT:expr:flatten_checkempty\detokenize{#1}^}}% +}% +\def\XINT:expr:flatten_checkempty #1% +{% + \if ^#1\expandafter\xint_gobble_i\else\expandafter\XINT:expr:flatten_a\fi + #1% +}% +\begingroup % should I check lccode s generally if corrupted context at load? +\catcode`[ 1 \catcode`] 2 \lccode`[`{ \lccode`]`} +\catcode`< 1 \catcode`> 2 \catcode`{ 12 \catcode`} 12 +\lowercase<\endgroup +\def\XINT:expr:flatten_a {#1% +<% + \if{#1\xint_dothis<\XINT:expr:flatten_a>\fi + \xint_orthat\XINT:expr:flatten_b #1% +>% +\def\XINT:expr:flatten_b #1}% +<% + [#1]\XINT:expr:flatten_c }% +>% +\def\XINT:expr:flatten_c }#1% +<% + \if ^#1\xint_dothis<\xint_gobble_i>\fi + \if{#1\xint_dothis<\XINT:expr:flatten_a>\fi + \xint_orthat<\XINT:expr:flatten_c>#1% +>% +>% back to normal catcodes \catcode`& 4 \protected\def\xintexpralignbegin {\halign\bgroup\tabskip2ex\hfil##&&##\hfil\cr}% \protected\def\xintexpralignend {\crcr\egroup}% @@ -354,7 +383,6 @@ #1#2#3#4#5#6#7#8#9% \xintthespaceseparated_b}% \def\xintthespaceseparated_c !#1!#2^{#1}% -\def\XINT:NEhook:unpack{\xint_stop_atfirstofone}% \let\XINT:NEhook:f:one:from:one\expandafter \let\XINT:NEhook:f:one:from:one:direct\empty \let\XINT:NEhook:f:one:from:two\expandafter @@ -1018,15 +1046,17 @@ \fi }% }% +\def\XINT:NEhook:unpack{\xint_stop_atfirstofone}% \xintFor* #1 in {{expr}{flexpr}{iiexpr}}: {\expandafter\XINT_tmpa\csname XINT_#1_op_0\expandafter\endcsname \csname XINT_#1_until_unpack\endcsname {#1}}% \catcode`& 12 -\xintFor* #1 in {{==}{<=}{>=}{!=}{&&}{||}{**}{//}{/:}{..}{..[}{].}{]..}}% +\xintFor* #1 in {{==}{<=}{>=}{&&}{||}{**}{//}{/:}{..}{..[}{].}{]..}}% \do {\expandafter\def\csname XINT_expr_itself_#1\endcsname {#1}}% \catcode`& 7 +\expandafter\edef\csname XINT_expr_itself_!=\endcsname{\string !=}% \expandafter\let\csname XINT_expr_precedence_***\endcsname \xint_c_xvi -\def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8#9% +\def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8% {% \def #1##1% \XINT_expr_op_<op> {% @@ -1036,7 +1066,7 @@ \def #2##1##2##3##4% \XINT_expr_exec_<op> {% \expandafter##2\expandafter##3\expandafter - {#9{\romannumeral`&&@#6##1##4}}% + {\romannumeral`&&@\XINT:NEhook:f:one:from:two{\romannumeral`&&@#6##1##4}}% }% \def #3##1% \XINT_expr_check-_<op> {% @@ -1065,60 +1095,44 @@ \csname XINT_#1_op_-#4\expandafter\endcsname \csname #5\expandafter\endcsname \csname XINT_expr_precedence_#2\endcsname - {#1}{\romannumeral`&&@\XINT:NEhook:f:one:from:two}% + {#1}% \expandafter % done 3 times but well \let\csname XINT_expr_precedence_#2\expandafter\endcsname \csname xint_c_#3\endcsname }% -\catcode`& 12 \XINT_expr_defbin_b {expr} {||} {vi}{xii} {xintOR}% \XINT_expr_defbin_b {flexpr}{||} {vi}{xii} {xintOR}% \XINT_expr_defbin_b {iiexpr}{||} {vi}{xii} {xintOR}% +\catcode`& 12 \XINT_expr_defbin_b {expr} {&&} {viii}{xii} {xintAND}% \XINT_expr_defbin_b {flexpr}{&&} {viii}{xii} {xintAND}% \XINT_expr_defbin_b {iiexpr}{&&} {viii}{xii} {xintAND}% +\catcode`& 7 \XINT_expr_defbin_b {expr} {xor}{vi}{xii} {xintXOR}% \XINT_expr_defbin_b {flexpr}{xor}{vi}{xii} {xintXOR}% \XINT_expr_defbin_b {iiexpr}{xor}{vi}{xii} {xintXOR}% -\XINT_expr_defbin_b {expr} < {x}{xii} {xintLt}% -\XINT_expr_defbin_b {flexpr} < {x}{xii} {xintLt}% -\XINT_expr_defbin_b {iiexpr} < {x}{xii} {xintiiLt}% -\XINT_expr_defbin_b {expr} > {x}{xii} {xintGt}% -\XINT_expr_defbin_b {flexpr} > {x}{xii} {xintGt}% -\XINT_expr_defbin_b {iiexpr} > {x}{xii} {xintiiGt}% -\XINT_expr_defbin_b {expr} {==} {x}{xii} {xintEq}% -\XINT_expr_defbin_b {flexpr}{==} {x}{xii} {xintEq}% -\XINT_expr_defbin_b {iiexpr}{==} {x}{xii} {xintiiEq}% -\XINT_expr_defbin_b {expr} {<=} {x}{xii} {xintLtorEq}% -\XINT_expr_defbin_b {flexpr}{<=} {x}{xii} {xintLtorEq}% -\XINT_expr_defbin_b {iiexpr}{<=} {x}{xii} {xintiiLtorEq}% -\XINT_expr_defbin_b {expr} {>=} {x}{xii} {xintGtorEq}% -\XINT_expr_defbin_b {flexpr}{>=} {x}{xii} {xintGtorEq}% -\XINT_expr_defbin_b {iiexpr}{>=} {x}{xii} {xintiiGtorEq}% -\XINT_expr_defbin_b {expr} {!=} {x}{xii} {xintNotEq}% -\XINT_expr_defbin_b {flexpr}{!=} {x}{xii} {xintNotEq}% -\XINT_expr_defbin_b {iiexpr}{!=} {x}{xii} {xintiiNotEq}% -\XINT_expr_defbin_b {expr} {//} {xiv}{xiv}{xintDivFloor}% CHANGED IN 1.2p! +\XINT_expr_defbin_b {expr} {//} {xiv}{xiv}{xintDivFloor}% \XINT_expr_defbin_b {flexpr}{//} {xiv}{xiv}{XINTinFloatDivFloor}% " \XINT_expr_defbin_b {iiexpr}{//} {xiv}{xiv}{xintiiDivFloor}% " \XINT_expr_defbin_b {expr} {/:} {xiv}{xiv}{xintMod}% " \XINT_expr_defbin_b {flexpr}{/:} {xiv}{xiv}{XINTinFloatMod}% " \XINT_expr_defbin_b {iiexpr}{/:} {xiv}{xiv}{xintiiMod}% " -\XINT_expr_defbin_b {expr} + {xii}{xii} {xintAdd}% -\XINT_expr_defbin_b {flexpr} + {xii}{xii} {XINTinFloatAdd}% -\XINT_expr_defbin_b {iiexpr} + {xii}{xii} {xintiiAdd}% -\XINT_expr_defbin_b {expr} - {xii}{xii} {xintSub}% -\XINT_expr_defbin_b {flexpr} - {xii}{xii} {XINTinFloatSub}% -\XINT_expr_defbin_b {iiexpr} - {xii}{xii} {xintiiSub}% +\XINT_expr_defbin_b {expr} + {xii}{xii}{xintAdd}% +\XINT_expr_defbin_b {flexpr} + {xii}{xii}{XINTinFloatAdd}% +\XINT_expr_defbin_b {iiexpr} + {xii}{xii}{xintiiAdd}% +\XINT_expr_defbin_b {expr} - {xii}{xii}{xintSub}% +\XINT_expr_defbin_b {flexpr} - {xii}{xii}{XINTinFloatSub}% +\XINT_expr_defbin_b {iiexpr} - {xii}{xii}{xintiiSub}% \XINT_expr_defbin_b {expr} * {xiv}{xiv}{xintMul}% \XINT_expr_defbin_b {flexpr} * {xiv}{xiv}{XINTinFloatMul}% \XINT_expr_defbin_b {iiexpr} * {xiv}{xiv}{xintiiMul}% \XINT_expr_defbin_b {expr} / {xiv}{xiv}{xintDiv}% \XINT_expr_defbin_b {flexpr} / {xiv}{xiv}{XINTinFloatDiv}% -\XINT_expr_defbin_b {iiexpr} / {xiv}{xiv}{xintiiDivRound}% CHANGED IN 1.1! -\XINT_expr_defbin_b {expr} ^ {xviii}{xviii} {xintPow}% -\XINT_expr_defbin_b {flexpr} ^ {xviii}{xviii} {XINTinFloatPowerH}% -\XINT_expr_defbin_b {iiexpr} ^ {xviii}{xviii} {xintiiPow}% +\XINT_expr_defbin_b {iiexpr} / {xiv}{xiv}{xintiiDivRound}% +\XINT_expr_defbin_b {expr} ^ {xviii}{xviii}{xintPow}% +\XINT_expr_defbin_b {flexpr} ^ {xviii}{xviii}{XINTinFloatPowerH}% +\XINT_expr_defbin_b {iiexpr} ^ {xviii}{xviii}{xintiiPow}% +\catcode`& 12 \xintFor #1 in {and,or,xor,mod} \do {% \expandafter\def\csname XINT_expr_itself_#1\endcsname {#1}% @@ -1138,8 +1152,6 @@ \expandafter\let\csname XINT_#1_op_mod\expandafter\endcsname \csname XINT_#1_op_/:\endcsname }% -\expandafter\let\csname XINT_expr_precedence_=\expandafter\endcsname - \csname XINT_expr_precedence_==\endcsname \expandafter\let\csname XINT_expr_precedence_&\expandafter\endcsname \csname XINT_expr_precedence_&&\endcsname \expandafter\let\csname XINT_expr_precedence_|\expandafter\endcsname @@ -1148,8 +1160,6 @@ \csname XINT_expr_precedence_^\endcsname \xintFor #1 in {expr, flexpr, iiexpr} \do {% - \expandafter\let\csname XINT_#1_op_=\expandafter\endcsname - \csname XINT_#1_op_==\endcsname \expandafter\let\csname XINT_#1_op_&\expandafter\endcsname \csname XINT_#1_op_&&\endcsname \expandafter\let\csname XINT_#1_op_|\expandafter\endcsname @@ -1158,35 +1168,113 @@ \csname XINT_#1_op_^\endcsname }% \catcode`& 7 -\def\XINT_expr_defbin_b #1#2#3#4% +\def\XINT_expr_defbin_c #1#2#3#4#5#6#7% +{% + \def #1##1% \XINT_expr_op_..[ + {% + \expanded{\unexpanded{#2{##1}}\expandafter}% + \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext + }% + \def #2##1##2##3##4% \XINT_expr_exec_..[ + {% + ##2##3{{##1##4}}% + }% + \def #3##1% \XINT_expr_check-_..[ + {% + \xint_UDsignfork + ##1{\expandafter#4\romannumeral`&&@#5}% + -{#4##1}% + \krof + }% + \def #4##1##2% \XINT_expr_checkp_..[ + {% + \ifnum ##1>#6% + \expandafter#4% + \romannumeral`&&@\csname XINT_#7_op_##2\expandafter\endcsname + \else + \expandafter ##1\expandafter ##2% + \fi + }% +}% +\def\XINT_expr_defbin_b #1% +{% + \expandafter\XINT_expr_defbin_c + \csname XINT_#1_op_..[\expandafter\endcsname + \csname XINT_#1_exec_..[\expandafter\endcsname + \csname XINT_#1_check-_..[\expandafter\endcsname + \csname XINT_#1_checkp_..[\expandafter\endcsname + \csname XINT_#1_op_-xii\expandafter\endcsname + \csname XINT_expr_precedence_..[\endcsname + {#1}% +}% +\XINT_expr_defbin_b {expr}% +\XINT_expr_defbin_b {flexpr}% +\XINT_expr_defbin_b {iiexpr}% +\expandafter\let\csname XINT_expr_precedence_..[\endcsname\xint_c_vi +\def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8% +{% + \def #1##1% \XINT_expr_op_<op> + {% + \expanded{\unexpanded{#2{##1}}\expandafter}% + \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext + }% + \def #2##1##2##3##4% \XINT_expr_exec_<op> + {% + \expandafter##2\expandafter##3\expanded + {{\XINT:NEhook:x:one:from:two#8##1##4}}% + }% + \def #3##1% \XINT_expr_check-_<op> + {% + \xint_UDsignfork + ##1{\expandafter#4\romannumeral`&&@#5}% + -{#4##1}% + \krof + }% + \def #4##1##2% \XINT_expr_checkp_<op> + {% + \ifnum ##1>#6% + \expandafter#4% + \romannumeral`&&@\csname XINT_#7_op_##2\expandafter\endcsname + \else + \expandafter ##1\expandafter ##2% + \fi + }% +}% +\def\XINT_expr_defbin_b #1#2#3% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_#2\expandafter\endcsname \csname XINT_#1_exec_#2\expandafter\endcsname \csname XINT_#1_check-_#2\expandafter\endcsname \csname XINT_#1_checkp_#2\expandafter\endcsname - \csname XINT_#1_op_-#4\expandafter\endcsname - \expandafter{\expandafter}% + \csname XINT_#1_op_-xii\expandafter\endcsname \csname XINT_expr_precedence_#2\endcsname - {#1}{\expandafter}% REVOIR - \expandafter - \let\csname XINT_expr_precedence_#2\expandafter\endcsname - \csname xint_c_#3\endcsname + {#1}#3% + \expandafter\let + \csname XINT_expr_precedence_#2\expandafter\endcsname\xint_c_vi +}% +\XINT_expr_defbin_b {expr} {..}\xintSeq:tl:x +\XINT_expr_defbin_b {flexpr} {..}\xintSeq:tl:x +\XINT_expr_defbin_b {iiexpr} {..}\xintiiSeq:tl:x +\XINT_expr_defbin_b {expr} {]..}\xintSeqB:tl:x +\XINT_expr_defbin_b {flexpr}{]..}\xintSeqB:tl:x +\XINT_expr_defbin_b {iiexpr}{]..}\xintiiSeqB:tl:x +\def\XINT_expr_defbin_d #1#2% +{% + \def #1##1##2##3##4% \XINT_expr_exec_<op> + {% + \expandafter##2\expandafter##3\expandafter + {\romannumeral`&&@\XINT:NEhook:f:one:from:two{\romannumeral`&&@#2##1##4}}% + }% }% -\XINT_expr_defbin_b {expr} {..[}{vi}{xii}% -\XINT_expr_defbin_b {flexpr}{..[}{vi}{xii}% -\XINT_expr_defbin_b {iiexpr}{..[}{vi}{xii}% \def\XINT_expr_defbin_c #1#2#3#4#5#6#7#8#9% {% \def #1##1% \XINT_expr_op_<op> {% \expanded{\unexpanded{#2{##1}}\expandafter}% + \romannumeral`&&@\expandafter#7% \romannumeral`&&@\expandafter#3\romannumeral`&&@\XINT_expr_getnext }% - \def #2##1##2##3##4% \XINT_expr_exec_<op> - {% - \expandafter##2\expandafter##3\expanded{{#9#6##1##4}}% - }% \def #3##1% \XINT_expr_check-_<op> {% \xint_UDsignfork @@ -1196,34 +1284,64 @@ }% \def #4##1##2% \XINT_expr_checkp_<op> {% - \ifnum ##1>#7% + \ifnum ##1>#6% \expandafter#4% - \romannumeral`&&@\csname XINT_#8_op_##2\expandafter\endcsname + \romannumeral`&&@\csname XINT_#9_op_##2\expandafter\endcsname \else \expandafter ##1\expandafter ##2% \fi }% + \let #6\xint_c_x + \def #7##1% \XINT_expr_checkc_<op> + {% + \ifnum ##1=\xint_c_x\expandafter#8\fi ##1% + }% + \edef #8##1##2##3% \XINT_expr_execc_<op> + {% + \csname XINT_#9_precedence_\string&\string&\endcsname + \expandafter\noexpand\csname XINT_#9_itself_\string&\string&\endcsname + {##3}% + \XINTfstop.{##3}##2% + }% + \XINT_expr_defbin_d #2% \XINT_expr_exec_<op> }% -\def\XINT_expr_defbin_b #1#2#3#4#5#6% +\def\XINT_expr_defbin_b #1#2%#3% {% \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_#2\expandafter\endcsname \csname XINT_#1_exec_#2\expandafter\endcsname \csname XINT_#1_check-_#2\expandafter\endcsname \csname XINT_#1_checkp_#2\expandafter\endcsname - \csname XINT_#1_op_-#4\expandafter\endcsname - \csname #5\expandafter\endcsname - \csname XINT_expr_precedence_#2\endcsname {#1}#6% - \expandafter\let + \csname XINT_#1_op_-xii\expandafter\endcsname \csname XINT_expr_precedence_#2\expandafter\endcsname - \csname xint_c_#3\endcsname -}% -\XINT_expr_defbin_b {expr} {..} {vi}{xii}{xintSeq:tl:x}\XINT:NEhook:x:one:from:two -\XINT_expr_defbin_b {flexpr}{..} {vi}{xii}{xintSeq:tl:x}\XINT:NEhook:x:one:from:two -\XINT_expr_defbin_b {iiexpr}{..} {vi}{xii}{xintiiSeq:tl:x}\XINT:NEhook:x:one:from:two -\XINT_expr_defbin_b {expr} {]..}{vi}{xii}{xintSeqB:tl:x}\XINT:NEhook:x:one:from:twoandone -\XINT_expr_defbin_b {flexpr}{]..}{vi}{xii}{xintSeqB:tl:x}\XINT:NEhook:x:one:from:twoandone -\XINT_expr_defbin_b {iiexpr}{]..}{vi}{xii}{xintiiSeqB:tl:x}\XINT:NEhook:x:one:from:twoandone + \csname XINT_#1_checkc_#2\expandafter\endcsname + \csname XINT_#1_execc_#2\endcsname + {#1}%#3% +}% +\XINT_expr_defbin_b {expr} <\xintLt +\XINT_expr_defbin_b {flexpr}<\xintLt +\XINT_expr_defbin_b {iiexpr}<\xintiiLt +\XINT_expr_defbin_b {expr} >\xintGt +\XINT_expr_defbin_b {flexpr}>\xintGt +\XINT_expr_defbin_b {iiexpr}>\xintiiGt +\XINT_expr_defbin_b {expr} {==}\xintEq +\XINT_expr_defbin_b {flexpr}{==}\xintEq +\XINT_expr_defbin_b {iiexpr}{==}\xintiiEq +\XINT_expr_defbin_b {expr} {<=}\xintLtorEq +\XINT_expr_defbin_b {flexpr}{<=}\xintLtorEq +\XINT_expr_defbin_b {iiexpr}{<=}\xintiiLtorEq +\XINT_expr_defbin_b {expr} {>=}\xintGtorEq +\XINT_expr_defbin_b {flexpr}{>=}\xintGtorEq +\XINT_expr_defbin_b {iiexpr}{>=}\xintiiGtorEq +\XINT_expr_defbin_b {expr} {!=}\xintNotEq +\XINT_expr_defbin_b {flexpr}{!=}\xintNotEq +\XINT_expr_defbin_b {iiexpr}{!=}\xintiiNotEq +\expandafter\let\csname XINT_expr_precedence_=\endcsname\xint_c_x +\xintFor #1 in {expr, flexpr, iiexpr} \do +{% + \expandafter\let\csname XINT_#1_op_=\expandafter\endcsname + \csname XINT_#1_op_==\endcsname +}% \def\xintSeq:tl:x #1#2% {% \expandafter\XINT_Seq:tl:x @@ -1332,7 +1450,7 @@ }% \def\XINT_expr_itself_obracket{obracket}% \catcode`] 11 \catcode`[ 11 -\def\XINT_tmpa #1#2#3#4#5#6% +\def\XINT_expr_defbin_c #1#2#3#4#5#6% {% \def #1##1% {% @@ -1361,8 +1479,9 @@ \fi }% }% -\xintFor #1 in {expr,flexpr,iiexpr} \do {% - \expandafter\XINT_tmpa +\def\XINT_expr_defbin_b #1% +{% + \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_obracket\expandafter\endcsname \csname XINT_#1_op_]\expandafter\endcsname \csname XINT_#1_until_cbracket_a\expandafter\endcsname @@ -1370,11 +1489,14 @@ \csname XINT_#1_op_-xii\endcsname {#1}% }% +\XINT_expr_defbin_b {expr}% +\XINT_expr_defbin_b {flexpr}% +\XINT_expr_defbin_b {iiexpr}% \def\XINT_expr_missing_] {\XINT_expandableerror{Ooops, looks like we are missing a ] here. Goodbye!}% \xint_c_ \XINT_expr_done}% \let\XINT_expr_precedence_]\xint_c_ii -\def\XINT_tmpa #1#2#3#4#5#6% +\def\XINT_expr_defbin_c #1#2#3#4#5#6% {% \def #1##1% \XINT_expr_op_[ {% @@ -1409,8 +1531,9 @@ }% }% \let\XINT_expr_precedence_[ \xint_c_xx -\xintFor #1 in {expr,flexpr,iiexpr} \do {% -\expandafter\XINT_tmpa +\def\XINT_expr_defbin_b #1% +{% + \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_[\expandafter\endcsname \csname XINT_#1_exec_]\expandafter\endcsname \csname XINT_#1_check-_]\expandafter\endcsname @@ -1418,8 +1541,11 @@ \csname XINT_#1_op_-xii\endcsname {#1}% }% +\XINT_expr_defbin_b {expr}% +\XINT_expr_defbin_b {flexpr}% +\XINT_expr_defbin_b {iiexpr}% \catcode`] 12 \catcode`[ 12 -\def\XINT_tmpa #1#2#3#4#5#6% +\def\XINT_expr_defbin_c #1#2#3#4#5#6% {% \def #1##1% \XINT_expr_op_: {% @@ -1447,14 +1573,18 @@ }% }% \let\XINT_expr_precedence_: \xint_c_vi -\xintFor #1 in {expr,flexpr,iiexpr} \do {% -\expandafter\XINT_tmpa +\def\XINT_expr_defbin_b #1% +{% + \expandafter\XINT_expr_defbin_c \csname XINT_#1_op_:\expandafter\endcsname \csname XINT_#1_exec_:\expandafter\endcsname \csname XINT_#1_check-_:\expandafter\endcsname \csname XINT_#1_checkp_:\expandafter\endcsname \csname XINT_#1_op_-xii\endcsname {#1}% }% +\XINT_expr_defbin_b {expr}% +\XINT_expr_defbin_b {flexpr}% +\XINT_expr_defbin_b {iiexpr}% \def\XINT_ListSel_deeper #1% {% \if :#1\xint_dothis\XINT_ListSel_slice_next\fi @@ -3249,6 +3379,23 @@ {\expandafter#1\expandafter#2\romannumeral0\XINT:NEhook:unpack}% \let\XINT_flexpr_func_unpack\XINT_expr_func_unpack \let\XINT_iiexpr_func_unpack\XINT_expr_func_unpack +\def\XINT_expr_func_flat #1#2%#3% +{% + \expandafter#1\expandafter#2\expanded + \XINT:NEhook:x:flatten\XINT:expr:flatten +}% +\let\XINT_flexpr_func_flat\XINT_expr_func_flat +\let\XINT_iiexpr_func_flat\XINT_expr_func_flat +\let\XINT:NEhook:x:flatten\empty +\def\XINT_expr_func_zip #1#2%#3% +{% + \expandafter#1\expandafter#2\romannumeral`&&@% + \XINT:NEhook:x:zip\XINT:expr:zip +}% +\let\XINT_flexpr_func_zip\XINT_expr_func_zip +\let\XINT_iiexpr_func_zip\XINT_expr_func_zip +\let\XINT:NEhook:x:zip\empty +\def\XINT:expr:zip#1{\expandafter{\expanded\XINT_zip_A#1\xint_bye\xint_bye}}% \def\XINT_tmpa #1#2#3#4#5% {% \def #1##1(##2)##3={% @@ -3920,6 +4067,43 @@ \fi \XINT:expr:toblistwith{##1}{##2}% }}\expandafter\XINT:NE:x:toblist\string#% \def\XINT:NE:x:toblist:p\XINT:expr:toblistwith #1#2{{\XINTfstop.{#2}}}% +\def\XINT:NE:x:flatten#1{% +\def\XINT:NE:x:flatten\XINT:expr:flatten##1% +{% + \if 0\expandafter\XINT:NE:hastilde\detokenize{##1}~!\relax + \expandafter\XINT:NE:hashash \detokenize{##1}#1!\relax 0% + \else + \expandafter\XINT:NE:x:flatten:p + \fi \XINT:expr:flatten{##1}% +}}\expandafter\XINT:NE:x:flatten\string#% +\def\XINT:NE:x:flatten:p\XINT:expr:flatten #1% +{% + {{% + \detokenize + {% + \expandafter\XINT:expr:flatten_checkempty + \detokenize\expandafter{\expanded{#1}}$XINT_expr_caret%$ + }% + }}% +}% +\def\XINT:NE:x:zip#1{% +\def\XINT:NE:x:zip\XINT:expr:zip##1% +{% + \if 0\expandafter\XINT:NE:hastilde\detokenize{##1}~!\relax + \expandafter\XINT:NE:hashash \detokenize{##1}#1!\relax 0% + \else + \expandafter\XINT:NE:x:zip:p + \fi \XINT:expr:zip{##1}% +}}\expandafter\XINT:NE:x:zip\string#% +\def\XINT:NE:x:zip:p\XINT:expr:zip #1% +{% + \expandafter{% + \detokenize + {% + \expanded\expandafter\XINT_zip_A\expanded{#1}\xint_bye\xint_bye + }% + }% +}% \def\XINT:NE:x:mapwithin#1{% \def\XINT:NE:x:mapwithin\XINT:expr:mapwithin ##1##2% {% @@ -4040,6 +4224,8 @@ \let\XINT:NEhook:rrseq \XINT:NE:rrseq \let\XINT:NEhook:iterr \XINT:NE:iterr \let\XINT:NEhook:x:toblist \XINT:NE:x:toblist + \let\XINT:NEhook:x:flatten \XINT:NE:x:flatten + \let\XINT:NEhook:x:zip \XINT:NE:x:zip \let\XINT:NEhook:x:mapwithin \XINT:NE:x:mapwithin \let\XINT:NEhook:x:ndmapx \XINT:NE:x:ndmapx \let\XINT:NEhook:userfunc \XINT:NE:userfunc diff --git a/Master/texmf-dist/tex/generic/xint/xintfrac.sty b/Master/texmf-dist/tex/generic/xint/xintfrac.sty index d6e79408cc9..a9218952fd0 100644 --- a/Master/texmf-dist/tex/generic/xint/xintfrac.sty +++ b/Master/texmf-dist/tex/generic/xint/xintfrac.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintfrac: Expandable operations on fractions %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintfrac}% - [2020/02/19 v1.4a Expandable operations on fractions (JFB)]% + [2020/02/25 v1.4b Expandable operations on fractions (JFB)]% \def\XINT_cntSgnFork #1% {% \ifcase #1\expandafter\xint_secondofthree @@ -458,8 +458,9 @@ \def\XINT_spraw #1[#2#3]{\xint_gob_til_W #2\XINT_spraw_a\W\XINT_spraw_p #1[#2#3]}% \def\XINT_spraw_a\W\XINT_spraw_p #1[\W]{ #1}% \def\XINT_spraw_p #1[\W]{\xintpraw {#1}}% -\def\xintFracToSci #1% - {\expandafter\XINT_FracToSci\romannumeral`&&@#1/\W[\R]}% +\edef\xintFracToSci #1% + {\unexpanded{\expandafter\XINT_FracToSci\romannumeral`&&@}#1\string e% + \unexpanded{\Z/\W[\R]}}% \def\XINT_FracToSci #1/#2#3[#4% {% \xint_gob_til_W #2\XINT_FracToSci_no\W @@ -471,18 +472,39 @@ \xint_gob_til_R #3\XINT_FracToSci_nono\R \XINT_FracToSci_noyes #2[#3% }% -\def\XINT_FracToSci_nono\R\XINT_FracToSci_noyes #1/\W[\R]{#1}% -\def\XINT_FracToSci_noyes #1#2[#3]/\W[\R]% +\edef\XINT_tmpa{##1\string e##2}% +\def\XINT_tmpb{\def\XINT_FracToSci_nono\R\XINT_FracToSci_noyes}% +\expandafter +\XINT_tmpb\XINT_tmpa +{% + #1\xint_gob_til_Z #2\XINT_FracToSci_nonono\Z + \XINT_FracToSci_nonoyes #2% +}% +\edef\XINT_tmpa{##1\string e}% + \def\XINT_tmpb{\def\XINT_FracToSci_nonoyes}% +\expandafter +\XINT_tmpb\XINT_tmpa\Z/\W[\R]{\xintFracToSciE#1}% +\def\XINT_FracToSci_nonono\Z\XINT_FracToSci_nonoyes\Z/\W[\R]{}% +\edef\XINT_tmpa{##1##2[##3]\string e}% + \def\XINT_tmpb{\def\XINT_FracToSci_noyes}% +\expandafter +\XINT_tmpb\XINT_tmpa\Z/\W[\R]% {% #1\xint_gob_til_zero#1\expandafter\iffalse\xint_gobble_ii0\iftrue #2\ifnum #3=\xint_c_\else\xintFracToSciE#3\fi\fi }% -\def\XINT_FracToSci_yesno\R\XINT_FracToSci_yesyes #1#2/#3/\W[\R]% +\edef\XINT_tmpa{##1##2/##3\string e}% + \def\XINT_tmpb{\def\XINT_FracToSci_yesno\R\XINT_FracToSci_yesyes}% +\expandafter +\XINT_tmpb\XINT_tmpa\Z/\W[\R]% {% #1\xint_gob_til_zero#1\expandafter\iffalse\xint_gobble_ii0\iftrue #2\if\XINT_isOne{#3}1\else/#3\fi\fi }% -\def\XINT_FracToSci_yesyes #1#2/#3[#4]/\W[\R]% +\edef\XINT_tmpa{##1##2/##3[##4]\string e}% + \def\XINT_tmpb{\def\XINT_FracToSci_yesyes}% +\expandafter +\XINT_tmpb\XINT_tmpa\Z/\W[\R]% {% #1\xint_gob_til_zero#1\expandafter\iffalse\xint_gobble_ii0\iftrue #2\ifnum #4=\xint_c_\else\xintFracToSciE#4\fi @@ -2299,21 +2321,26 @@ \ifnum #3<-\xint_c_v \xint_dothis\XINT_pfloat_no\fi \ifnum #3<\xint_c_ \xint_dothis\XINT_pfloat_N\fi \ifnum #3>\numexpr #4-\xint_c_i\relax \xint_dothis\XINT_pfloat_Ps\fi - \xint_orthat\XINT_pfloat_P #1#2e#3;% + \xint_orthat\XINT_pfloat_P #1{#2}{#3}% +}% +\def\XINT_pfloat_no +{% + \expandafter\XINT_pfloat_no_e\expandafter{\xintPFloatE}% }% -\def\XINT_pfloat_no #1#2;{ #1.#2}% -\def\XINT_pfloat_N #1e-#2;% +\def\XINT_pfloat_no_e #1#2#3#4{ #2.#3#1#4}% +\def\xintPFloatE{e}% +\def\XINT_pfloat_N #1#2#3% {% - \csname XINT_pfloat_N_\romannumeral#2\endcsname #1% + \csname XINT_pfloat_N_\romannumeral-#3\endcsname #1#2% }% \def\XINT_pfloat_N_i { 0.}% \def\XINT_pfloat_N_ii { 0.0}% \def\XINT_pfloat_N_iii{ 0.00}% \def\XINT_pfloat_N_iv { 0.000}% \def\XINT_pfloat_N_v { 0.0000}% -\def\XINT_pfloat_P #1e#2;% +\def\XINT_pfloat_P #1#2#3% {% - \csname XINT_pfloat_P_\romannumeral#2\endcsname #1% + \csname XINT_pfloat_P_\romannumeral#3\endcsname #1#2% }% \def\XINT_pfloat_P_ #1{ #1.}% \def\XINT_pfloat_P_i #1#2{ #1#2.}% @@ -2321,9 +2348,9 @@ \def\XINT_pfloat_P_iii#1#2#3#4{ #1#2#3#4.}% \def\XINT_pfloat_P_iv #1#2#3#4#5{ #1#2#3#4#5.}% \def\XINT_pfloat_P_v #1#2#3#4#5#6{ #1#2#3#4#5#6.}% -\def\XINT_pfloat_Ps #1e#2;% +\def\XINT_pfloat_Ps #1#2#3% {% - \csname XINT_pfloat_Ps\romannumeral#2\endcsname #100000;% + \csname XINT_pfloat_Ps\romannumeral#3\endcsname #1#200000;% }% \def\XINT_pfloat_Psi #1#2#3;{ #1#2.}% \def\XINT_pfloat_Psii #1#2#3#4;{ #1#2#3.}% diff --git a/Master/texmf-dist/tex/generic/xint/xintgcd.sty b/Master/texmf-dist/tex/generic/xint/xintgcd.sty index d6afd5f3cbd..e80299dd21a 100644 --- a/Master/texmf-dist/tex/generic/xint/xintgcd.sty +++ b/Master/texmf-dist/tex/generic/xint/xintgcd.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintgcd: Euclidean algorithm with xint package %% --------------------------------------------------------------- @@ -77,7 +77,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintgcd}% - [2020/02/19 v1.4a Euclide algorithm with xint package (JFB)]% + [2020/02/25 v1.4b Euclide algorithm with xint package (JFB)]% \def\xintBezout {\romannumeral0\xintbezout }% \def\xintbezout #1% {% diff --git a/Master/texmf-dist/tex/generic/xint/xintkernel.sty b/Master/texmf-dist/tex/generic/xint/xintkernel.sty index 7ff6d800034..29a8b3a05f2 100644 --- a/Master/texmf-dist/tex/generic/xint/xintkernel.sty +++ b/Master/texmf-dist/tex/generic/xint/xintkernel.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintkernel: Paraphernalia for the xint packages %% --------------------------------------------------------------- @@ -157,7 +157,7 @@ \fi \XINT_providespackage \ProvidesPackage {xintkernel}% - [2020/02/19 v1.4a Paraphernalia for the xint packages (JFB)]% + [2020/02/25 v1.4b Paraphernalia for the xint packages (JFB)]% \chardef\xint_c_ 0 \chardef\xint_c_i 1 \chardef\xint_c_ii 2 diff --git a/Master/texmf-dist/tex/generic/xint/xintlog.sty b/Master/texmf-dist/tex/generic/xint/xintlog.sty index 8b900fff49a..ddf209338a4 100644 --- a/Master/texmf-dist/tex/generic/xint/xintlog.sty +++ b/Master/texmf-dist/tex/generic/xint/xintlog.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintlog: Logarithms and exponentials for xintexpr %% --------------------------------------------------------------- @@ -74,7 +74,7 @@ \xintexprSafeCatcodes\catcode`_ 11 \XINT_providespackage \ProvidesPackage{xintlog}% -[2020/02/19 v1.4a Logarithms and exponentials for xintexpr (JFB)]% +[2020/02/25 v1.4b Logarithms and exponentials for xintexpr (JFB)]% \ifdefined\RequirePackage \RequirePackage{poormanlog}% \else diff --git a/Master/texmf-dist/tex/generic/xint/xintseries.sty b/Master/texmf-dist/tex/generic/xint/xintseries.sty index 1c391526cc6..76608a2239b 100644 --- a/Master/texmf-dist/tex/generic/xint/xintseries.sty +++ b/Master/texmf-dist/tex/generic/xint/xintseries.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintseries: Expandable partial sums with xint package %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xintseries}% - [2020/02/19 v1.4a Expandable partial sums with xint package (JFB)]% + [2020/02/25 v1.4b Expandable partial sums with xint package (JFB)]% \def\xintSeries {\romannumeral0\xintseries }% \def\xintseries #1#2% {% diff --git a/Master/texmf-dist/tex/generic/xint/xinttools.sty b/Master/texmf-dist/tex/generic/xint/xinttools.sty index b0806b12848..0aeffe17888 100644 --- a/Master/texmf-dist/tex/generic/xint/xinttools.sty +++ b/Master/texmf-dist/tex/generic/xint/xinttools.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xinttools: Expandable and non-expandable utilities %% --------------------------------------------------------------- @@ -70,7 +70,7 @@ \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xinttools}% - [2020/02/19 v1.4a Expandable and non-expandable utilities (JFB)]% + [2020/02/25 v1.4b Expandable and non-expandable utilities (JFB)]% \newtoks\XINT_toks \xint_firstofone{\let\XINT_sptoken= } %<- space here! \def\xintgodef {\global\xintodef }% @@ -578,28 +578,6 @@ \long\def\XINT_apply_loop_b #1#2{\XINT_apply_loop_a {#2{#1}}}% \long\def\XINT_apply_end\xint_bye\expandafter\XINT_apply_loop_b \expandafter #1#2#3{ #2}% -\long\def\xintApply:x #1#2% -{% - \XINT_apply:x_loop {#1}#2% - {\xint:\XINT_apply:x_loop_enda}{\xint:\XINT_apply:x_loop_endb}% - {\xint:\XINT_apply:x_loop_endc}{\xint:\XINT_apply:x_loop_endd}% - {\xint:\XINT_apply:x_loop_ende}{\xint:\XINT_apply:x_loop_endf}% - {\xint:\XINT_apply:x_loop_endg}{\xint:\XINT_apply:x_loop_endh}\xint_bye -}% -\long\def\XINT_apply:x_loop #1#2#3#4#5#6#7#8#9% -{% - \xint_gob_til_xint: #9\xint: - {#1{#2}}{#1{#3}}{#1{#4}}{#1{#5}}{#1{#6}}{#1{#7}}{#1{#8}}{#1{#9}}% - \XINT_apply:x_loop {#1}% -}% -\long\def\XINT_apply:x_loop_endh\xint: #1\xint_bye{}% -\long\def\XINT_apply:x_loop_endg\xint: #1#2\xint_bye{{#1}}% -\long\def\XINT_apply:x_loop_endf\xint: #1#2#3\xint_bye{{#1}{#2}}% -\long\def\XINT_apply:x_loop_ende\xint: #1#2#3#4\xint_bye{{#1}{#2}{#3}}% -\long\def\XINT_apply:x_loop_endd\xint: #1#2#3#4#5\xint_bye{{#1}{#2}{#3}{#4}}% -\long\def\XINT_apply:x_loop_endc\xint: #1#2#3#4#5#6\xint_bye{{#1}{#2}{#3}{#4}{#5}}% -\long\def\XINT_apply:x_loop_endb\xint: #1#2#3#4#5#6#7\xint_bye{{#1}{#2}{#3}{#4}{#5}{#6}}% -\long\def\XINT_apply:x_loop_enda\xint: #1#2#3#4#5#6#7#8\xint_bye{{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% \def\xintApplyUnbraced {\romannumeral0\xintapplyunbraced }% \def\xintApplyUnbracedNoExpand {\romannumeral0\xintapplyunbracednoexpand }% \long\def\xintapplyunbraced #1#2% @@ -619,56 +597,98 @@ \long\def\XINT_applyunbr_loop_b #1#2{\XINT_applyunbr_loop_a {#2#1}}% \long\def\XINT_applyunbr_end\xint_bye\expandafter\XINT_applyunbr_loop_b \expandafter #1#2#3{ #2}% -\long\def\xintApplyUnbraced:x #1#2% -{% - \XINT_applyunbraced:x_loop {#1}#2% - {\xint:\XINT_applyunbraced:x_loop_enda}{\xint:\XINT_applyunbraced:x_loop_endb}% - {\xint:\XINT_applyunbraced:x_loop_endc}{\xint:\XINT_applyunbraced:x_loop_endd}% - {\xint:\XINT_applyunbraced:x_loop_ende}{\xint:\XINT_applyunbraced:x_loop_endf}% - {\xint:\XINT_applyunbraced:x_loop_endg}{\xint:\XINT_applyunbraced:x_loop_endh}\xint_bye -}% -\long\def\XINT_applyunbraced:x_loop #1#2#3#4#5#6#7#8#9% -{% - \xint_gob_til_xint: #9\xint: - #1{#2}% - \empty#1{#3}% - \empty#1{#4}% - \empty#1{#5}% - \empty#1{#6}% - \empty#1{#7}% - \empty#1{#8}% - \empty#1{#9}% - \XINT_applyunbraced:x_loop {#1}% -}% -\long\def\XINT_applyunbraced:x_loop_endh\xint: #1\xint_bye{}% -\long\def\XINT_applyunbraced:x_loop_endg\xint: #1\empty#2\xint_bye{#1}% -\long\def\XINT_applyunbraced:x_loop_endf\xint: #1\empty - #2\empty#3\xint_bye{#1#2}% -\long\def\XINT_applyunbraced:x_loop_ende\xint: #1\empty - #2\empty - #3\empty#4\xint_bye{#1#2#3}% -\long\def\XINT_applyunbraced:x_loop_endd\xint: #1\empty - #2\empty - #3\empty - #4\empty#5\xint_bye{#1#2#3#4}% -\long\def\XINT_applyunbraced:x_loop_endc\xint: #1\empty - #2\empty - #3\empty - #4\empty - #5\empty#6\xint_bye{#1#2#3#4#5}% -\long\def\XINT_applyunbraced:x_loop_endb\xint: #1\empty - #2\empty - #3\empty - #4\empty - #5\empty - #6\empty#7\xint_bye{#1#2#3#4#5#6}% -\long\def\XINT_applyunbraced:x_loop_enda\xint: #1\empty - #2\empty - #3\empty - #4\empty - #5\empty - #6\empty - #7\empty#8\xint_bye{#1#2#3#4#5#6#7}% +\def\xintZip #1{\expanded\XINT_zip_A#1\xint_bye\xint_bye}% +\def\XINT_zip_A#1% +{% + \xint_bye#1{\expandafter}\xint_bye + \expanded{\unexpanded{\XINT_ziptwo_A + #1\xint_bye\xint_bye\xint_bye\xint_bye\xint:}\expandafter}% + \expanded\XINT_zip_a +}% +\def\XINT_zip_a#1% +{% + \xint_bye#1\XINT_zip_terminator\xint_bye + \expanded{\unexpanded{\XINT_ziptwo_a + #1\xint_bye\xint_bye\xint_bye\xint_bye\xint:}\expandafter}% + \expanded\XINT_zip_a +}% +\def\XINT_zip_terminator\xint_bye#1\xint_bye{{}\empty\empty\empty\empty\xint:}% +\def\XINT_ziptwo_a #1#2#3#4#5\xint:#6#7#8#9% +{% + \bgroup + \xint_bye #1\XINT_ziptwo_e \xint_bye + \xint_bye #6\XINT_ziptwo_e \xint_bye {{#1}#6}% + \xint_bye #2\XINT_ziptwo_e \xint_bye + \xint_bye #7\XINT_ziptwo_e \xint_bye {{#2}#7}% + \xint_bye #3\XINT_ziptwo_e \xint_bye + \xint_bye #8\XINT_ziptwo_e \xint_bye {{#3}#8}% + \xint_bye #4\XINT_ziptwo_e \xint_bye + \xint_bye #9\XINT_ziptwo_e \xint_bye {{#4}#9}% + \ifx \empty#6\expandafter\XINT_zipone_a\fi + \XINT_ziptwo_b #5\xint: +}% +\def\XINT_zipone_a\XINT_ziptwo_b{\XINT_zipone_b}% +\def\XINT_ziptwo_b #1#2#3#4#5\xint:#6#7#8#9% +{% + \xint_bye #1\XINT_ziptwo_e \xint_bye + \xint_bye #6\XINT_ziptwo_e \xint_bye {{#1}#6}% + \xint_bye #2\XINT_ziptwo_e \xint_bye + \xint_bye #7\XINT_ziptwo_e \xint_bye {{#2}#7}% + \xint_bye #3\XINT_ziptwo_e \xint_bye + \xint_bye #8\XINT_ziptwo_e \xint_bye {{#3}#8}% + \xint_bye #4\XINT_ziptwo_e \xint_bye + \xint_bye #9\XINT_ziptwo_e \xint_bye {{#4}#9}% + \XINT_ziptwo_b #5\xint: +}% +\def\XINT_ziptwo_e #1\XINT_ziptwo_b #2\xint:#3\xint: + {\iffalse{\fi}\xint_bye\xint_bye\xint_bye\xint_bye\xint:}% +\def\XINT_zipone_b #1#2#3#4% +{% + \xint_bye #1\XINT_zipone_e \xint_bye {{#1}}% + \xint_bye #2\XINT_zipone_e \xint_bye {{#2}}% + \xint_bye #3\XINT_zipone_e \xint_bye {{#3}}% + \xint_bye #4\XINT_zipone_e \xint_bye {{#4}}% + \XINT_zipone_b +}% +\def\XINT_zipone_e #1\XINT_zipone_b #2\xint: + {\iffalse{\fi}\xint_bye\xint_bye\xint_bye\xint_bye\empty}% +\def\XINT_ziptwo_A #1#2#3#4#5\xint:#6#7#8#9% +{% + \bgroup + \xint_bye #1\XINT_ziptwo_end \xint_bye + \xint_bye #6\XINT_ziptwo_end \xint_bye {{#1}#6}% + \xint_bye #2\XINT_ziptwo_end \xint_bye + \xint_bye #7\XINT_ziptwo_end \xint_bye {{#2}#7}% + \xint_bye #3\XINT_ziptwo_end \xint_bye + \xint_bye #8\XINT_ziptwo_end \xint_bye {{#3}#8}% + \xint_bye #4\XINT_ziptwo_end \xint_bye + \xint_bye #9\XINT_ziptwo_end \xint_bye {{#4}#9}% + \ifx \empty#6\expandafter\XINT_zipone_A\fi + \XINT_ziptwo_B #5\xint: +}% +\def\XINT_zipone_A\XINT_ziptwo_B{\XINT_zipone_B}% +\def\XINT_ziptwo_B #1#2#3#4#5\xint:#6#7#8#9% +{% + \xint_bye #1\XINT_ziptwo_end \xint_bye + \xint_bye #6\XINT_ziptwo_end \xint_bye {{#1}#6}% + \xint_bye #2\XINT_ziptwo_end \xint_bye + \xint_bye #7\XINT_ziptwo_end \xint_bye {{#2}#7}% + \xint_bye #3\XINT_ziptwo_end \xint_bye + \xint_bye #8\XINT_ziptwo_end \xint_bye {{#3}#8}% + \xint_bye #4\XINT_ziptwo_end \xint_bye + \xint_bye #9\XINT_ziptwo_end \xint_bye {{#4}#9}% + \XINT_ziptwo_B #5\xint: +}% +\def\XINT_ziptwo_end #1\XINT_ziptwo_B #2\xint:#3\xint:{\iffalse{\fi}}% +\def\XINT_zipone_B #1#2#3#4% +{% + \xint_bye #1\XINT_zipone_end \xint_bye {{#1}}% + \xint_bye #2\XINT_zipone_end \xint_bye {{#2}}% + \xint_bye #3\XINT_zipone_end \xint_bye {{#3}}% + \xint_bye #4\XINT_zipone_end \xint_bye {{#4}}% + \XINT_zipone_B +}% +\def\XINT_zipone_end #1\XINT_zipone_B #2\xint:#3\xint:{\iffalse{\fi}}% \def\xintSeq {\romannumeral0\xintseq }% \def\xintseq #1{\XINT_seq_chkopt #1\xint_bye }% \def\XINT_seq_chkopt #1% diff --git a/Master/texmf-dist/tex/generic/xint/xinttrig.sty b/Master/texmf-dist/tex/generic/xint/xinttrig.sty index 4fe1f6170c3..8eacf2dce04 100644 --- a/Master/texmf-dist/tex/generic/xint/xinttrig.sty +++ b/Master/texmf-dist/tex/generic/xint/xinttrig.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.4a 2020/02/19 +%% The xint bundle 1.4b 2020/02/25 %% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xinttrig: Trigonometry for the xintexpr package %% --------------------------------------------------------------- @@ -68,10 +68,10 @@ \expandafter\xint_secondoftwo \fi {\immediate\write-1{Reloading xinttrig library using Digits=\xinttheDigits.}}% -{\expandafter\gdef\csname xintlibver@trig\endcsname{2020/02/19 v1.4a}% +{\expandafter\gdef\csname xintlibver@trig\endcsname{2020/02/25 v1.4b}% \XINT_providespackage \ProvidesPackage{xinttrig}% -[2020/02/19 v1.4a Trigonometrical functions for xintexpr (JFB)]% +[2020/02/25 v1.4b Trigonometrical functions for xintexpr (JFB)]% }% \xintFor* #1 in {iDTVtuwxyzX}\do{\xintensuredummy{#1}}% \def\xintreloadxinttrig @@ -93,7 +93,7 @@ 57.2957795130823208767981548141051703324054724665643215491602;% 180/Pi \xintdeffloatvar invfact\xintListWithSep{, invfact}{\xintSeq{2}{44}}% := \xintfloatexpr [\XINTdigits] % force float rounding after exact evaluations - \xintexpr rseq(1/2{;}@/i, i=3..44)\relax % need to hide inner ; from \xintdeffloatvar + \xintexpr rseq(1/2; @/i, i=3..44)\relax % no need to hide this inner ; \relax;% \xintdeffloatfunc sin_aux(X) := 1 - X(invfact3 - X(invfact5 \ifnum\XINTdigits>4 |