diff options
author | Karl Berry <karl@freefriends.org> | 2022-05-19 20:11:06 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-05-19 20:11:06 +0000 |
commit | b48cdc7688e6483099499c0e3ec927b258e0f569 (patch) | |
tree | 9114384a0594ecf94a373504dd393617954608a2 /Master/texmf-dist/tex/generic/xint | |
parent | b9769098c5fcee8329d370e153f3b332f137850b (diff) |
xint (19may22)
git-svn-id: svn://tug.org/texlive/trunk@63338 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xint.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintbinhex.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintcfrac.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintcore.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintexpr.sty | 117 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintfrac.sty | 228 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintgcd.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintkernel.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintlog.sty | 8 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintseries.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttools.sty | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttrig.sty | 8 |
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 }% |