summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xintlog.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintlog.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintlog.sty169
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