summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-05-19 20:11:06 +0000
committerKarl Berry <karl@freefriends.org>2022-05-19 20:11:06 +0000
commitb48cdc7688e6483099499c0e3ec927b258e0f569 (patch)
tree9114384a0594ecf94a373504dd393617954608a2 /Master/texmf-dist/tex
parentb9769098c5fcee8329d370e153f3b332f137850b (diff)
xint (19may22)
git-svn-id: svn://tug.org/texlive/trunk@63338 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xint.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintbinhex.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintcfrac.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintcore.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintexpr.sty117
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintfrac.sty228
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintgcd.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintkernel.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintlog.sty8
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintseries.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xinttools.sty6
-rw-r--r--Master/texmf-dist/tex/generic/xint/xinttrig.sty8
12 files changed, 281 insertions, 128 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xint.sty b/Master/texmf-dist/tex/generic/xint/xint.sty
index 01e0fb1b1a7..800b3fbf5c8 100644
--- a/Master/texmf-dist/tex/generic/xint/xint.sty
+++ b/Master/texmf-dist/tex/generic/xint/xint.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xint: Expandable operations on big integers
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty (loaded by xintcore.sty)
\XINT_providespackage
\ProvidesPackage{xint}%
- [2021/07/13 v1.4j Expandable operations on big integers (JFB)]%
+ [2022/05/18 v1.4k 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 05ac782f8b1..243b7c325aa 100644
--- a/Master/texmf-dist/tex/generic/xint/xintbinhex.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintbinhex.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintbinhex: Expandable binary and hexadecimal conversions
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xintbinhex}%
- [2021/07/13 v1.4j Expandable binary and hexadecimal conversions (JFB)]%
+ [2022/05/18 v1.4k 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 1893763130f..e538575f50f 100644
--- a/Master/texmf-dist/tex/generic/xint/xintcfrac.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintcfrac.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintcfrac: Expandable continued fractions with xint package
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xintcfrac}%
- [2021/07/13 v1.4j Expandable continued fractions with xint package (JFB)]%
+ [2022/05/18 v1.4k 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 982e345e6ea..a11d046dec7 100644
--- a/Master/texmf-dist/tex/generic/xint/xintcore.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintcore.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintcore: Expandable arithmetic on big integers
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xintcore}%
- [2021/07/13 v1.4j Expandable arithmetic on big integers (JFB)]%
+ [2022/05/18 v1.4k 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 8f2f4e5ac61..84db61a81a1 100644
--- a/Master/texmf-dist/tex/generic/xint/xintexpr.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintexpr: Expandable expression parser
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -82,7 +82,7 @@
\XINTsetupcatcodes%
\XINT_providespackage
\ProvidesPackage{xintexpr}%
- [2021/07/13 v1.4j Expandable expression parser (JFB)]%
+ [2022/05/18 v1.4k Expandable expression parser (JFB)]%
\catcode`! 11
\let\XINT_Cmp \xintiiCmp
\def\XINTfstop{\noexpand\XINTfstop}%
@@ -318,7 +318,6 @@
\def\XINT_flexpr_wrap {\XINTfstop\XINTflexprprint}%
\protected\def\XINTexprprint.%
{\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintexprPrintOne}%
-\let\xintexprPrintOne\xintFracToSci
\protected\def\XINTiexprprint.%
{\XINT:NEhook:x:toblist\XINT:expr:toblistwith\xintiexprPrintOne}%
\let\xintiexprPrintOne\xintDecToString
@@ -367,12 +366,34 @@
\expanded\XINT:NEhook:x:mapwithin\XINT:expr:mapwithin{\XINTinFloatSdigits_braced}%
}%
\def\XINTinFloatSdigits_braced#1{{\XINTinFloatS[\XINTdigits]{#1}}}%
+\let\xint_relax\relax
\def\xinteval #1%
{\expanded\expandafter\XINTexprprint\expandafter.\romannumeral0\xintbareeval#1\relax}%
-\def\xintieval #1%
- {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr#1\relax}%
-\def\xintfloateval #1%
- {\expanded\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr#1\relax}%
+\def\xintieval
+ {\expanded\expandafter\xint_ieval_chkopt\string}%
+\def\xint_ieval_chkopt #1%
+{%
+ \ifx [#1\expandafter\xint_ieval_opt
+ \else\expandafter\xint_ieval_noopt
+ \fi #1%
+}%
+\def\xint_ieval_opt [#1]#2%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr[#1]#2\relax}%
+\def\xint_ieval_noopt #1{\expandafter\xint_ieval\expandafter{\iffalse}\fi}%
+\def\xint_ieval#1%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintiexpr#1\relax}%
+\def\xintfloateval {\expanded\expandafter\xint_floateval_chkopt\string}%
+\def\xint_floateval_chkopt #1%
+{%
+ \ifx [#1\expandafter\xint_floateval_opt
+ \else\expandafter\xint_floateval_noopt
+ \fi #1%
+}%
+\def\xint_floateval_opt [#1]#2%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr[#1]#2\relax}%
+\def\xint_floateval_noopt #1{\expandafter\xint_floateval\expandafter{\iffalse}\fi}%
+\def\xint_floateval#1%
+ {\expandafter\xint_gobble_i\romannumeral`&&@\xintfloatexpr#1\relax}%
\def\xintiieval #1%
{\expanded\expandafter\XINTiiexprprint\expandafter.\romannumeral0\xintbareiieval#1\relax}%
\def\xintboolexpr
@@ -391,6 +412,69 @@
\def\xintifsgnexpr #1{\romannumeral0\xintiiifsgn {\xinttheexpr #1\relax}}%
\def\xintifsgnfloatexpr #1{\romannumeral0\xintiiifsgn {\xintthefloatexpr #1\relax}}%
\def\xintifsgniiexpr #1{\romannumeral0\xintiiifsgn {\xinttheiiexpr #1\relax}}%
+\def\xintFracToSci #1{\expandafter\XINT_FracToSci\romannumeral`&&@#1/\W[\R}%
+\def\XINT_FracToSci #1/#2#3[#4%
+{%
+ \xint_gob_til_W #2\XINT_FracToSci_noslash\W
+ \xint_gob_til_R #4\XINT_FracToSci_slash_noN\R
+ \XINT_FracToSci_slash_N #1/#2#3[#4%
+}%
+\def\XINT_FracToSci_noslash#1\XINT_FracToSci_slash_N #2[#3%
+{%
+ \xint_gob_til_R #3\XINT_FracToSci_noslash_noN\R
+ \XINT_FracToSci_noslash_N #2[#3%
+}%
+\def\XINT_FracToSci_noslash_noN\R\XINT_FracToSci_noslash_N #1/\W[\R{#1}%
+\def\XINT_FracToSci_noslash_N #1[#2]/\W[\R%
+{%
+ \ifnum#2=\xint_c_ #1\else
+ \romannumeral0\expandafter\XINT_pfloat_keeptrimmed_fork\romannumeral0\xintrez{#1[#2]}%
+ \fi
+}%
+\def\XINT_FracToSci_slash_noN\R\XINT_FracToSci_slash_N #1#2/#3/\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_slash_N #1#2/#3[#4]/\W[\R%
+{%
+ \ifnum#4=\xint_c_ #1#2\else
+ \romannumeral0\expandafter\XINT_pfloat_keeptrimmed_fork\romannumeral0\xintrez{#1#2[#4]}%
+ \fi
+ \if\XINT_isOne{#3}1\else\if#10\else/#3\fi\fi
+}%
+\let\xintexprPrintOne\xintFracToSci
+\def\xintFracToDecimal #1{\expandafter\XINT_FracToDecimal\romannumeral`&&@#1/\W[\R}%
+\def\XINT_FracToDecimal #1/#2#3[#4%
+{%
+ \xint_gob_til_W #2\XINT_FracToDecimal_noslash\W
+ \xint_gob_til_R #4\XINT_FracToDecimal_slash_noN\R
+ \XINT_FracToDecimal_slash_N #1/#2#3[#4%
+}%
+\def\XINT_FracToDecimal_noslash#1\XINT_FracToDecimal_slash_N #2[#3%
+{%
+ \xint_gob_til_R #3\XINT_FracToDecimal_noslash_noN\R
+ \XINT_FracToDecimal_noslash_N #2[#3%
+}%
+\def\XINT_FracToDecimal_noslash_noN\R\XINT_FracToDecimal_noslash_N #1/\W[\R{#1}%
+\def\XINT_FracToDecimal_noslash_N #1[#2]/\W[\R%
+{%
+ \ifnum#2=\xint_c_ #1\else
+ \romannumeral0\expandafter\XINT_dectostr\romannumeral0\xintrez{#1[#2]}%
+ \fi
+}%
+\def\XINT_FracToDecimal_slash_noN\R\XINT_FracToDecimal_slash_N #1#2/#3/\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_FracToDecimal_slash_N #1#2/#3[#4]/\W[\R%
+{%
+ \ifnum#4=\xint_c_ #1#2\else
+ \romannumeral0\expandafter\XINT_dectostr\romannumeral0\xintrez{#1#2[#4]}%
+ \fi
+ \if\XINT_isOne{#3}1\else\if#10\else/#3\fi\fi
+}%
\def\XINT_embrace#1{{#1}}%
\def\xint_gob_til_! #1!{}% ! with catcode 11
\def\xintError:noopening
@@ -3632,11 +3716,11 @@
\ifnum\xintLength:f:csv{\XINT_defufunc_tmpd}=\xint_c_i
\expandafter#6%
\else
- \xintMessage {xintexpr}{ERROR}
+ \xintMessage {xintexpr}{ERROR}
{Universal functions must be functions of one argument only,
but the declaration of \XINT_defufunc_tmpa\space
- has \xintLength:f:csv{\XINT_defufunc_tmpd} of them. Cancelled.}%
- \xintexprRestoreCatcodes
+ has \xintLength:f:csv{\XINT_defufunc_tmpd} of them. Canceled.}%
+ \xintexprRestoreCatcodes
\fi
}% end of \xint_defufunc_b
\def #6{%
@@ -3655,6 +3739,7 @@
with \ifxintglobaldefs global \fi meaning \expandafter\meaning
\csname XINT_#2_userufunc_\XINT_defufunc_tmpa\endcsname}%
\fi
+ \xintexprRestoreCatcodes
}% end of \xint_defufunc_c
}%
\def\xintdefufunc {\xintexprSafeCatcodes\xintdefufunc_a}%
@@ -4435,11 +4520,9 @@
}@
\catcode`% 14
\XINTsetcatcodes % clean up to avoid surprises if something changes
-\newif\ifxintexprsafecatcodes
-\let\xintexprRestoreCatcodes\empty
+\def\xintexprRestoreCatcodes{}%
\def\xintexprSafeCatcodes
{%
- \unless\ifxintexprsafecatcodes
\edef\xintexprRestoreCatcodes {%
\endlinechar=\the\endlinechar
\catcode59=\the\catcode59 % ;
@@ -4465,11 +4548,9 @@
\catcode44=\the\catcode44 % ,
\catcode61=\the\catcode61 % =
\catcode96=\the\catcode96 % `
- \catcode32=\the\catcode32\relax % space
- \noexpand\xintexprsafecatcodesfalse
+ \catcode32=\the\catcode32 % space
+ \def\noexpand\xintexprRestoreCatcodes{\unexpanded\expandafter{\xintexprRestoreCatcodes}}%
}%
- \fi
- \xintexprsafecatcodestrue
\endlinechar=13 %
\catcode59=12 % ;
\catcode34=12 % "
diff --git a/Master/texmf-dist/tex/generic/xint/xintfrac.sty b/Master/texmf-dist/tex/generic/xint/xintfrac.sty
index d5bb34ac647..00de2592152 100644
--- a/Master/texmf-dist/tex/generic/xint/xintfrac.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintfrac.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintfrac: Expandable operations on fractions
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xintfrac}%
- [2021/07/13 v1.4j Expandable operations on fractions (JFB)]%
+ [2022/05/18 v1.4k Expandable operations on fractions (JFB)]%
\def\XINT_cntSgnFork #1%
{%
\ifcase #1\expandafter\xint_secondofthree
@@ -458,37 +458,6 @@
\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}%
-\def\XINT_FracToSci #1/#2#3[#4%
-{%
- \xint_gob_til_W #2\XINT_FracToSci_noslash\W
- \xint_gob_til_R #4\XINT_FracToSci_slash_noN\R
- \XINT_FracToSci_slash_N #1/#2#3[#4%
-}%
-\def\XINT_FracToSci_noslash#1\XINT_FracToSci_slash_N #2[#3%
-{%
- \xint_gob_til_R #3\XINT_FracToSci_noslash_noN\R
- \XINT_FracToSci_noslash_N #2[#3%
-}%
-\def\XINT_FracToSci_noslash_noN\R\XINT_FracToSci_noslash_N #1/\W[\R{#1}%
-\def\XINT_FracToSci_noslash_N #1[#2]/\W[\R%
-{%
- \ifnum#2=\xint_c_ #1\else
- \romannumeral0\expandafter\XINT_pfloat_fork\romannumeral0\xintrez{#1[#2]}%
- \fi
-}%
-\def\XINT_FracToSci_slash_noN\R\XINT_FracToSci_slash_N #1#2/#3/\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_slash_N #1#2/#3[#4]/\W[\R%
-{%
- \ifnum#4=\xint_c_ #1#2\else
- \romannumeral0\expandafter\XINT_pfloat_fork\romannumeral0\xintrez{#1#2[#4]}%
- \fi
- \if\XINT_isOne{#3}1\else\if#10\else/#3\fi\fi
-}%
\def\xintRawWithZeros {\romannumeral0\xintrawwithzeros }%
\def\xintrawwithzeros
{%
@@ -2127,6 +2096,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\mathchardef\XINT_digits=\numexpr#1\relax
\let\XINTdigits=\XINT_digits
}%
+\def\xintFloatZero{0.0e0}% 1.4k breaking change. Replaces hard-coded 0.e0
\def\xintFloat {\romannumeral0\xintfloat }%
\def\xintfloat #1{\XINT_float_chkopt #1\xint:}%
\def\XINT_float_chkopt #1%
@@ -2157,7 +2127,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
0-\XINT_float_pos
\krof #1%
}%[
-\def\XINT_float_zero #1]#2.{ 0.e0}%
+\def\XINT_float_zero #1]#2.{\expanded{ \xintFloatZero}}%
\def\XINT_float_neg-{\expandafter-\romannumeral0\XINT_float_pos}%
\def\XINT_float_pos #1#2[#3]#4.%
{%
@@ -2182,18 +2152,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_infloatS_clean #1%
{\if #1!\xint_dothis\XINT_infloatS_clean_a\fi\xint_orthat{ }#1}%
\def\XINT_infloatS_clean_a !#1.{ }%
-\def\XINTFloatiLogTen {\the\numexpr\XINTfloatilogten}%
-\def\XINTfloatilogten [#1]#2%
- {\expandafter\XINT_floatilogten\romannumeral0\XINT_infloat[#1]{#2}#1.}%
-\def\XINTFloatiLogTendigits{\the\numexpr\XINTfloatilogten[\XINTdigits]}%
-\def\XINT_floatilogten #1{%
- \if #10\xint_dothis\XINT_floatilogten_z\fi
- \if #1!\xint_dothis\XINT_floatilogten_a\fi
- \xint_orthat\XINT_floatilogten_b #1%
-}%
-\def\XINT_floatilogten_z 0[0]#1.{-"7FFF8000\relax}%
-\def\XINT_floatilogten_a !#1.#2[#3]#4.{#3-#1+#4-1\relax}%
-\def\XINT_floatilogten_b #1[#2]#3.{#2+#3-1\relax}%
\def\XINT_infloat [#1]#2%
{%
\expandafter\XINT_infloat_a\the\numexpr #1\expandafter.%
@@ -2377,11 +2335,89 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\XINT_infloat_ZZ\the\numexpr#4+\xint_c_i.#3.%
}%
\def\XINT_infloat_ZZ #1.#2.{ 1#2[#1]}%
+\def\XINTFloatiLogTen {\the\numexpr\XINTfloatilogten}%
+\def\XINTfloatilogten [#1]#2%
+ {\expandafter\XINT_floatilogten\romannumeral0\XINT_infloat[#1]{#2}#1.}%
+\def\XINTFloatiLogTendigits{\the\numexpr\XINTfloatilogten[\XINTdigits]}%
+\def\XINT_floatilogten #1{%
+ \if #10\xint_dothis\XINT_floatilogten_z\fi
+ \if #1!\xint_dothis\XINT_floatilogten_a\fi
+ \xint_orthat\XINT_floatilogten_b #1%
+}%
+\def\XINT_floatilogten_z 0[0]#1.{-"7FFF8000\relax}%
+\def\XINT_floatilogten_a !#1.#2[#3]#4.{#3-#1+#4-1\relax}%
+\def\XINT_floatilogten_b #1[#2]#3.{#2+#3-1\relax}%
+\def\xintFloatSciExp {\the\numexpr\xintfloatsciexp }%
+\def\xintpfloatsciexp #1{\XINT_floatsciexp_chkopt #1\xint:}%
+\def\XINT_floatsciexp_chkopt #1%
+{%
+ \ifx [#1\expandafter\XINT_floatsciexp_opt
+ \else\expandafter\XINT_floatsciexp_noopt
+ \fi #1%
+}%
+\def\XINT_floatsciexp_noopt #1\xint:%
+{%
+ \expandafter\XINT_floatsciexp\romannumeral0\XINT_infloat[\XINTdigits]{#1}%
+ \XINTdigits.%
+}%
+\def\XINT_floatsciexp_opt [\xint:#1]#2%
+{%
+ \expandafter\XINT_floatsciexp\romannumeral0\XINT_infloat[#1]{#2}#1.%
+}%
+\def\XINT_floatsciexp #1{%
+ \if #10\xint_dothis\XINT_floatsciexp_z\fi
+ \if #1!\xint_dothis\XINT_floatsciexp_a\fi
+ \xint_orthat\XINT_floatsciexp_b #1%
+}%
+\def\XINT_floatsciexp_z 0[0]#1.{0\relax}%
+\def\XINT_floatsciexp_a !#1.#2[#3]#4.{#3-#1+#4-1\relax}%
+\def\XINT_floatsciexp_b #1[#2]#3.{#2+#3-1\relax}%
+\def\xintFloatSignificand {\romannumeral0\xintfloatsignificand}%
+\def\xintfloatsignificand #1{\XINT_floatsgf_chkopt #1\xint:}%
+\def\XINT_floatsgf_chkopt #1%
+{%
+ \ifx [#1\expandafter\XINT_floatsgf_opt
+ \else\expandafter\XINT_floatsgf_noopt
+ \fi #1%
+}%
+\def\XINT_floatsgf_noopt #1\xint:%
+{%
+ \expandafter\XINT_floatsgf_post
+ \romannumeral0\XINTinfloat[\XINTdigits]{#1}\XINTdigits.%
+}%
+\def\XINT_floatsgf_opt [\xint:#1]%
+{%
+ \expandafter\XINT_floatsgf_opt_a\the\numexpr #1.%
+}%
+\def\XINT_floatsgf_opt_a #1.#2%
+{%
+ \expandafter\XINT_floatsgf_post
+ \romannumeral0\XINTinfloat[#1]{#2}#1.%
+}%
+\def\XINT_floatsgf_post #1%
+{%
+ \xint_UDzerominusfork
+ #1-\XINT_floatsgf_zero
+ 0#1\XINT_floatsgf_neg
+ 0-\XINT_floatsgf_pos
+ \krof #1%
+}%[
+\def\XINT_floatsgf_zero #1]#2.{\XINT_dsx_addzeros{#2};}%
+\def\XINT_floatsgf_neg-{\XINT_floatsgf_pos}%
+\def\XINT_floatsgf_pos #1[#2]#3.{ #1}%
+\def\xintPFloatE{e}%
+\def\xintPFloatNoSciEmax{\xint_c_v}% 1e6 uses sci.not.
+\def\xintPFloatNoSciEmin{-\xint_c_iv}% 1e-5 uses sci.not.
+\def\xintPFloatIntSuffix{}%
+\def\xintPFloatLengthOneSuffix{}%
+\def\xintPFloatZero{0}%
+\def\xintPFloatMinTrimmed{\xint_c_iv}%
\def\xintPFloat {\romannumeral0\xintpfloat }%
\def\xintpfloat #1{\XINT_pfloat_chkopt #1\xint:}%
-\def\xintPFloat_wopt
+\def\xintPFloat_wopt[#1]#2%
{%
- \romannumeral0\expandafter\XINT_pfloat\romannumeral0\XINTinfloatS
+ \romannumeral0\expandafter\XINT_pfloat
+ \romannumeral0\XINTinfloatS[#1]{#2}#1.%
}%
\def\XINT_pfloat_chkopt #1%
{%
@@ -2392,10 +2428,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\def\XINT_pfloat_noopt #1\xint:%
{%
\expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[\XINTdigits]{#1}%
+ \XINTdigits.%
}%
-\def\XINT_pfloat_opt [\xint:#1]%
+\def\XINT_pfloat_opt [\xint:#1]#2%
{%
- \expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[#1]%
+ \expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[#1]{#2}%
+ #1.%
}%
\def\XINT_pfloat#1]%
{%
@@ -2409,13 +2447,41 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
0-\XINT_pfloat_pos
\krof #1%
}%
-\def\XINT_pfloat_zero#1]{ 0.0}%
+\def\XINT_pfloat_zero#1]#2.{\expanded{ \xintPFloatZero}}%
\def\XINT_pfloat_neg-{\expandafter-\romannumeral0\XINT_pfloat_pos}%
-\def\XINT_pfloat_pos#1/1[#2]%
+\def\XINT_pfloat_pos#1/1[#2]#3.%
{%
- \expandafter\XINT_pfloat_a\the\numexpr\xintLength{#1}.%
- #2.#1.%
+ \expandafter\XINT_pfloat_aa\the\numexpr\xintLength{#1}.%
+ #3.#2.#1.%
}%
+\def\XINT_pfloat_keeptrimmed_fork#1%
+{%
+ \xint_UDzerominusfork
+ #1-\XINT_pfloat_keeptrimmed_zero
+ 0#1\XINT_pfloat_keeptrimmed_neg
+ 0-\XINT_pfloat_keeptrimmed_pos
+ \krof #1%
+}%
+\def\XINT_pfloat_keeptrimmed_zero#1]{\expanded{ \xintPFloatZero}}%
+\def\XINT_pfloat_keeptrimmed_neg-{\expandafter-\romannumeral0\XINT_pfloat_keeptrimmed_pos}%
+\def\XINT_pfloat_keeptrimmed_pos#1/1[#2]%
+{%
+ \expandafter\XINT_pfloat_a\the\numexpr\xintLength{#1}.#2.#1.%
+}%
+\def\XINT_pfloat_aa #1.#2.%
+{%
+ \unless\ifnum\xintPFloatMinTrimmed>\numexpr#2-#1\relax
+ \xint_dothis\XINT_pfloat_a\fi
+ \ifnum#2>#1 \xint_dothis{\XINT_pfloat_i #2.}\fi
+ \xint_orthat\XINT_pfloat_a #1.%
+}%
+\def\XINT_pfloat_i #1.#2.#3.#4.%
+{%
+ \expandafter\XINT_pfloat_j
+ \the\numexpr#3+#2-#1\expandafter.%
+ \romannumeral0\XINT_dsx_addzerosnofuss{#1-#2}#4;.#1.%
+}%
+\def\XINT_pfloat_j #1.#2.#3.{\XINT_pfloat_a#3.#1.#2.}%
\def\XINT_pfloat_a #1.#2#3.%
{%
\expandafter\XINT_pfloat_b\the\numexpr#1+#2#3-\xint_c_i.%
@@ -2423,8 +2489,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
}%
\def\XINT_pfloat_b #1.#2%
{%
- \ifnum #1>\xint_c_v \xint_dothis\XINT_pfloat_sci\fi
- \ifnum #1<-\xint_c_iv \xint_dothis\XINT_pfloat_sci\fi
+ \ifnum \xintPFloatNoSciEmax<#1 \xint_dothis\XINT_pfloat_sci\fi
+ \ifnum \xintPFloatNoSciEmin>#1 \xint_dothis\XINT_pfloat_sci\fi
\ifnum #1<\xint_c_ \xint_dothis\XINT_pfloat_N\fi
\if-#2\xint_dothis\XINT_pfloat_P\fi
\xint_orthat\XINT_pfloat_Ps
@@ -2436,36 +2502,42 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\XINT_pfloat_sci_a\romannumeral`&&@\xintPFloatE #1.%
}%
\def\XINT_pfloat_sci_a #1.#2#3.{ #2.#3#1}%
-\edef\XINT_pfloat_sci_i #1#2#3.#4.{#1\space#4.0#3}%
-\def\xintPFloatE{e}%
+\def\XINT_pfloat_sci_i #1#2#3.#4.{\expanded{#1 #4\xintPFloatLengthOneSuffix}#3}%
\def\XINT_pfloat_N#1.#2.#3.%
{%
- \csname XINT_pfloat_N_\romannumeral-#1\endcsname #3%
+ \expandafter\XINT_pfloat_N_e\romannumeral\xintreplicate{-#1}{0}#3%
}%
-\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_e 0{ 0.}%
\def\XINT_pfloat_P #1.#2.#3.%
{%
- \csname XINT_pfloat_P_\romannumeral#1\endcsname #3%
+ \expandafter\XINT_split_fromleft_a
+ \the\numexpr\xint_c_vii-#1.#3\xint_bye2345678\xint_bye.%
}%
-\def\XINT_pfloat_P_ #1{ #1.}%
-\def\XINT_pfloat_P_i #1#2{ #1#2.}%
-\def\XINT_pfloat_P_ii #1#2#3{ #1#2#3.}%
-\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 #1.#2.#3.%
{%
- \csname XINT_pfloat_Ps_\romannumeral#1\endcsname #300000.%
+ \expanded{ #3%
+ \romannumeral\xintreplicate{#1+\xint_c_i-#2}{0}\xintPFloatIntSuffix}%
+}%
+\def\xintFloatToDecimal {\romannumeral0\xintfloattodecimal }%
+\def\xintfloattodecimal #1{\XINT_floattodec_chkopt #1\xint:}%
+\def\XINT_floattodec_chkopt #1%
+{%
+ \ifx [#1\expandafter\XINT_floattodec_opt
+ \else\expandafter\XINT_floattodec_noopt
+ \fi #1%
+}%
+\def\XINT_floattodec_noopt #1\xint:%
+{%
+ \expandafter\XINT_floattodec\romannumeral0\XINTinfloatS[\XINTdigits]{#1}%
+}%
+\def\XINT_floattodec_opt [\xint:#1]%
+{%
+ \expandafter\XINT_floattodec\romannumeral0\XINTinfloatS[#1]%
+}%
+\def\XINT_floattodec#1]%
+{%
+ \expandafter\XINT_dectostr\romannumeral0\xintrez{#1]}%
}%
-\def\XINT_pfloat_Ps_ #1#2.{ #1.0}%
-\def\XINT_pfloat_Ps_i #1#2#3.{ #1#2.0}%
-\def\XINT_pfloat_Ps_ii #1#2#3#4.{ #1#2#3.0}%
-\def\XINT_pfloat_Ps_iii#1#2#3#4#5.{ #1#2#3#4.0}%
-\def\XINT_pfloat_Ps_iv #1#2#3#4#5#6.{ #1#2#3#4#5.0}%
-\def\XINT_pfloat_Ps_v #1#2#3#4#5#6#7.{ #1#2#3#4#5#6.0}%
\def\XINTinFloatFrac {\romannumeral0\XINTinfloatfrac}%
\def\XINTinfloatfrac #1%
{%
diff --git a/Master/texmf-dist/tex/generic/xint/xintgcd.sty b/Master/texmf-dist/tex/generic/xint/xintgcd.sty
index fc7051f3724..3570a8f1eb8 100644
--- a/Master/texmf-dist/tex/generic/xint/xintgcd.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintgcd.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintgcd: Euclidean algorithm with xint package
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -77,7 +77,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xintgcd}%
- [2021/07/13 v1.4j Euclide algorithm with xint package (JFB)]%
+ [2022/05/18 v1.4k 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 027c3b77562..3e6c0afa591 100644
--- a/Master/texmf-dist/tex/generic/xint/xintkernel.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintkernel.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintkernel: Paraphernalia for the xint packages
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -159,7 +159,7 @@
\fi
\XINT_providespackage
\ProvidesPackage {xintkernel}%
- [2021/07/13 v1.4j Paraphernalia for the xint packages (JFB)]%
+ [2022/05/18 v1.4k 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 bc6d3039b08..c5751af1217 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.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintlog: Logarithms and exponentials for xintexpr
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -68,10 +68,10 @@
\expandafter\xint_secondoftwo
\fi
{\immediate\write-1{Reloading xintlog library using Digits=\xinttheDigits.}}%
-{\expandafter\gdef\csname xintlibver@log\endcsname{2021/07/13 v1.4j}%
+{\expandafter\gdef\csname xintlibver@log\endcsname{2022/05/18 v1.4k}%
\XINT_providespackage
\ProvidesPackage{xintlog}%
-[2021/07/13 v1.4j Logarithms and exponentials for xintexpr (JFB)]%
+[2022/05/18 v1.4k Logarithms and exponentials for xintexpr (JFB)]%
}%
\def\xintreloadxintlog{\input xintlog.sty }%
\xintexprSafeCatcodes\catcode`_ 11
diff --git a/Master/texmf-dist/tex/generic/xint/xintseries.sty b/Master/texmf-dist/tex/generic/xint/xintseries.sty
index ad236f03790..8fa98b8c382 100644
--- a/Master/texmf-dist/tex/generic/xint/xintseries.sty
+++ b/Master/texmf-dist/tex/generic/xint/xintseries.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xintseries: Expandable partial sums with xint package
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xintseries}%
- [2021/07/13 v1.4j Expandable partial sums with xint package (JFB)]%
+ [2022/05/18 v1.4k 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 73a5f513892..eb6f898b355 100644
--- a/Master/texmf-dist/tex/generic/xint/xinttools.sty
+++ b/Master/texmf-dist/tex/generic/xint/xinttools.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xinttools: Expandable and non-expandable utilities
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xinttools}%
- [2021/07/13 v1.4j Expandable and non-expandable utilities (JFB)]%
+ [2022/05/18 v1.4k Expandable and non-expandable utilities (JFB)]%
\newtoks\XINT_toks
\xint_firstofone{\let\XINT_sptoken= } %<- space here!
\def\xintgodef {\global\xintodef }%
diff --git a/Master/texmf-dist/tex/generic/xint/xinttrig.sty b/Master/texmf-dist/tex/generic/xint/xinttrig.sty
index 1269d48fca0..ae312937e25 100644
--- a/Master/texmf-dist/tex/generic/xint/xinttrig.sty
+++ b/Master/texmf-dist/tex/generic/xint/xinttrig.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% ---------------------------------------------------------------
-%% The xint bundle 1.4j 2021/07/13
-%% Copyright (C) 2013-2021 by Jean-Francois Burnol
+%% The xint bundle 1.4k 2022/05/18
+%% Copyright (C) 2013-2022 by Jean-Francois Burnol
%% xinttrig: Trigonometry for the xintexpr package
%% ---------------------------------------------------------------
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -69,10 +69,10 @@
\expandafter\xint_secondoftwo
\fi
{\immediate\write-1{Reloading xinttrig library using Digits=\xinttheDigits.}}%
-{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/07/13 v1.4j}%
+{\expandafter\gdef\csname xintlibver@trig\endcsname{2022/05/18 v1.4k}%
\XINT_providespackage
\ProvidesPackage{xinttrig}%
-[2021/07/13 v1.4j Trigonometrical functions for xintexpr (JFB)]%
+[2022/05/18 v1.4k Trigonometrical functions for xintexpr (JFB)]%
}%
\xintFor* #1 in {iDTVtuwxyzX}\do{\xintensuredummy{#1}}%
\def\xintreloadxinttrig{\input xinttrig.sty }%