diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintlog.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintlog.sty | 169 |
1 files changed, 108 insertions, 61 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xintlog.sty b/Master/texmf-dist/tex/generic/xint/xintlog.sty index b93e1c2bb05..974e5e8c668 100644 --- a/Master/texmf-dist/tex/generic/xint/xintlog.sty +++ b/Master/texmf-dist/tex/generic/xint/xintlog.sty @@ -21,8 +21,8 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- -%% The xint bundle 1.3f 2019/09/10 -%% Copyright (C) 2013-2019 by Jean-Francois Burnol +%% The xint bundle 1.4 2020/01/31 +%% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xintlog: Logarithms and exponentials for xintexpr %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -74,7 +74,7 @@ \xintexprSafeCatcodes\catcode`_ 11 \XINT_providespackage \ProvidesPackage{xintlog}% -[2019/09/10 v1.3f Logarithms and exponentials for xintexpr (JFB)]% +[2020/01/31 v1.4 Logarithms and exponentials for xintexpr (JFB)]% \ifdefined\RequirePackage \RequirePackage{poormanlog}% \else @@ -83,96 +83,143 @@ \xintexprRestoreCatcodes\csname XINT_setcatcodes\endcsname\catcode`\! 11 \expandafter\def\csname XINT_expr_func_log10\endcsname#1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\PoorManLogBaseTen{\XINT_expr_unlock #3}\endcsname + \expandafter #1\expandafter #2\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:one + {\romannumeral`&&@\PoorManLogBaseTen#3}}% }% \expandafter\let\csname XINT_flexpr_func_log10\expandafter\endcsname \csname XINT_expr_func_log10\endcsname \expandafter\def\csname XINT_expr_func_pow10\endcsname#1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\PoorManPowerOfTen{\XINT_expr_unlock #3}\endcsname + \expandafter #1\expandafter #2\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:one + {\romannumeral`&&@\PoorManPowerOfTen#3}}% }% \expandafter\let\csname XINT_flexpr_func_pow10\expandafter\endcsname \csname XINT_expr_func_pow10\endcsname \def\XINT_expr_func_log #1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\xintLog{\XINT_expr_unlock #3}\endcsname + \expandafter #1\expandafter #2\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:one + {\romannumeral`&&@\xintLog#3}}% }% \def\XINT_flexpr_func_log #1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\XINTinFloatLog{\XINT_expr_unlock #3}\endcsname + \expandafter #1\expandafter #2\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:one + {\romannumeral`&&@\XINTinFloatLog#3}}% }% \def\XINT_expr_func_exp #1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\xintExp{\XINT_expr_unlock #3}\endcsname + \expandafter #1\expandafter #2\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:one + {\romannumeral`&&@\xintExp#3}}% }% \def\XINT_flexpr_func_exp #1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\XINTinFloatExp{\XINT_expr_unlock #3}\endcsname + \expandafter #1\expandafter #2\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:one + {\romannumeral`&&@\XINTinFloatExp#3}}% }% \def\XINT_expr_func_pow #1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \expandafter\XINT:NEhook:twosp - \romannumeral`&&@\XINT_expr_unlock #3,!\PoorManPower - \endcsname + \expandafter #1\expandafter #2\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:two + {\romannumeral`&&@\PoorManPower#3}}% }% \let\XINT_flexpr_func_pow\XINT_expr_func_pow \catcode`\* 11 -\def\poormanloghack**{% -\def\XINT_expr_op_** ##1% -{% - \expandafter \XINT_expr_until_**_a - \expandafter ##1\romannumeral`&&@\expandafter\XINT_expr_getnext -}% -\def\XINT_expr_until_**_a ##1{% -\def\XINT_expr_until_**_a ####1####2% +\def\poormanloghack** {% + \def\XINT_tmpa ##1##2##3##4##5##6% + {% + \def ##3####1% \XINT_expr_op_<op> + {% + \expanded{\unexpanded{##4{####1}}\expandafter}% + \romannumeral`&&@\expandafter##2\romannumeral`&&@\XINT_expr_getnext + }% + \def##2####1% \XINT_expr_check-_<op> + {% \xint_UDsignfork - ####2{\expandafter \XINT_expr_until_**_a \expandafter ##1% - \romannumeral`&&@##1}% - -{\XINT_expr_until_**_b ####1####2}% + ####1{\expandafter##2\romannumeral`&&@##1}% + -{##5####1}% \krof -}}\expandafter\XINT_expr_until_**_a\csname XINT_expr_op_-ix\endcsname -\def\XINT_expr_until_**_b ##1##2##3##4% -{% - \ifnum ##2>\XINT_expr_precedence_** - \xint_afterfi - {\expandafter \XINT_expr_until_**_a \expandafter ##1% - \romannumeral`&&@\csname XINT_expr_op_##3\endcsname{##4}}% + }% + \def##5####1####2% \XINT_expr_checkp_<op> + {% + \ifnum ####1>\XINT_expr_precedence_** + \expandafter##5% + \romannumeral`&&@\csname XINT_##6_op_####2\expandafter\endcsname \else - \xint_afterfi - {\expandafter ##2\expandafter ##3% - \csname .=\XINT:NEhook:two - \PoorManPower{\XINT_expr_unlock ##1}{\XINT_expr_unlock ##4}\endcsname - }% - \fi -}% -\let\XINT_flexpr_op_** \XINT_expr_op_** -\let\XINT_flexpr_until_**_a\XINT_expr_until_**_a -\let\XINT_flexpr_until_**_b\XINT_expr_until_**_b + \expandafter ####1\expandafter ####2% + \fi + }% + }% + \expandafter\XINT_tmpa + \csname XINT_expr_op_-ix\expandafter\endcsname + \csname XINT_expr_check-_**\endcsname + \XINT_expr_op_** + \XINT_expr_exec_** + \XINT_expr_checkp_** {expr}% + \expandafter\XINT_tmpa + \csname XINT_flexpr_op_-ix\expandafter\endcsname + \csname XINT_flexpr_check-_**\endcsname + \XINT_flexpr_op_** + \XINT_flexpr_exec_** + \XINT_flexpr_checkp_** {flexpr}% + \def\XINT_expr_exec_** ##1##2##3##4% \XINT_expr_exec_<op> + {% + \expandafter##2\expandafter##3\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:two + {\romannumeral`&&@\PoorManPower##1##4}}% + }% + \let\XINT_flexpr_exec_**\XINT_expr_exec_** }% -\def\poormanloghack^{% -\def\XINT_expr_until_^_b ##1##2##3##4% +\def\poormanloghack^ {% - \ifnum ##2>\XINT_expr_precedence_^ - \xint_afterfi - {\expandafter \XINT_expr_until_^_a \expandafter ##1% - \romannumeral`&&@\csname XINT_expr_op_##3\endcsname {##4}}% + \def\XINT_tmpa ##1##2##3##4##5##6% + {% + \def ##3####1% \XINT_expr_op_<op> + {% + \expanded{\unexpanded{##4{####1}}\expandafter}% + \romannumeral`&&@\expandafter##2\romannumeral`&&@\XINT_expr_getnext + }% + \def##2####1% \XINT_expr_check-_<op> + {% + \xint_UDsignfork + ####1{\expandafter##2\romannumeral`&&@##1}% + -{##5####1}% + \krof + }% + \def##5####1####2% \XINT_expr_checkp_<op> + {% + \ifnum ####1>\XINT_expr_precedence_^ + \expandafter##5% + \romannumeral`&&@\csname XINT_##6_op_####2\expandafter\endcsname \else - \xint_afterfi - {\expandafter ##2\expandafter ##3% - \csname .=\XINT:NEhook:two - \PoorManPower{\XINT_expr_unlock ##1}{\XINT_expr_unlock ##4}\endcsname - }% - \fi -}% -\let\XINT_flexpr_until_^_b\XINT_expr_until_^_b + \expandafter ####1\expandafter ####2% + \fi + }% + }% + \expandafter\XINT_tmpa + \csname XINT_expr_op_-ix\expandafter\endcsname + \csname XINT_expr_check-_^\endcsname + \XINT_expr_op_^ + \XINT_expr_exec_^ + \XINT_expr_checkp_^ {expr}% + \expandafter\XINT_tmpa + \csname XINT_flexpr_op_-ix\expandafter\endcsname + \csname XINT_flexpr_check-_^\endcsname + \XINT_flexpr_op_^ + \XINT_flexpr_exec_^ + \XINT_flexpr_checkp_^ {flexpr}% + \def\XINT_expr_exec_^ ##1##2##3##4% \XINT_expr_exec_<op> + {% + \expandafter##2\expandafter##3\expandafter{% + \romannumeral`&&@\XINT:NEhook:f:one:from:two + {\romannumeral`&&@\PoorManPower##1##4}}% + }% + \let\XINT_flexpr_exec_^\XINT_expr_exec_^ }% \def\poormanloghack#1{\csname poormanloghack#1\endcsname}% \endinput |