diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintfrac.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xintfrac.sty | 407 |
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'. |