summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xintfrac.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintfrac.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintfrac.sty407
1 files changed, 190 insertions, 217 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xintfrac.sty b/Master/texmf-dist/tex/generic/xint/xintfrac.sty
index a10aa57392a..9da94186939 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.4d 2021/03/29
+%% The xint bundle 1.4e 2021/05/05
%% Copyright (C) 2013-2021 by Jean-Francois Burnol
%% xintfrac: Expandable operations on fractions
%% ---------------------------------------------------------------
@@ -70,7 +70,7 @@
\XINTsetupcatcodes% defined in xintkernel.sty
\XINT_providespackage
\ProvidesPackage{xintfrac}%
- [2021/03/29 v1.4d Expandable operations on fractions (JFB)]%
+ [2021/05/05 v1.4e Expandable operations on fractions (JFB)]%
\def\XINT_cntSgnFork #1%
{%
\ifcase #1\expandafter\xint_secondofthree
@@ -458,59 +458,37 @@
\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}}%
-\edef\xintFracToSci #1%
- {\unexpanded{\expandafter\XINT_FracToSci\romannumeral`&&@}#1\string e%
- \unexpanded{\Z/\W[\R]}}%
+\def\xintFracToSci #1{\expandafter\XINT_FracToSci\romannumeral`&&@#1/\W[\R}%
\def\XINT_FracToSci #1/#2#3[#4%
{%
- \xint_gob_til_W #2\XINT_FracToSci_no\W
- \xint_gob_til_R #4\XINT_FracToSci_yesno\R
- \XINT_FracToSci_yesyes #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_no #1\XINT_FracToSci_yesyes #2[#3%
+\def\XINT_FracToSci_noslash#1\XINT_FracToSci_slash_N #2[#3%
{%
- \xint_gob_til_R #3\XINT_FracToSci_nono\R
- \XINT_FracToSci_noyes #2[#3%
+ \xint_gob_til_R #3\XINT_FracToSci_noslash_noN\R
+ \XINT_FracToSci_noslash_N #2[#3%
}%
-\edef\XINT_tmpa{##1\string e##2}%
-\def\XINT_tmpb{\def\XINT_FracToSci_nono\R\XINT_FracToSci_noyes}%
-\expandafter
-\XINT_tmpb\XINT_tmpa
+\def\XINT_FracToSci_noslash_noN\R\XINT_FracToSci_noslash_N #1/\W[\R{#1}%
+\def\XINT_FracToSci_noslash_N #1[#2]/\W[\R%
{%
- #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
+ \ifnum#2=\xint_c_ #1\else
+ \romannumeral0\expandafter\XINT_pfloat_fork\romannumeral0\xintrez{#1[#2]}%
+ \fi
}%
-\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]%
+\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
}%
-\edef\XINT_tmpa{##1##2/##3[##4]\string e}%
- \def\XINT_tmpb{\def\XINT_FracToSci_yesyes}%
-\expandafter
-\XINT_tmpb\XINT_tmpa\Z/\W[\R]%
+\def\XINT_FracToSci_slash_N #1#2/#3[#4]/\W[\R%
{%
- #1\xint_gob_til_zero#1\expandafter\iffalse\xint_gobble_ii0\iftrue
- #2\ifnum #4=\xint_c_\else\xintFracToSciE#4\fi
- \if\XINT_isOne{#3}1\else/#3\fi\fi
+ \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\xintFracToSciE{e}%
\def\xintRawWithZeros {\romannumeral0\xintrawwithzeros }%
\def\xintrawwithzeros
{%
@@ -547,6 +525,8 @@
\ifnum#3<\xint_c_\xint_dothis{\xinttrunc{-#3}{#1[#3]}/#2}\fi
\xint_orthat{\xintiie{#1}{#3}/#2}%
}%
+\def\xintDecToStringREZ{\romannumeral0\xintdectostringrez}%
+\def\xintdectostringrez#1{\expandafter\XINT_dectostr\romannumeral0\xintrez{#1}}%
\def\xintFloor {\romannumeral0\xintfloor }%
\def\xintfloor #1% devrais-je faire \xintREZ?
{\expandafter\XINT_ifloor \romannumeral0\xintrawwithzeros {#1}./1[0]}%
@@ -2096,11 +2076,20 @@
\xint_gob_til_zero#1\XINT_flcmof_zero0\XINT_flcmof_loop#1%
}%
\def\XINT_flcmof_zero#1^{ 0/1[0]}%
-\mathchardef\XINTdigits 16
-\def\xintDigits #1=%
- {\afterassignment \xint_gobble_i \mathchardef\XINTdigits=}%
-\def\xinttheDigits {\number\XINTdigits }%
-\def\xintSetDigits #1{\mathchardef\XINTdigits=\numexpr#1\relax}%
+\mathchardef\XINTdigits 16
+\chardef\XINTguarddigits 0
+\def\xinttheDigits {\number\XINTdigits}%
+\def\xinttheGuardDigits{0}% in case used in some of my test files
+\def\xintDigits #1={\afterassignment\xintDigits_i\mathchardef\XINT_digits=}%
+\def\xintDigits_i#1%
+{%
+ \let\XINTdigits\XINT_digits
+}%
+\def\xintSetDigits #1%
+{%
+ \mathchardef\XINT_digits=\numexpr#1\relax
+ \let\XINTdigits=\XINT_digits
+}%
\def\xintFloat {\romannumeral0\xintfloat }%
\def\xintfloat #1{\XINT_float_chkopt #1\xint:}%
\def\XINT_float_chkopt #1%
@@ -2159,6 +2148,7 @@
\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
@@ -2350,8 +2340,12 @@
\expandafter\XINT_infloat_ZZ\the\numexpr#4+\xint_c_i.#3.%
}%
\def\XINT_infloat_ZZ #1.#2.{ 1#2[#1]}%
-\def\xintPFloat {\romannumeral0\xintpfloat }%
+\def\xintPFloat {\romannumeral0\xintpfloat }%
\def\xintpfloat #1{\XINT_pfloat_chkopt #1\xint:}%
+\def\xintPFloat_wopt
+{%
+ \romannumeral0\expandafter\XINT_pfloat\romannumeral0\XINTinfloatS
+}%
\def\XINT_pfloat_chkopt #1%
{%
\ifx [#1\expandafter\XINT_pfloat_opt
@@ -2360,53 +2354,64 @@
}%
\def\XINT_pfloat_noopt #1\xint:%
{%
- \expandafter\XINT_pfloat_a
- \romannumeral0\xintfloat [\XINTdigits]{#1};\XINTdigits.%
+ \expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[\XINTdigits]{#1}%
}%
\def\XINT_pfloat_opt [\xint:#1]%
{%
- \expandafter\XINT_pfloat_opt_a \the\numexpr #1.%
+ \expandafter\XINT_pfloat\romannumeral0\XINTinfloatS[#1]%
}%
-\def\XINT_pfloat_opt_a #1.#2%
+\def\XINT_pfloat#1]%
{%
- \expandafter\XINT_pfloat_a\romannumeral0\xintfloat [#1]{#2};#1.%
+ \expandafter\XINT_pfloat_fork\romannumeral0\xintrez{#1]}%
}%
-\def\XINT_pfloat_a #1%
+\def\XINT_pfloat_fork#1%
{%
\xint_UDzerominusfork
- #1-\XINT_pfloat_zero
- 0#1\XINT_pfloat_neg
+ #1-\XINT_pfloat_zero
+ 0#1\XINT_pfloat_neg
0-\XINT_pfloat_pos
\krof #1%
}%
-\def\XINT_pfloat_zero #1;#2.{ 0.}%
-\def\XINT_pfloat_neg-{\expandafter-\romannumeral0\XINT_pfloat_pos }%
-\def\XINT_pfloat_pos #1.#2e#3;#4.%
+\def\XINT_pfloat_zero#1]{ 0.0}%
+\def\XINT_pfloat_neg-{\expandafter-\romannumeral0\XINT_pfloat_pos}%
+\def\XINT_pfloat_pos#1/1[#2]%
+{%
+ \expandafter\XINT_pfloat_a\the\numexpr\xintLength{#1}.%
+ #2.#1.%
+}%
+\def\XINT_pfloat_a #1.#2#3.%
+{%
+ \expandafter\XINT_pfloat_b\the\numexpr#1+#2#3-\xint_c_i.%
+ #2#1.%
+}%
+\def\XINT_pfloat_b #1.#2%
{%
- \ifnum #3>\xint_c_v \xint_dothis\XINT_pfloat_no\fi
- \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{#2}{#3}%
+ \ifnum #1>\xint_c_v \xint_dothis\XINT_pfloat_sci\fi
+ \ifnum #1<-\xint_c_iv \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
+ #1.%
}%
-\def\XINT_pfloat_no
+\def\XINT_pfloat_sci #1.#2.%
{%
- \expandafter\XINT_pfloat_no_e\expandafter{\xintPFloatE}%
+ \ifnum#2=\xint_c_i\expandafter\XINT_pfloat_sci_i\expandafter\fi
+ \expandafter\XINT_pfloat_sci_a\romannumeral`&&@\xintPFloatE #1.%
}%
-\def\XINT_pfloat_no_e #1#2#3#4{ #2.#3#1#4}%
+\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_N #1#2#3%
+\def\XINT_pfloat_N#1.#2.#3.%
{%
- \csname XINT_pfloat_N_\romannumeral-#3\endcsname #1#2%
+ \csname XINT_pfloat_N_\romannumeral-#1\endcsname #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_v { 0.0000}%
-\def\XINT_pfloat_P #1#2#3%
+\def\XINT_pfloat_P #1.#2.#3.%
{%
- \csname XINT_pfloat_P_\romannumeral#3\endcsname #1#2%
+ \csname XINT_pfloat_P_\romannumeral#1\endcsname #3%
}%
\def\XINT_pfloat_P_ #1{ #1.}%
\def\XINT_pfloat_P_i #1#2{ #1#2.}%
@@ -2414,25 +2419,28 @@
\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#3\endcsname #1#200000;%
-}%
-\def\XINT_pfloat_Psi #1#2#3;{ #1#2.}%
-\def\XINT_pfloat_Psii #1#2#3#4;{ #1#2#3.}%
-\def\XINT_pfloat_Psiii#1#2#3#4#5;{ #1#2#3#4.}%
-\def\XINT_pfloat_Psiv #1#2#3#4#5#6;{ #1#2#3#4#5.}%
-\def\XINT_pfloat_Psv #1#2#3#4#5#6#7;{ #1#2#3#4#5#6.}%
-\def\XINTinFloatFracdigits {\romannumeral0\XINTinfloatfracdigits }%
-\def\XINTinfloatfracdigits #1%
-{%
- \expandafter\XINT_infloatfracdg_a\expandafter {\romannumeral0\xinttfrac{#1}}%
-}%
-\def\XINT_infloatfracdg_a {\XINTinfloat [\XINTdigits]}%
-\def\xintFloatAdd {\romannumeral0\xintfloatadd }%
-\def\xintfloatadd #1{\XINT_fladd_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatAdd {\romannumeral0\XINTinfloatadd }%
-\def\XINTinfloatadd #1{\XINT_fladd_chkopt \XINTinfloatS #1\xint:}%
+\def\XINT_pfloat_Ps #1.#2.#3.%
+{%
+ \csname XINT_pfloat_Ps_\romannumeral#1\endcsname #300000.%
+}%
+\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%
+{%
+ \expandafter\XINT_infloatfrac_a\expandafter {\romannumeral0\xinttfrac{#1}}%
+}%
+\def\XINT_infloatfrac_a {\XINTinfloat[\XINTdigits]}%
+\def\xintFloatAdd {\romannumeral0\xintfloatadd}%
+\def\xintfloatadd #1{\XINT_fladd_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatAdd{\romannumeral0\XINTinfloatadd }%
+\def\XINTinfloatadd{\XINT_fladd_opt_a\XINTdigits.\XINTinfloatS}%
+\def\XINTinFloatAdd_wopt{\romannumeral0\XINTinfloatadd_wopt}%
+\def\XINTinfloatadd_wopt[#1]{\expandafter\XINT_fladd_opt_a\the\numexpr#1.\XINTinfloatS}%
\def\XINT_fladd_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_fladd_opt
@@ -2472,10 +2480,12 @@
\ifnum\numexpr #5-#3-#2>\xint_c_\xint_dothis\xint_secondoftwo\fi
\xint_orthat\xintAdd {#1[#2]}{#4[#5]}%
}%
-\def\xintFloatSub {\romannumeral0\xintfloatsub }%
-\def\xintfloatsub #1{\XINT_flsub_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatSub {\romannumeral0\XINTinfloatsub }%
-\def\XINTinfloatsub #1{\XINT_flsub_chkopt \XINTinfloatS #1\xint:}%
+\def\xintFloatSub {\romannumeral0\xintfloatsub}%
+\def\xintfloatsub #1{\XINT_flsub_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatSub{\romannumeral0\XINTinfloatsub}%
+\def\XINTinfloatsub{\XINT_flsub_opt_a\XINTdigits.\XINTinfloatS}%
+\def\XINTinFloatSub_wopt{\romannumeral0\XINTinfloatsub_wopt}%
+\def\XINTinfloatsub_wopt[#1]{\expandafter\XINT_flsub_opt_a\the\numexpr#1.\XINTinfloatS}%
\def\XINT_flsub_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flsub_opt
@@ -2496,10 +2506,12 @@
{%
#2[#1]{\expandafter\XINT_FL_add_a\romannumeral0\XINTinfloat[#1]{#3}#1.{\xintOpp{#4}}}%
}%
-\def\xintFloatMul {\romannumeral0\xintfloatmul }%
-\def\xintfloatmul #1{\XINT_flmul_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatMul {\romannumeral0\XINTinfloatmul }%
-\def\XINTinfloatmul #1{\XINT_flmul_chkopt \XINTinfloatS #1\xint:}%
+\def\xintFloatMul {\romannumeral0\xintfloatmul}%
+\def\xintfloatmul #1{\XINT_flmul_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatMul{\romannumeral0\XINTinfloatmul}%
+\def\XINTinfloatmul{\XINT_flmul_opt_a\XINTdigits.\XINTinfloatS}%
+\def\XINTinFloatMul_wopt{\romannumeral0\XINTinfloatmul_wopt}%
+\def\XINTinfloatmul_wopt[#1]{\expandafter\XINT_flmul_opt_a\the\numexpr#1.\XINTinfloatS}%
\def\XINT_flmul_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flmul_opt
@@ -2525,11 +2537,38 @@
\expandafter\XINT_FL_mul_b\romannumeral0\XINTinfloatS[#3]{#4}#1[#2]%
}%
\def\XINT_FL_mul_b #1[#2]#3[#4]{\xintiiMul{#3}{#1}/1[#4+#2]}%
+\def\xintFloatSqr {\romannumeral0\xintfloatsqr}%
+\def\xintfloatsqr #1{\XINT_flsqr_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatSqr{\romannumeral0\XINTinfloatsqr}%
+\def\XINTinfloatsqr{\XINT_flsqr_opt_a\XINTdigits.\XINTinfloatS}%
+\def\XINT_flsqr_chkopt #1#2%
+{%
+ \ifx [#2\expandafter\XINT_flsqr_opt
+ \else\expandafter\XINT_flsqr_noopt
+ \fi #1#2%
+}%
+\def\XINT_flsqr_noopt #1#2\xint:
+{%
+ #1[\XINTdigits]%
+ {\expandafter\XINT_FL_sqr_a\romannumeral0\XINTinfloatS[\XINTdigits]{#2}}%
+}%
+\def\XINT_flsqr_opt #1[\xint:#2]%
+{%
+ \expandafter\XINT_flsqr_opt_a\the\numexpr #2.#1%
+}%
+\def\XINT_flsqr_opt_a #1.#2#3%
+{%
+ #2[#1]{\expandafter\XINT_FL_sqr_a\romannumeral0\XINTinfloatS[#1]{#3}}%
+}%
+\def\XINT_FL_sqr_a #1[#2]{\xintiiSqr{#1}/1[#2+#2]}%
+\def\XINTinFloatSqr_wopt[#1]#2{\XINTinFloatS[#1]{\expandafter\XINT_FL_sqr_a\romannumeral0\XINTinfloatS[#1]{#2}}}%
\def\XINTinFloatInv#1{\XINTinFloatS[\XINTdigits]{\xintInv{#1}}}%
-\def\xintFloatDiv {\romannumeral0\xintfloatdiv }%
-\def\xintfloatdiv #1{\XINT_fldiv_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatDiv {\romannumeral0\XINTinfloatdiv }%
-\def\XINTinfloatdiv #1{\XINT_fldiv_chkopt \XINTinfloatS #1\xint:}%
+\def\XINTinFloatInv_wopt[#1]#2{\XINTinFloatS[#1]{\xintInv{#2}}}%
+\def\xintFloatDiv {\romannumeral0\xintfloatdiv}%
+\def\xintfloatdiv #1{\XINT_fldiv_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatDiv{\romannumeral0\XINTinfloatdiv}%
+\def\XINTinfloatdiv{\XINT_fldiv_opt_a\XINTdigits.\XINTinfloatS}%
+\def\XINTinFloatDiv_wopt[#1]{\romannumeral0\XINT_fldiv_opt_a#1.\XINTinfloatS}%
\def\XINT_fldiv_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_fldiv_opt
@@ -2555,10 +2594,11 @@
\expandafter\XINT_FL_div_b\romannumeral0\XINTinfloatS[#3]{#4}/#1e#2%
}%
\def\XINT_FL_div_b #1[#2]{#1e#2}%
-\def\xintFloatPow {\romannumeral0\xintfloatpow}%
-\def\xintfloatpow #1{\XINT_flpow_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatPow {\romannumeral0\XINTinfloatpow }%
-\def\XINTinfloatpow #1{\XINT_flpow_chkopt \XINTinfloatS #1\xint:}%
+\def\xintFloatPow {\romannumeral0\xintfloatpow}%
+\def\xintfloatpow #1{\XINT_flpow_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatPow{\romannumeral0\XINTinfloatpow }%
+\def\XINTinfloatpow{\XINT_flpow_opt_a\XINTdigits.\XINTinfloatS}%
+\def\XINTinfloatpow_wopt[#1]{\expandafter\XINT_flpow_opt_a\the\numexpr#1.\XINTinfloatS}%
\def\XINT_flpow_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flpow_opt
@@ -2710,47 +2750,10 @@
}%
\def\XINT_flpow_IIIend #1#2#3%
{#3{\if#21\xint_afterfi{\expandafter-\romannumeral`&&@}\fi#1}}%
-\def\xintFloatPower {\romannumeral0\xintfloatpower}%
-\def\xintfloatpower #1{\XINT_flpower_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatPower {\romannumeral0\XINTinfloatpower }%
-\def\XINTinfloatpower #1{\XINT_flpower_chkopt \XINTinfloatS #1\xint:}%
-\def\XINTinFloatPowerH {\romannumeral0\XINTinfloatpowerh }%
-\def\XINTinfloatpowerh #1#2%
-{%
- \expandafter\XINT_flpowerh_a\romannumeral0\xintitrunc1{#2};%
- \XINTdigits.{#1}{\XINTinfloatS[\XINTdigits]}%
-}%
-\def\XINT_flpowerh_a #1;%
-{%
- \if0\xintLDg{#1}\expandafter\XINT_flpowerh_int
- \else\expandafter\XINT_flpowerh_b
- \fi #1.%
-}%
-\def\XINT_flpowerh_int #1%
-{%
- \if0#1\expandafter\XINT_flpower_BisZero
- \else\expandafter\XINT_flpowerh_i
- \fi #1%
-}%
-\def\XINT_flpowerh_i #10.{\expandafter\XINT_flpower_checkB_a#1.}%
-\def\XINT_flpowerh_b #1.%
-{%
- \expandafter\XINT_flpowerh_c\romannumeral0\xintdsrr{\xintDouble{#1}}.%
-}%
-\def\XINT_flpowerh_c #1.%
-{%
- \ifodd\xintLDg{#1} %<- intentional space
- \expandafter\XINT_flpowerh_d\else\expandafter\XINT_flpowerh_e
- \fi #1.%
-}%
-\def\XINT_flpowerh_d #1.\XINTdigits.#2#3%
-{%
- \XINT_flpower_checkB_a #1.\XINTdigits.{#2}\XINT_flpowerh_finish
-}%
-\def\XINT_flpowerh_finish #1%
- {\XINTinfloatS[\XINTdigits]{\XINTinFloatSqrt[\XINTdigits+\xint_c_iii]{#1}}}%
-\def\XINT_flpowerh_e #1.%
- {\expandafter\XINT_flpower_checkB_a\romannumeral0\xinthalf{#1}.}%
+\def\xintFloatPower {\romannumeral0\xintfloatpower}%
+\def\xintfloatpower #1{\XINT_flpower_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatPower{\romannumeral0\XINTinfloatpower }%
+\def\XINTinfloatpower{\XINT_flpower_opt_a\XINTdigits.\XINTinfloatS}%
\def\XINT_flpower_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flpower_opt
@@ -2877,10 +2880,11 @@
\the\numexpr\expandafter\XINT_flpow_truncate
\the\numexpr#2+#5\expandafter.\romannumeral0\xintiimul{#3}{#6}.#4.%
}%
-\def\xintFloatFac {\romannumeral0\xintfloatfac}%
-\def\xintfloatfac #1{\XINT_flfac_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatFac {\romannumeral0\XINTinfloatfac }%
-\def\XINTinfloatfac #1{\XINT_flfac_chkopt \XINTinfloatS #1\xint:}%
+\def\xintFloatFac {\romannumeral0\xintfloatfac}%
+\def\xintfloatfac #1{\XINT_flfac_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatFac{\romannumeral0\XINTinfloatfac}%
+\def\XINTinfloatfac[#1]{\expandafter\XINT_flfac_opt_a\the\numexpr#1.\XINTinfloatS}%
+\def\XINTinFloatFacdigits{\romannumeral0\XINT_flfac_opt_a\XINTdigits.\XINTinfloatS}%
\def\XINT_flfac_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flfac_opt
@@ -3100,10 +3104,10 @@
{1#2\expandafter!\expandafter-\expandafter1\expandafter
[\the\numexpr #4+\xint_c_viii]}%
}%
-\def\xintFloatPFactorial {\romannumeral0\xintfloatpfactorial}%
-\def\xintfloatpfactorial #1{\XINT_flpfac_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatPFactorial {\romannumeral0\XINTinfloatpfactorial }%
-\def\XINTinfloatpfactorial #1{\XINT_flpfac_chkopt \XINTinfloat #1\xint:}%
+\def\xintFloatPFactorial {\romannumeral0\xintfloatpfactorial}%
+\def\xintfloatpfactorial #1{\XINT_flpfac_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatPFactorial{\romannumeral0\XINTinfloatpfactorial }%
+\def\XINTinfloatpfactorial{\XINT_flpfac_opt_a\XINTdigits.\XINTinfloatS}%
\def\XINT_flpfac_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flpfac_opt
@@ -3119,9 +3123,9 @@
}%
\def\XINT_flpfac_opt #1[\xint:#2]%
{%
- \expandafter\XINT_flpfac_opt_b\the\numexpr #2.#1%
+ \expandafter\XINT_flpfac_opt_a\the\numexpr #2.#1%
}%
-\def\XINT_flpfac_opt_b #1.#2#3#4%
+\def\XINT_flpfac_opt_a #1.#2#3#4%
{%
\expandafter\XINT_FL_pfac_fork
\the\numexpr \xintNum{#3}\expandafter.%
@@ -3282,10 +3286,10 @@
\romannumeral0\expandafter\XINT_FL_fac_mul
\the\numexpr \xint_c_x^viii+#1!%
}%
-\def\xintFloatBinomial {\romannumeral0\xintfloatbinomial}%
-\def\xintfloatbinomial #1{\XINT_flbinom_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatBinomial {\romannumeral0\XINTinfloatbinomial }%
-\def\XINTinfloatbinomial #1{\XINT_flbinom_chkopt \XINTinfloat #1\xint:}%
+\def\xintFloatBinomial {\romannumeral0\xintfloatbinomial}%
+\def\xintfloatbinomial #1{\XINT_flbinom_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatBinomial{\romannumeral0\XINTinfloatbinomial }%
+\def\XINTinfloatbinomial{\XINT_flbinom_opt\XINTinfloatS[\xint:\XINTdigits]}%
\def\XINT_flbinom_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flbinom_opt
@@ -3345,10 +3349,11 @@
{\XINT_FL_fac_fork_b
#2.\xint_c_iv{#4+\xint_c_i}\XINT_FL_fac_out{\XINTinfloat[#4+\xint_c_iii]}}}%
}%
-\def\xintFloatSqrt {\romannumeral0\xintfloatsqrt }%
-\def\xintfloatsqrt #1{\XINT_flsqrt_chkopt \xintfloat #1\xint:}%
-\def\XINTinFloatSqrt {\romannumeral0\XINTinfloatsqrt }%
-\def\XINTinfloatsqrt #1{\XINT_flsqrt_chkopt \XINTinfloat #1\xint:}%
+\def\xintFloatSqrt {\romannumeral0\xintfloatsqrt}%
+\def\xintfloatsqrt #1{\XINT_flsqrt_chkopt \xintfloat #1\xint:}%
+\def\XINTinFloatSqrt{\romannumeral0\XINTinfloatsqrt}%
+\def\XINTinfloatsqrt[#1]{\expandafter\XINT_flsqrt_opt_a\the\numexpr#1.\XINTinfloatS}%
+\def\XINTinFloatSqrtdigits{\romannumeral0\XINT_flsqrt_opt_a\XINTdigits.\XINTinfloatS}%
\def\XINT_flsqrt_chkopt #1#2%
{%
\ifx [#2\expandafter\XINT_flsqrt_opt
@@ -3504,7 +3509,7 @@
\def\XINT_infloatdivmod #1#2#3{\expanded{{#1}{\XINTinFloat[#3]{#2}}}}%
\def\xintifFloatInt {\romannumeral0\xintiffloatint}%
\def\xintiffloatint #1{\expandafter\XINT_iffloatint
- \romannumeral0\xintrez{\XINTinFloat[\XINTdigits]{#1}}}%
+ \romannumeral0\xintrez{\XINTinFloatS[\XINTdigits]{#1}}}%
\def\XINT_iffloatint #1#2/1[#3]%
{%
\if 0#1\xint_dothis\xint_stop_atfirstoftwo\fi
@@ -3513,12 +3518,23 @@
}%
\def\xintFloatIsInt {\romannumeral0\xintfloatisint}%
\def\xintfloatisint #1{\expandafter\XINT_iffloatint
- \romannumeral0\xintrez{\XINTinFloat[\XINTdigits]{#1}}10}%
-\def\XINTinFloatdigits {\XINTinFloat [\XINTdigits]}%
-\def\XINTinFloatSdigits {\XINTinFloatS [\XINTdigits]}%
-\def\XINTinFloatSqrtdigits {\XINTinFloatSqrt[\XINTdigits]}%
-\def\XINTinFloatFacdigits {\XINTinFloatFac [\XINTdigits]}%
-\def\XINTFloatiLogTendigits{\XINTFloatiLogTen[\XINTdigits]}%
+ \romannumeral0\xintrez{\XINTinFloatS[\XINTdigits]{#1}}10}%
+\def\xintFloatIntType {\romannumeral`&&@\xintfloatinttype}%
+\def\xintfloatinttype #1%
+{%
+ \expandafter\XINT_floatinttype
+ \romannumeral0\xintrez{\XINTinFloatS[\XINTdigits]{#1}}%
+}%
+\def\XINT_floatinttype #1#2/1[#3]%
+{%
+ \if 0#1\xint_dothis\xint_c_\fi
+ \ifnum#3<\xint_c_\xint_dothis\xint_c_mone\fi
+ \ifnum#3>\xint_c_\xint_dothis\xint_c_\fi
+ \ifodd\xintLDg{#1#2} \xint_dothis\xint_c_i\fi
+ \xint_orthat\xint_c_
+}%
+\def\XINTinFloatdigits {\XINTinFloat [\XINTdigits]}%
+\def\XINTinFloatSdigits{\XINTinFloatS[\XINTdigits]}%
\def\XINTinRandomFloatS{\romannumeral0\XINTinrandomfloatS}%
\def\XINTinRandomFloatSdigits{\XINTinRandomFloatS[\XINTdigits]}%
\def\XINTinrandomfloatS[#1]%
@@ -3548,54 +3564,11 @@
\romannumeral`&&@\expandafter\XINT_eightrandomdigits
\romannumeral`&&@\XINT_eightrandomdigits[-16]%
}%
-\def\PoorManLogBaseTen{\romannumeral0\poormanlogbaseten}%
-\def\poormanlogbaseten #1%
- {\expandafter\PML@logbaseten\romannumeral0\XINTinfloat[9]{#1}}%
-\def\PML@logbaseten#1[#2]%
-{%
- \xintiiadd{\xintDSx{-9}{\the\numexpr#2+8\relax}}{\the\numexpr\PML@#1.}%
- [-9]%
-}%
-\def\PoorManPowerOfTen{\the\numexpr\poormanpoweroften}%
-\def\poormanpoweroften #1%
- {\expandafter\PML@powoften\romannumeral0\xintraw{#1}}%
-\def\PML@powoften#1%
-{%
- \xint_UDzerominusfork
- #1-\PML@powoften@zero
- 0#1\PML@powoften@neg
- 0-\PML@powoften@pos
- \krof #1%
-}%
-\def\PML@powoften@zero 0{1\relax}%/1[0]
-\def\PML@powoften@pos#1[#2]%
-{%
- \expandafter\PML@powoften@pos@a\romannumeral0\xintround{9}{#1[#2]}.%
-}%
-\def\PML@powoften@pos@a#1.#2.{\PML@Pa#2.\expandafter[\the\numexpr-8+#1]}%
-\def\PML@powoften@neg#1[#2]%
-{%
- \expandafter\PML@powoften@neg@a\romannumeral0\xintround{9}{#1[#2]}.%
-}%
-\def\PML@powoften@neg@a#1.#2.%
-{\ifnum#2=\xint_c_ \xint_afterfi{1\relax/1[#1]}\else
- \expandafter\expandafter\expandafter
- \PML@Pa\expandafter\xint_gobble_i\the\numexpr2000000000-#2.%
- \expandafter[\the\numexpr-9+#1\expandafter]\fi
-}%
-\def\PoorManPower#1#2%
-{%
- \PoorManPowerOfTen{\xintMul{#2}{\PoorManLogBaseTen{#1}}}%
-}%
-\def\xintLog#1{\xintMul{\PoorManLogBaseTen{#1}}{23025850923[-10]}}%
-\def\XINTinFloatLog#1{\XINTinFloatMul{\PoorManLogBaseTen{#1}}{23025850923[-10]}}%
-\def\xintExp#1{\PoorManPowerOfTen{\xintMul{#1}{434294481903[-12]}}}%
-\def\XINTinFloatExp#1{\PoorManPowerOfTen{\XINTinFloatMul{#1}{434294481903[-12]}}}%
\let\XINTinFloatMaxof\XINT_Maxof
\let\XINTinFloatMinof\XINT_Minof
\let\XINTinFloatSum\XINT_Sum
\let\XINTinFloatPrd\XINT_Prd
-\XINT_restorecatcodes_endinput%
+\XINTrestorecatcodesendinput%
\endinput
%%
%% End of file `xintfrac.sty'.