summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xinttrig.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xinttrig.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xinttrig.sty946
1 files changed, 618 insertions, 328 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xinttrig.sty b/Master/texmf-dist/tex/generic/xint/xinttrig.sty
index 563d14760da..c10106cb894 100644
--- a/Master/texmf-dist/tex/generic/xint/xinttrig.sty
+++ b/Master/texmf-dist/tex/generic/xint/xinttrig.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
%% xinttrig: Trigonometry for the xintexpr package
%% ---------------------------------------------------------------
@@ -61,137 +61,287 @@
\fi
\fi
\z%
-\catcode`_ 11 \XINT_setcatcodes \catcode`? 12
+\edef\XINTtrigendinput{\XINTrestorecatcodes\noexpand\endinput}\XINTsetcatcodes%
+\catcode`? 12
\ifcsname xintlibver@trig\endcsname
\expandafter\xint_firstoftwo
\else
\expandafter\xint_secondoftwo
\fi
{\immediate\write-1{Reloading xinttrig library using Digits=\xinttheDigits.}}%
-{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/03/29 v1.4d}%
+{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/05/05 v1.4e}%
\XINT_providespackage
\ProvidesPackage{xinttrig}%
-[2021/03/29 v1.4d Trigonometrical functions for xintexpr (JFB)]%
+[2021/05/05 v1.4e Trigonometrical functions for xintexpr (JFB)]%
}%
\xintFor* #1 in {iDTVtuwxyzX}\do{\xintensuredummy{#1}}%
-\def\xintreloadxinttrig
- {\edef\XINT_restorecatcodes_now{\XINT_restorecatcodes}%
- \XINT_setcatcodes\catcode`? 12
- \input xinttrig.sty
- \XINT_restorecatcodes_now}%
-\xintdeffloatvar twoPi := 0 +
- 6.28318530717958647692528676655900576839433879875021164194989;%
-\xintdeffloatvar threePiover2 := 0 +
- 4.71238898038468985769396507491925432629575409906265873146242;%
-\xintdeffloatvar Pi := 0 +
- 3.14159265358979323846264338327950288419716939937510582097494;%
-\xintdeffloatvar Piover2 := 0 +
- 1.57079632679489661923132169163975144209858469968755291048747;%
-\xintdeffloatvar oneDegree := 0 +
- 0.0174532925199432957692369076848861271344287188854172545609719;% Pi/180
-\xintdeffloatvar oneRadian := 0 +
- 57.2957795130823208767981548141051703324054724665643215491602;% 180/Pi
-\xintdeffloatvar invfact\xintListWithSep{, invfact}{\xintSeq{2}{44}}%
- := \xintfloatexpr [\XINTdigits] % force float rounding after exact evaluations
- \xintexpr rseq(1/2; @/i, i=3..44)\relax % no need to hide this inner ;
- \relax;%
-\xintdeffloatfunc sin_aux(X) := 1 - X(invfact3 - X(invfact5
-\ifnum\XINTdigits>4
- - X(invfact7
-\ifnum\XINTdigits>6
- - X(invfact9
+\def\xintreloadxinttrig{\input xinttrig.sty }%
+\xintdefvar @twoPi :=
+ float(
+6.2831853071795864769252867665590057683943387987502116419498891846156328125724180
+ ,\xinttheDigits+4);%
+\xintdefvar @threePiover2 :=
+ float(
+4.7123889803846898576939650749192543262957540990626587314624168884617246094293135
+ ,\xinttheDigits+4);%
+\xintdefvar @Pi :=
+ float(
+3.1415926535897932384626433832795028841971693993751058209749445923078164062862090
+ ,\xinttheDigits+4);%
+\xintdefvar @Piover2 :=
+ float(
+1.5707963267948966192313216916397514420985846996875529104874722961539082031431045
+ ,\xinttheDigits+4);%
+\xintdefvar @oneDegree :=
+ float(
+0.017453292519943295769236907684886127134428718885417254560971914401710091146034494
+ ,\xinttheDigits+4);%
+\xintdefvar @oneRadian :=
+ float(
+57.295779513082320876798154814105170332405472466564321549160243861202847148321553
+ ,\xinttheDigits+12);%
+\catcode`~ 12
+\def\XINT_tmpa#1#2#3.#4.%
+{%
+ \let #1#2%
+ \def #2##1##2##3##4{##2##3{{~expanded{~unexpanded{#4[#3]}~expandafter}~expanded{##1##4}}}}%
+}%
+\expandafter\XINT_tmpa
+ \csname XINT_flexpr_exec_+_\expandafter\endcsname
+ \csname XINT_flexpr_exec_+\expandafter\endcsname
+ \the\numexpr\XINTdigits+4.~XINTinFloatAdd_wopt.%
+\expandafter\XINT_tmpa
+ \csname XINT_flexpr_exec_-_\expandafter\endcsname
+ \csname XINT_flexpr_exec_-\expandafter\endcsname
+ \the\numexpr\XINTdigits+4.~XINTinFloatSub_wopt.%
+\expandafter\XINT_tmpa
+ \csname XINT_flexpr_exec_*_\expandafter\endcsname
+ \csname XINT_flexpr_exec_*\expandafter\endcsname
+ \the\numexpr\XINTdigits+4.~XINTinFloatMul_wopt.%
+\expandafter\XINT_tmpa
+ \csname XINT_flexpr_exec_/_\expandafter\endcsname
+ \csname XINT_flexpr_exec_/\expandafter\endcsname
+ \the\numexpr\XINTdigits+4.~XINTinFloatDiv_wopt.%
+\def\XINT_tmpa#1#2#3.#4.%
+{%
+ \let #1#2%
+ \def #2##1##2##3{##1##2{{~expanded{~unexpanded{#4[#3]}~expandafter}##3}}}%
+}%
+\expandafter\XINT_tmpa
+ \csname XINT_flexpr_sqrfunc\expandafter\endcsname
+ \csname XINT_flexpr_func_sqr\expandafter\endcsname
+ \the\numexpr\XINTdigits+4.~XINTinFloatSqr_wopt.%
+\expandafter\XINT_tmpa
+ \csname XINT_flexpr_sqrtfunc\expandafter\endcsname
+ \csname XINT_flexpr_func_sqrt\expandafter\endcsname
+ \the\numexpr\XINTdigits+4.~XINTinFloatSqrt.%
+\expandafter\XINT_tmpa
+ \csname XINT_flexpr_invfunc\expandafter\endcsname
+ \csname XINT_flexpr_func_inv\expandafter\endcsname
+ \the\numexpr\XINTdigits+4.~XINTinFloatInv_wopt.%
+\catcode`~ 3
\ifnum\XINTdigits>8
- - X(invfact11
-\ifnum\XINTdigits>10
- - X(invfact13
-\ifnum\XINTdigits>13
- - X(invfact15
-\ifnum\XINTdigits>15
- - X(invfact17
-\ifnum\XINTdigits>18
- - X(invfact19
-\ifnum\XINTdigits>21
- - X(invfact21
-\ifnum\XINTdigits>24
- - X(invfact23
-\ifnum\XINTdigits>27
- - X(invfact25
-\ifnum\XINTdigits>30
- - X(invfact27
-\ifnum\XINTdigits>33
- - X(invfact29
-\ifnum\XINTdigits>36
- - X(invfact31
-\ifnum\XINTdigits>39
- - X(invfact33
-\ifnum\XINTdigits>43
- - X(invfact35
-\ifnum\XINTdigits>46
- - X(invfact37
-\ifnum\XINTdigits>49
- - X(invfact39
-\ifnum\XINTdigits>53
- - X(invfact41
-\ifnum\XINTdigits>59
- - X(invfact43
- )\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi));%
-\xintdeffloatfunc cos_aux(X) := 1 - X(invfact2 - X(invfact4
-\ifnum\XINTdigits>3
- - X(invfact6
-\ifnum\XINTdigits>5
- - X(invfact8
-\ifnum\XINTdigits>7
- - X(invfact10
-\ifnum\XINTdigits>9
- - X(invfact12
-\ifnum\XINTdigits>12
- - X(invfact14
-\ifnum\XINTdigits>14
- - X(invfact16
-\ifnum\XINTdigits>17
- - X(invfact18
-\ifnum\XINTdigits>20
- - X(invfact20
-\ifnum\XINTdigits>23
- - X(invfact22
-\ifnum\XINTdigits>25
- - X(invfact24
-\ifnum\XINTdigits>28
- - X(invfact26
-\ifnum\XINTdigits>32
- - X(invfact28
-\ifnum\XINTdigits>35
- - X(invfact30
-\ifnum\XINTdigits>38
- - X(invfact32
-\ifnum\XINTdigits>41
- - X(invfact34
-\ifnum\XINTdigits>44
- - X(invfact36
-\ifnum\XINTdigits>48
- - X(invfact38
-\ifnum\XINTdigits>51
- - X(invfact40
-\ifnum\XINTdigits>55
- - X(invfact42
-\ifnum\XINTdigits>58
- - X(invfact44
- )\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi));%
-\expandafter\let\csname XINT_expr_func_sin_aux\expandafter\endcsname
- \csname XINT_flexpr_func_sin_aux\endcsname
-\expandafter\let\csname XINT_expr_func_cos_aux\expandafter\endcsname
- \csname XINT_flexpr_func_cos_aux\endcsname
-\xintdeffloatfunc sin_(x) := x * sin_aux(sqr(x));%
-\xintdeffloatfunc cos_(x) := cos_aux(sqr(x));%
-\def\XINT_mod_ccclx_i #1.% input <k>.<N>. k is a non-negative exponent
+\edef\XINT_tmpG % 1/3!
+ {1\xintReplicate{\XINTdigits+2}{6}7[\the\numexpr-\XINTdigits-4]}%
+\edef\XINT_tmpH % 1/5!
+ {8\xintReplicate{\XINTdigits+1}{3}[\the\numexpr-\XINTdigits-4]}%
+\edef\XINT_tmpd % 1/5!
+ {8\xintReplicate{\XINTdigits+9}{3}[\the\numexpr-\XINTdigits-12]}%
+\def\XINT_tmpe#1.#2.#3.#4.#5#6#7%
+{%
+\def#5##1\xint:
+{%
+ \expandafter#6\romannumeral0\XINTinfloatS[#2]{##1}\xint:##1\xint:
+}%
+\def#6##1\xint:
+{%
+ \expandafter#7\romannumeral0\xintsub{#4}{\XINTinFloat[#2]{\xintMul{#3}{##1}}}\xint:
+}%
+\def#7##1\xint:##2\xint:
+{%
+ \xintSub{1/1[0]}{\XINTinFloat[#1]{\xintMul{##1}{##2}}}%
+}%
+}%
+\expandafter\XINT_tmpe
+ \the\numexpr\XINTdigits+4\expandafter.%
+ \the\numexpr\XINTdigits+2\expandafter.\expanded{%
+ \XINT_tmpH.% 1/5!
+ \XINT_tmpG.% 1/3!
+ \expandafter}%
+ \csname XINT_SinAux_series_a_iii\expandafter\endcsname
+ \csname XINT_SinAux_series_b\expandafter\endcsname
+ \csname XINT_SinAux_series_c_i\endcsname
+\def\XINT_tmpa #1 #2 #3 #4 #5 #6 #7 #8 %
+{%
+ \def\XINT_tmpb ##1##2##3##4##5%
+ {%
+ \def\XINT_tmpc####1.####2.####3.####4.####5.%
+ {%
+ \def##1########1\xint:
+ {%
+ \expandafter##2%
+ \romannumeral0\XINTinfloatS[####1]{########1}\xint:########1\xint:
+ }%
+ \def##2########1\xint:
+ {%
+ \expandafter##3%
+ \romannumeral0\XINTinfloatS[####2]{########1}\xint:########1\xint:
+ }%
+ \def##3########1\xint:
+ {%
+ \expandafter##4%
+ \romannumeral0\xintsub{####4}{\XINTinFloat[####2]{\xintMul{####3}{########1}}}\xint:
+ }%
+ \def##4########1\xint:########2\xint:
+ {%
+ \expandafter##5%
+ \romannumeral0\xintsub{####5}{\XINTinFloat[####1]{\xintMul{########1}{########2}}}\xint:
+ }%
+ }%
+ }%
+ \expandafter\XINT_tmpb
+ \csname XINT_#8Aux_series_a_\romannumeral\numexpr#1-1\expandafter\endcsname
+ \csname XINT_#8Aux_series_a_\romannumeral\numexpr#1\expandafter\endcsname
+ \csname XINT_#8Aux_series_b\expandafter\endcsname
+ \csname XINT_#8Aux_series_c_\romannumeral\numexpr#1-2\expandafter\endcsname
+ \csname XINT_#8Aux_series_c_\romannumeral\numexpr#1-3\endcsname
+ \edef\XINT_tmpd
+ {\XINTinFloat[\XINTdigits-#2+8]{\xintDiv{\XINT_tmpd}{\the\numexpr#5*(#5-1)\relax}}}%
+ \let\XINT_tmpF\XINT_tmpG
+ \let\XINT_tmpG\XINT_tmpH
+ \edef\XINT_tmpH{\XINTinFloat[\XINTdigits-#2]{\XINT_tmpd}}%
+ \expandafter\XINT_tmpc
+ \the\numexpr\XINTdigits-#3\expandafter.%
+ \the\numexpr\XINTdigits-#2\expandafter.\expanded{%
+ \XINT_tmpH.%
+ \XINT_tmpG.%
+ \XINT_tmpF.%
+ }%
+}%
+\XINT_tmpa 4 -1 -2 -4 7 5 3 Sin %
+\ifnum\XINTdigits>3 \XINT_tmpa 5 1 -1 -2 9 7 5 Sin \fi
+\ifnum\XINTdigits>5 \XINT_tmpa 6 3 1 -1 11 9 7 Sin \fi
+\ifnum\XINTdigits>8 \XINT_tmpa 7 6 3 1 13 11 9 Sin \fi
+\ifnum\XINTdigits>11 \XINT_tmpa 8 9 6 3 15 13 11 Sin \fi
+\ifnum\XINTdigits>14 \XINT_tmpa 9 12 9 6 17 15 13 Sin \fi
+\ifnum\XINTdigits>16 \XINT_tmpa 10 14 12 9 19 17 15 Sin \fi
+\ifnum\XINTdigits>19 \XINT_tmpa 11 17 14 12 21 19 17 Sin \fi
+\ifnum\XINTdigits>22 \XINT_tmpa 12 20 17 14 23 21 19 Sin \fi
+\ifnum\XINTdigits>25 \XINT_tmpa 13 23 20 17 25 23 21 Sin \fi
+\ifnum\XINTdigits>28 \XINT_tmpa 14 26 23 20 27 25 23 Sin \fi
+\ifnum\XINTdigits>31 \XINT_tmpa 15 29 26 23 29 27 25 Sin \fi
+\ifnum\XINTdigits>34 \XINT_tmpa 16 32 29 26 31 29 27 Sin \fi
+\ifnum\XINTdigits>37 \XINT_tmpa 17 35 32 29 33 31 29 Sin \fi
+\ifnum\XINTdigits>40 \XINT_tmpa 18 38 35 32 35 33 31 Sin \fi
+\ifnum\XINTdigits>44 \XINT_tmpa 19 42 38 35 37 35 33 Sin \fi
+\ifnum\XINTdigits>47 \XINT_tmpa 20 45 42 38 39 37 35 Sin \fi
+\ifnum\XINTdigits>51 \XINT_tmpa 21 49 45 42 41 39 37 Sin \fi
+\ifnum\XINTdigits>55 \XINT_tmpa 22 53 49 45 43 41 39 Sin \fi
+\ifnum\XINTdigits>58 \XINT_tmpa 23 56 53 49 45 43 41 Sin \fi
+\edef\XINT_tmpd % 1/4!
+ {41\xintReplicate{\XINTdigits+8}{6}7[\the\numexpr-\XINTdigits-12]}%
+\edef\XINT_tmpH % 1/4!
+ {41\xintReplicate{\XINTdigits}{6}7[\the\numexpr-\XINTdigits-4]}%
+\def\XINT_tmpG{5[-1]}% 1/2!
+\expandafter\XINT_tmpe
+ \the\numexpr\XINTdigits+4\expandafter.%
+ \the\numexpr\XINTdigits+3\expandafter.\expanded{%
+ \XINT_tmpH.%
+ \XINT_tmpG.%
+ \expandafter}%
+ \csname XINT_CosAux_series_a_iii\expandafter\endcsname
+ \csname XINT_CosAux_series_b\expandafter\endcsname
+ \csname XINT_CosAux_series_c_i\endcsname
+\XINT_tmpa 4 -2 -3 -4 6 4 2 Cos %
+\ifnum\XINTdigits>2 \XINT_tmpa 5 0 -2 -3 8 6 4 Cos \fi
+\ifnum\XINTdigits>4 \XINT_tmpa 6 2 0 -2 10 8 6 Cos \fi
+\ifnum\XINTdigits>7 \XINT_tmpa 7 5 2 0 12 10 8 Cos \fi
+\ifnum\XINTdigits>9 \XINT_tmpa 8 7 5 2 14 12 10 Cos \fi
+\ifnum\XINTdigits>12 \XINT_tmpa 9 10 7 5 16 14 12 Cos \fi
+\ifnum\XINTdigits>15 \XINT_tmpa 10 13 10 7 18 16 14 Cos \fi
+\ifnum\XINTdigits>18 \XINT_tmpa 11 16 13 10 20 18 16 Cos \fi
+\ifnum\XINTdigits>20 \XINT_tmpa 12 18 16 13 22 20 18 Cos \fi
+\ifnum\XINTdigits>24 \XINT_tmpa 13 22 18 16 24 22 20 Cos \fi
+\ifnum\XINTdigits>27 \XINT_tmpa 14 25 22 18 26 24 22 Cos \fi
+\ifnum\XINTdigits>30 \XINT_tmpa 15 28 25 22 28 26 24 Cos \fi
+\ifnum\XINTdigits>33 \XINT_tmpa 16 31 28 25 30 28 26 Cos \fi
+\ifnum\XINTdigits>36 \XINT_tmpa 17 34 31 28 32 30 28 Cos \fi
+\ifnum\XINTdigits>39 \XINT_tmpa 18 37 34 31 34 32 30 Cos \fi
+\ifnum\XINTdigits>42 \XINT_tmpa 19 40 37 34 36 34 32 Cos \fi
+\ifnum\XINTdigits>45 \XINT_tmpa 20 43 40 37 38 36 34 Cos \fi
+\ifnum\XINTdigits>49 \XINT_tmpa 21 47 43 40 40 38 36 Cos \fi
+\ifnum\XINTdigits>53 \XINT_tmpa 22 51 47 43 42 40 38 Cos \fi
+\ifnum\XINTdigits>57 \XINT_tmpa 23 55 51 47 44 42 40 Cos \fi
+\ifnum\XINTdigits>60 \XINT_tmpa 24 58 55 51 46 44 42 Cos \fi
+\let\XINT_tmpH\xint_undefined\let\XINT_tmpG\xint_undefined\let\XINT_tmpF\xint_undefined
+\let\XINT_tmpd\xint_undefined\let\XINT_tmpe\xint_undefined
+\def\XINT_SinAux_series#1%
+{%
+ \expandafter\XINT_SinAux_series_a_iii
+ \romannumeral0\XINTinfloatS[\XINTdigits+4]{#1}\xint:
+}%
+\def\XINT_CosAux_series#1%
+{%
+ \expandafter\XINT_CosAux_series_a_iii
+ \romannumeral0\XINTinfloatS[\XINTdigits+4]{#1}\xint:
+}%
+\fi % end of \XINTdigits>8
+\ifnum\XINTdigits<9
+\def\XINT_SinAux_series#1%
+{%
+ \the\numexpr\expandafter\XINT_SinAux_b\romannumeral0\xintiround9{#1}.[-9]%
+}%
+\def\XINT_SinAux_b#1.%
+{%
+ ((((((((((((%(\xint_c_x^ix/-210)
+ -4761905*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -156)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -110)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -72)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -42)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -20)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -6)*#1/\xint_c_x^ix+\xint_c_x^ix
+}%
+\def\XINT_CosAux_series#1%
+{%
+ \the\numexpr\expandafter\XINT_CosAux_b\romannumeral0\xintiround9{#1}.[-9]%
+}%
+\def\XINT_CosAux_b#1.%
+{%
+ ((((((((((((((%(\xint_c_x^ix/-240)
+ -4166667*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -182)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -132)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -90)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -56)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -30)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -12)*#1/\xint_c_x^ix+\xint_c_x^ix)/%
+ -2)*#1/\xint_c_x^ix+\xint_c_x^ix
+}%
+\fi
+\def\XINT_flexpr_func_@sin_aux#1#2#3%
+{%
+ \expandafter #1\expandafter #2\expandafter{%
+ \romannumeral`&&@\XINT:NEhook:f:one:from:one
+ {\romannumeral`&&@\XINT_SinAux_series#3}}%
+}%
+\def\XINT_flexpr_func_@cos_aux#1#2#3%
+{%
+ \expandafter #1\expandafter #2\expandafter{%
+ \romannumeral`&&@\XINT:NEhook:f:one:from:one
+ {\romannumeral`&&@\XINT_CosAux_series#3}}%
+}%
+\xintdeffloatfunc @sin_series(x) := x * @sin_aux(sqr(x));%
+\xintdeffloatfunc @cos_series(x) := @cos_aux(sqr(x));%
+\def\XINT_mod_ccclx_i #1.%
{%
\expandafter\XINT_mod_ccclx_e\the\numexpr
\expandafter\XINT_mod_ccclx_j\the\numexpr1\ifcase#1 \or0\or00\else000\fi.%
}%
-\def\XINT_mod_ccclx_j 1#1.#2.% #2=N is a non-negative mantissa
+\def\XINT_mod_ccclx_j 1#1.#2.%
{%
(\XINT_mod_ccclx_ja {++}#2#1\XINT_mod_ccclx_jb 0000000\relax
-}% 1 2345678
+}%
\def\XINT_mod_ccclx_ja #1#2#3#4#5#6#7#8#9%
{%
#9+#8+#7+#6+#5+#4+#3+#2\xint_firstoftwo{+\XINT_mod_ccclx_ja{+#9+#8+#7}}{#1}%
@@ -200,32 +350,36 @@
\def\XINT_mod_ccclx_jc +#1+#2+#3#4\relax{+80*(#3+#2+#1)+#3#2#1.}%
\def\XINT_mod_ccclx_e#1.{\expandafter\XINT_mod_ccclx_z\the\numexpr(#1+180)/360-1.#1.}%
\def\XINT_mod_ccclx_z#1.#2.{#2-360*#1.}%
-\def\XINT_flexpr_func_sind_ #1#2#3%
+\def\XINT_flexpr_func_@sind_rr #1#2#3%
{%
\expandafter #1\expandafter #2\expandafter{%
\romannumeral`&&@\XINT:NEhook:f:one:from:one{\romannumeral`&&@\xintSind#3}}%
}%
-\def\XINT_expr_unlock{\expandafter\xint_firstofone\romannumeral`&&@}%
-\def\xintSind#1{\romannumeral`&&@\expandafter\xintsind
- \romannumeral0\XINTinfloatS[\XINTdigits]{#1}}%
+\def\XINT_tmpa #1.{%
+\def\xintSind##1%
+{%
+ \romannumeral`&&@\expandafter\xintsind\romannumeral0\XINTinfloatS[#1]{##1}}%
+}\expandafter\XINT_tmpa\the\numexpr\XINTdigits+12.%
\def\xintsind #1[#2#3]%
{%
\xint_UDsignfork
#2\XINT_sind
-\XINT_sind_int
- \krof#2#3.#1..%<< attention extra dot
+ \krof#2#3.#1..%
}%
-\def\XINT_sind #1.#2.% NOT TO BE USED WITH VANISHING (OR NEGATIVE) #2.
+\def\XINT_tmpa #1.{%
+\def\XINT_sind ##1.##2.%
{%
\expandafter\XINT_sind_a
- \romannumeral0\xinttrunc{\XINTdigits}{#2[#1]}%
+ \romannumeral0\xinttrunc{#1}{##2[##1]}%
}%
+}\expandafter\XINT_tmpa\the\numexpr\XINTdigits+5.%
\def\XINT_sind_a{\expandafter\XINT_sind_i\the\numexpr\XINT_mod_ccclx_i0.}%
\def\XINT_sind_int
{%
\expandafter\XINT_sind_i\the\numexpr\expandafter\XINT_mod_ccclx_i
}%
-\def\XINT_sind_i #1.% range reduction inside [0, 360[
+\def\XINT_sind_i #1.%
{%
\ifcase\numexpr#1/90\relax
\expandafter\XINT_sind_A
@@ -235,83 +389,77 @@
\else\expandafter\XINT_sind_E\the\numexpr-360+%
\fi#1.%
}%
-\def\XINT_sind_A#1{%
+\def\XINT_tmpa #1.#2.{%
\def\XINT_sind_A##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_sind_A\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_sind_B#1{\xint_UDsignfork#1\XINT_sind_B_n-\XINT_sind_B_p\krof #1}%
-\def\XINT_tmpa#1{%
\def\XINT_sind_B_n-##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
\def\XINT_sind_B_p##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_sind_C#1{\xint_UDsignfork#1\XINT_sind_C_n-\XINT_sind_C_p\krof #1}%
-\def\XINT_tmpa#1{%
\def\XINT_sind_C_n-##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
\def\XINT_sind_C_p##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_sind_D#1{\xint_UDsignfork#1\XINT_sind_D_n-\XINT_sind_D_p\krof #1}%
-\def\XINT_tmpa#1{%
\def\XINT_sind_D_n-##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
\def\XINT_sind_D_p##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_sind_E#1{%
\def\XINT_sind_E-##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
-}\expandafter
-\XINT_sind_E\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_flexpr_func_cosd_ #1#2#3%
+}\expandafter\XINT_tmpa
+ \the\numexpr\XINTdigits+4\expandafter.%
+ \romannumeral`&&@\xintbarefloateval @oneDegree\relax.%
+\def\XINT_sind_B#1{\xint_UDsignfork#1\XINT_sind_B_n-\XINT_sind_B_p\krof #1}%
+\def\XINT_sind_C#1{\xint_UDsignfork#1\XINT_sind_C_n-\XINT_sind_C_p\krof #1}%
+\def\XINT_sind_D#1{\xint_UDsignfork#1\XINT_sind_D_n-\XINT_sind_D_p\krof #1}%
+\def\XINT_flexpr_func_@cosd_rr #1#2#3%
{%
\expandafter #1\expandafter #2\expandafter{%
\romannumeral`&&@\XINT:NEhook:f:one:from:one{\romannumeral`&&@\xintCosd#3}}%
}%
-\def\xintCosd#1{\romannumeral`&&@\expandafter\xintcosd
- \romannumeral0\XINTinfloatS[\XINTdigits]{#1}}%
+\def\XINT_tmpa #1.{%
+\def\xintCosd##1%
+{%
+ \romannumeral`&&@\expandafter\xintcosd\romannumeral0\XINTinfloatS[#1]{##1}}%
+}\expandafter\XINT_tmpa\the\numexpr\XINTdigits+12.%
\def\xintcosd #1[#2#3]%
{%
\xint_UDsignfork
#2\XINT_cosd
-\XINT_cosd_int
- \krof#2#3.#1..%<< attention extra dot
+ \krof#2#3.#1..%
}%
-\def\XINT_cosd #1.#2.% NOT TO BE USED WITH VANISHING (OR NEGATIVE) #2.
+\def\XINT_tmpa #1.{%
+\def\XINT_cosd ##1.##2.%
{%
\expandafter\XINT_cosd_a
- \romannumeral0\xinttrunc{\XINTdigits}{#2[#1]}%
+ \romannumeral0\xinttrunc{#1}{##2[##1]}%
}%
+}\expandafter\XINT_tmpa\the\numexpr\XINTdigits+5.%
\def\XINT_cosd_a{\expandafter\XINT_cosd_i\the\numexpr\XINT_mod_ccclx_i0.}%
\def\XINT_cosd_int
{%
@@ -327,259 +475,401 @@
\else\expandafter\XINT_cosd_E\the\numexpr-360+%
\fi#1.%
}%
-\def\XINT_cosd_A#1{%
+\def\XINT_tmpa#1.#2.{%
\def\XINT_cosd_A##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_cosd_A\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_cosd_B#1{\xint_UDsignfork#1\XINT_cosd_B_n-\XINT_cosd_B_p\krof #1}%
-\def\XINT_tmpa#1{%
\def\XINT_cosd_B_n-##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
\def\XINT_cosd_B_p##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_cosd_C#1{\xint_UDsignfork#1\XINT_cosd_C_n-\XINT_cosd_C_p\krof #1}%
-\def\XINT_tmpa#1{%
\def\XINT_cosd_C_n-##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
\def\XINT_cosd_C_p##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_cosd_D#1{\xint_UDsignfork#1\XINT_cosd_D_n-\XINT_cosd_D_p\krof #1}%
-\def\XINT_tmpa#1{%
\def\XINT_cosd_D_n-##1.##2.%
{%
- \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
\def\XINT_cosd_D_p##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@sin_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{##1.##2}#2}}%
}%
-}\expandafter
-\XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\def\XINT_cosd_E#1{%
\def\XINT_cosd_E-##1.##2.%
{%
- \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter
- {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}%
+ \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_@cos_series\expandafter
+ {\romannumeral0\XINTinfloat[#1]{\xintMul{\xintSub{##1[0]}{.##2}}#2}}%
}%
-}\expandafter
-\XINT_cosd_E\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}%
-\xintdeffloatfunc sind(x) := (x)??
- {(x>=-45)?
- {sin_(x*oneDegree)}
- {-sind_(-x)}
+}\expandafter\XINT_tmpa
+ \the\numexpr\XINTdigits+4\expandafter.%
+ \romannumeral`&&@\xintbarefloateval @oneDegree\relax.%
+\def\XINT_cosd_B#1{\xint_UDsignfork#1\XINT_cosd_B_n-\XINT_cosd_B_p\krof #1}%
+\def\XINT_cosd_C#1{\xint_UDsignfork#1\XINT_cosd_C_n-\XINT_cosd_C_p\krof #1}%
+\def\XINT_cosd_D#1{\xint_UDsignfork#1\XINT_cosd_D_n-\XINT_cosd_D_p\krof #1}%
+\xintdeffloatfunc @sind(x) := (x)??
+ {(x>=-\ifnum\XINTdigits>8 45\else60\fi)?
+ {@sin_series(x*@oneDegree)}
+ {-@sind_rr(-x)}
}
- {0}
- {(x<=45)?
- {sin_(x*oneDegree)}
- {sind_(x)}
+ {0e0}
+ {(x<=\ifnum\XINTdigits>8 45\else60\fi e0)?
+ {@sin_series(x*@oneDegree)}
+ {@sind_rr(x)}
}
;%
-\xintdeffloatfunc cosd(x) := (x)??
- {(x>=-45)?
- {cos_(x*oneDegree)}
- {cosd_(-x)}
+\xintdeffloatfunc @cosd(x) := (x)??
+ {(x>=-\ifnum\XINTdigits>8 45\else60\fi)?
+ {@cos_series(x*@oneDegree)}
+ {@cosd_rr(-x)}
}
- {1}
- {(x<=45)?
- {cos_(x*oneDegree)}
- {cosd_(x)}
+ {1e0}
+ {(x<=\ifnum\XINTdigits>8 45\else60\fi e0)?
+ {@cos_series(x*@oneDegree)}
+ {@cosd_rr(x)}
}
;%
-\xintdeffloatfunc sin(x):= (abs(x)<0.79)?
- {sin_(x)}
+\xintdeffloatfunc @sin(x):= (abs(x)<\ifnum\XINTdigits>8 79e-2\else1e0\fi)?
+ {@sin_series(x)}
{(x)??
- {-sind_(-x*oneRadian)}
+ {-@sind_rr(-\xintexpr x*@oneRadian\relax)}
{0}
- {sind_(x*oneRadian)}
+ {@sind_rr(\xintexpr x*@oneRadian\relax)}
}
;%
-\xintdeffloatfunc cos(x):= (abs(x)<0.79)?
- {cos_(x)}
- {cosd_(abs(x*oneRadian))}
+\xintdeffloatfunc @cos(x):= (abs(x)<\ifnum\XINTdigits>8 79e-2\else1e0\fi)?
+ {@cos_series(x)}
+ {@cosd_rr(abs(\xintexpr x*@oneRadian\relax))}
;%
-\xintdeffloatfunc sinc(x):= (abs(x)<0.79) ?
- {sin_aux(sqr(x))}
- {sind_(abs(x)*oneRadian)/abs(x)}
+\xintdeffloatfunc @sinc(x):= (abs(x)<\ifnum\XINTdigits>8 79e-2\else1e0\fi) ?
+ {@sin_aux(sqr(x))}
+ {@sind_rr(\xintexpr abs(x)*@oneRadian\relax)/abs(x)}
;%
-\xintdeffloatfunc tand(x):= sind(x)/cosd(x);%
-\xintdeffloatfunc cotd(x):= cosd(x)/sind(x);%
-\xintdeffloatfunc tan(x) := (x)??
- {(x>-0.79)?
- {sin(x)/cos(x)}
- {-cotd(90+x*oneRadian)
+\xintdeffloatfunc @tand(x):= @sind(x)/@cosd(x);%
+\xintdeffloatfunc @cotd(x):= @cosd(x)/@sind(x);%
+\xintdeffloatfunc @tan(x) := (x)??
+ {(x>-\ifnum\XINTdigits>8 79e-2\else1e0\fi)?
+ {@sin(x)/@cos(x)}
+ {-@cotd(\xintexpr9e1+x*@oneRadian\relax)
}
}
- {0}
- {(x<0.79)?
- {sin(x)/cos(x)}
- {cotd(90-x*oneRadian)}
+ {0e0}
+ {(x<\ifnum\XINTdigits>8 79e-2\else1e0\fi)?
+ {@sin(x)/@cos(x)}
+ {@cotd(\xintexpr9e1-x*@oneRadian\relax)}
}
;%
-\xintdeffloatfunc cot(x) := (abs(x)<0.79)?
- {cos(x)/sin(x)}
+\xintdeffloatfunc @cot(x) := (abs(x)<\ifnum\XINTdigits>8 79e-2\else1e0\fi)?
+ {@cos(x)/@sin(x)}
{(x)??
- {-tand(90+x*oneRadian)}
- {0}
- {tand(90-x*oneRadian)}
+ {-@tand(\xintexpr9e1+x*@oneRadian\relax)}
+ {0e0}
+ {@tand(\xintexpr9e1-x*@oneRadian\relax)}
};%
-\xintdeffloatfunc sec(x) := inv(cos(x));%
-\xintdeffloatfunc csc(x) := inv(sin(x));%
-\xintdeffloatfunc secd(x):= inv(cosd(x));%
-\xintdeffloatfunc cscd(x):= inv(sind(x));%
-\xintdeffloatfunc asin_aux(X) := 1
-\ifnum\XINTdigits>3 % actually 4 would achieve 1ulp in place of <0.5ulp
- + X(1/6
-\ifnum\XINTdigits>9
- + X(3/40
+\xintdeffloatfunc @sec(x) := inv(@cos(x));%
+\xintdeffloatfunc @csc(x) := inv(@sin(x));%
+\xintdeffloatfunc @secd(x):= inv(@cosd(x));%
+\xintdeffloatfunc @cscd(x):= inv(@sind(x));%
+\expandafter\let\csname XINT_expr_func_@sin_aux\expandafter\endcsname
+ \csname XINT_flexpr_func_@sin_aux\endcsname
+\expandafter\let\csname XINT_expr_func_@cos_aux\expandafter\endcsname
+ \csname XINT_flexpr_func_@cos_aux\endcsname
+\ifnum\XINTdigits>16
+\def\XINT_flexpr_func_@asin_II#1#2#3%
+{%
+ \expandafter #1\expandafter #2\expandafter{%
+ \romannumeral`&&@\XINT:NEhook:f:one:from:one
+ {\romannumeral`&&@\XINT_Arcsin_II_a#3}}%
+}%
+\def\XINT_tmpc#1.%
+{%
+\def\XINT_Arcsin_II_a##1%
+{%
+ \expandafter\XINT_Arcsin_II_c_i\romannumeral0\XINTinfloatS[#1]{##1}%
+}%
+\def\XINT_Arcsin_II_c_i##1[##2]%
+{%
+ \xintAdd{1/1[0]}{##1/6[##2]}%
+}%
+}%
+\expandafter\XINT_tmpc\the\numexpr\XINTdigits-14.%
+\fi
+\ifnum\XINTdigits>34
+\def\XINT_tmpc#1.#2.#3.#4.%
+{%
+\def\XINT_Arcsin_II_a##1%
+{%
+ \expandafter\XINT_Arcsin_II_a_iii\romannumeral0\XINTinfloatS[#1]{##1}\xint:
+}%
+\def\XINT_Arcsin_II_a_iii##1\xint:
+{%
+ \expandafter\XINT_Arcsin_II_b\romannumeral0\XINTinfloatS[#2]{##1}\xint:##1\xint:
+}%
+\def\XINT_Arcsin_II_b##1\xint:
+{%
+ \expandafter\XINT_Arcsin_II_c_i\romannumeral0\xintadd{#4}{\XINTinFloat[#2]{\xintMul{#3}{##1}}}\xint:
+}%
+\def\XINT_Arcsin_II_c_i##1\xint:##2\xint:
+{%
+ \xintAdd{1/1[0]}{\XINTinFloat[#1]{\xintMul{##1}{##2}}}%
+}%
+}%
+\expandafter\XINT_tmpc
+ \the\numexpr\XINTdigits-14\expandafter.%
+ \the\numexpr\XINTdigits-32\expandafter.\expanded{%
+ \XINTinFloat[\XINTdigits-32]{3/40[0]}.%
+ \XINTinFloat[\XINTdigits-14]{1/6[0]}.%
+ }%
+\fi
+\ifnum\XINTdigits>52
+\def\XINT_tmpc#1.#2.#3.#4.#5.%
+{%
+\def\XINT_Arcsin_II_a_iii##1\xint:
+{%
+ \expandafter\XINT_Arcsin_II_a_iv\romannumeral0\XINTinfloatS[#1]{##1}\xint:##1\xint:
+}%
+\def\XINT_Arcsin_II_a_iv##1\xint:
+{%
+ \expandafter\XINT_Arcsin_II_b\romannumeral0\XINTinfloatS[#2]{##1}\xint:##1\xint:
+}%
+\def\XINT_Arcsin_II_b##1\xint:
+{%
+ \expandafter\XINT_Arcsin_II_c_ii
+ \romannumeral0\xintadd{#4}{\XINTinfloat[#2]{\xintMul{#3}{##1}}}\xint:
+}%
+\def\XINT_Arcsin_II_c_ii##1\xint:##2\xint:
+{%
+ \expandafter\XINT_Arcsin_II_c_i
+ \romannumeral0\xintadd{#5}{\XINTinFloat[#1]{\xintMul{##1}{##2}}}\xint:
+}%
+}%
+\expandafter\XINT_tmpc
+ \the\numexpr\XINTdigits-32\expandafter.%
+ \the\numexpr\XINTdigits-50\expandafter.\expanded{%
+ \XINTinFloat[\XINTdigits-50]{5/112[0]}.%
+ \XINTinFloat[\XINTdigits-32]{3/40[0]}.%
+ \XINTinFloat[\XINTdigits-14]{1/6[0]}.%
+ }%
+\fi
+\def\XINT_flexpr_func_@asin_I#1#2#3%
+{%
+ \expandafter #1\expandafter #2\expandafter{%
+ \romannumeral`&&@\XINT:NEhook:f:one:from:one
+ {\romannumeral`&&@\XINT_Arcsin_I#3}}%
+}%
+\def\XINT_Arcsin_I#1{\the\numexpr\expandafter\XINT_Arcsin_Ia\romannumeral0\xintiround9{#1}.}%
+\def\XINT_Arcsin_Ia#1.%
+{%
+ (\expandafter\XINT_Arcsin_Ib\the\numexpr#1*#1/\xint_c_x^ix.)*%
+ #1/\xint_c_x^ix[-9]%
+}%
+\def\XINT_Arcsin_Ib#1.%
+{%((((((((((((((((
+ % 3481/3660)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ % 3249/3422)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ % 3025/3192)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ % 2809/2970)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ % 2601/2756)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ % 2401/2550)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ % 2209/2352)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ % 2025/2162)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+((((((((((((((((((((((((((((((((((((((((((%
+ %(\xint_c_x^ix*1849/1980)*%
+ 933838384*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 1681/1806)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 1521/1640)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 1369/1482)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 1225/1332)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 1089/1190)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 961/1056)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 841/930)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 729/812)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 625/702)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 529/600)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 441/506)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 361/420)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 289/342)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 225/272)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 169/210)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 121/156)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 81/110)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 49/72)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 25/42)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 9/20)*#1/\xint_c_x^ix+\xint_c_x^ix)*%
+ 1/6)*#1/\xint_c_x^ix+\xint_c_x^ix
+}%
\ifnum\XINTdigits>16
- + X(5/112
-\ifnum\XINTdigits>25
- + X(35/1152
-\ifnum\XINTdigits>35
- + X(63/2816
-\ifnum\XINTdigits>46
- + X(231/13312
- )\fi)\fi)\fi)\fi)\fi)\fi;%
-\xintdeffloatfunc asin_o(D, T) := T + D*asin_aux(sqr(D));%
-\xintdeffloatfunc asin_n(V, T, t, u) :=% V is square of T
- asin_o (\xintexpr t*cos_aux(V) - u*T*sin_aux(V)\relax, T);%
-\xintdeffloatfunc asin_m(T, t, u) := asin_n(sqr(T), T, t, u);%
-\xintdeffloatfunc asin_l(t, u) := asin_m(t*asin_aux(sqr(t)), t, u);%
-\xintdeffloatfunc asin_a(t, u) := (t<u)?
- {asin_l(t, u)}
- {Piover2 - asin_l(u, t)}
+ \xintdeffloatfunc @asin_o(D, T) := T + D*@asin_II(sqr(D));%
+ \xintdeffloatfunc @asin_n(V, T, t, u) :=%
+ @asin_o(\xintexpr t*@cos_aux(V) - u*T*@sin_aux(V)\relax, T);%
+\else
+ \xintdeffloatfunc @asin_n(V, T, t, u) :=%
+ \xintexpr t*@cos_aux(V) - u*T*@sin_aux(V)\relax + T;%
+\fi
+\xintdeffloatfunc @asin_m(T, t, u) := @asin_n(sqr(T), T, t, u);%
+\xintdeffloatfunc @asin_l(t, u) := @asin_m(@asin_I(t), t, u);%
+\xintdeffloatfunc @asin_a(t, u) := (t<u)?
+ {@asin_l(t, u)}
+ {@Piover2 - @asin_l(u, t)}
;%
-\xintdeffloatfunc asind_a(t, u):= (t<u)?
- {asin_l(t, u) * oneRadian}
- {90 - asin_l(u, t) * oneRadian}
+\xintdeffloatfunc @asind_a(t, u):= (t<u)?
+ {@asin_l(t, u) * @oneRadian}
+ {9e1 - @asin_l(u, t) * @oneRadian}
;%
-\xintdeffloatfunc asin(t) := (t)??
- {-asin_a(-t, sqrt_(1-sqr(t)))}
- {0}
- {asin_a(t, sqrt_(1-sqr(t)))}
+\xintdeffloatfunc @asin(t) := (t)??
+ {-@asin_a(-t, sqrt(1e0-sqr(t)))}
+ {0e0}
+ {@asin_a(t, sqrt(1e0-sqr(t)))}
;%
-\xintdeffloatfunc asind(t) := (t)??
- {-asind_a(-t, sqrt_(1-sqr(t)))}
- {0}
- {asind_a(t, sqrt_(1-sqr(t)))}
+\xintdeffloatfunc @asind(t) := (t)??
+ {-@asind_a(-t, sqrt(1e0-sqr(t)))}
+ {0e0}
+ {@asind_a(t, sqrt(1e0-sqr(t)))}
;%
-\xintdeffloatfunc acos(t) := Piover2 - asin(t);%
-\xintdeffloatfunc acosd(t):= 90 - asind(t);%
-\xintdeffloatfunc atan_b(t, w, z):= 0.5 * (w< 0)?
- {Pi - asin_a(2z * t, -w*z)}
- {asin_a(2z * t, w*z)}
+\xintdeffloatfunc @acos(t) := @Piover2 - @asin(t);%
+\xintdeffloatfunc @acosd(t):= 9e1 - @asind(t);%
+\xintdeffloatfunc @atan_b(t, w, z):= 5e-1 * (w< 0)?
+ {@Pi - @asin_a(2e0*z * t, -w*z)}
+ {@asin_a(2e0*z * t, w*z)}
;%
-\xintdeffloatfunc atan_a(t, T) := atan_b(t, 1-T, inv(1+T));%
-\xintdeffloatfunc atan(t):= (t)??
- {-atan_a(-t, sqr(t))}
+\xintdeffloatfunc @atan_a(t, T) := @atan_b(t, 1e0-T, inv(1e0+T));%
+\xintdeffloatfunc @atan(t):= (t)??
+ {-@atan_a(-t, sqr(t))}
{0}
- {atan_a(t, sqr(t))}
+ {@atan_a(t, sqr(t))}
;%
-\xintdeffloatfunc atand_b(t, w, z) := 0.5 * (w< 0)?
- {180 - asind_a(2z * t, -w*z)}
- {asind_a(2z * t, w*z)}
+\xintdeffloatfunc @atand_b(t, w, z) := 5e-1 * (w< 0)?
+ {18e1 - @asind_a(2e0*z * t, -w*z)}
+ {@asind_a(2e0*z * t, w*z)}
;%
-\xintdeffloatfunc atand_a(t, T) := atand_b(t, 1-T, inv(1+T));%
-\xintdeffloatfunc atand(t) := (t)??
- {-atand_a(-t, sqr(t))}
+\xintdeffloatfunc @atand_a(t, T) := @atand_b(t, 1e0-T, inv(1e0+T));%
+\xintdeffloatfunc @atand(t) := (t)??
+ {-@atand_a(-t, sqr(t))}
{0}
- {atand_a(t, sqr(t))}
+ {@atand_a(t, sqr(t))}
;%
-\xintdeffloatfunc Arg(x, y):= (y>x)?
+\xintdeffloatfunc @Arg(x, y):= (y>x)?
{(y>-x)?
- {Piover2 - atan(x/y)}
+ {@Piover2 - @atan(x/y)}
{(y<0)?
- {-Pi + atan(y/x)}
- {Pi + atan(y/x)}
+ {-@Pi + @atan(y/x)}
+ {@Pi + @atan(y/x)}
}
}
{(y>-x)?
- {atan(y/x)}
- {-Piover2 + atan(x/-y)}
+ {@atan(y/x)}
+ {-@Piover2 + @atan(x/-y)}
}
;%
-\xintdeffloatfunc atan2(y,x) := Arg(x, y);%
-\xintdeffloatfunc Argd(x, y):= (y>x)?
+\xintdeffloatfunc @atan2(y,x) := @Arg(x, y);%
+\xintdeffloatfunc @Argd(x, y):= (y>x)?
{(y>-x)?
- {90 - atand(x/y)}
+ {9e1 - @atand(x/y)}
{(y<0)?
- {-180 + atand(y/x)}
- {180 + atand(y/x)}
+ {-18e1 + @atand(y/x)}
+ {18e1 + @atand(y/x)}
}
}
{(y>-x)?
- {atand(y/x)}
- {-90 + atand(x/-y)}
+ {@atand(y/x)}
+ {-9e1 + @atand(x/-y)}
}
;%
-\xintdeffloatfunc atan2d(y,x) := Argd(x, y);%
-\xintdeffloatfunc pArg(x, y):= (y>x)?
+\xintdeffloatfunc @atan2d(y,x) := @Argd(x, y);%
+\xintdeffloatfunc @pArg(x, y):= (y>x)?
{(y>-x)?
- {Piover2 - atan(x/y)}
- {Pi + atan(y/x)}
+ {@Piover2 - @atan(x/y)}
+ {@Pi + @atan(y/x)}
}
{(y>-x)?
{(y<0)?
- {twoPi + atan(y/x)}
- {atan(y/x)}
+ {@twoPi + @atan(y/x)}
+ {@atan(y/x)}
}
- {threePiover2 + atan(x/-y)}
+ {@threePiover2 + @atan(x/-y)}
}
;%
-\xintdeffloatfunc pArgd(x, y):=(y>x)?
+\xintdeffloatfunc @pArgd(x, y):=(y>x)?
{(y>-x)?
- {90 - atan(x/y)*oneRadian}
- {180 + atan(y/x)*oneRadian}
+ {9e1 - @atan(x/y)*@oneRadian}
+ {18e1 + @atan(y/x)*@oneRadian}
}
{(y>-x)?
- {(y<0)?
- {360 + atan(y/x)*oneRadian}
- {atan(y/x)*oneRadian}
+ {(y<0e0)?
+ {36e1 + @atan(y/x)*@oneRadian}
+ {@atan(y/x)*@oneRadian}
}
- {270 + atan(x/-y)*oneRadian}
+ {27e1 + @atan(x/-y)*@oneRadian}
}
;%
-\expandafter\let\csname XINT_flexpr_func_tg\expandafter\endcsname
- \csname XINT_flexpr_func_tan\endcsname
-\expandafter\let\csname XINT_flexpr_func_cotg\expandafter\endcsname
- \csname XINT_flexpr_func_cot\endcsname
+\expandafter\let
+ \csname XINT_flexpr_exec_+\expandafter\endcsname
+ \csname XINT_flexpr_exec_+_\endcsname
+\expandafter\let
+ \csname XINT_flexpr_exec_-\expandafter\endcsname
+ \csname XINT_flexpr_exec_-_\endcsname
+\expandafter\let
+ \csname XINT_flexpr_exec_*\expandafter\endcsname
+ \csname XINT_flexpr_exec_*_\endcsname
+\expandafter\let
+ \csname XINT_flexpr_exec_/\expandafter\endcsname
+ \csname XINT_flexpr_exec_/_\endcsname
+\expandafter\let
+ \csname XINT_flexpr_func_sqr\expandafter\endcsname
+ \csname XINT_flexpr_sqrfunc\endcsname
+\expandafter\let
+ \csname XINT_flexpr_func_sqrt\expandafter\endcsname
+ \csname XINT_flexpr_sqrtfunc\endcsname
+\expandafter\let
+ \csname XINT_flexpr_func_inv\expandafter\endcsname
+ \csname XINT_flexpr_invfunc\endcsname
\xintFor #1 in {sin, cos, tan, sec, csc, cot,
asin, acos, atan}\do
{%
- \xintdeffunc #1(x) := \xintfloatexpr #1(sfloat(x))\relax;%
- \xintdeffunc #1d(x):= \xintfloatexpr #1d(sfloat(x))\relax;%
+ \xintdeffloatfunc #1(x) := float_(@#1(x));%
+ \xintdeffloatfunc #1d(x) := float_(@#1d(x));%
+ \xintdeffunc #1(x) := float_(\xintfloatexpr @#1(sfloat(x))\relax);%
+ \xintdeffunc #1d(x):= float_(\xintfloatexpr @#1d(sfloat(x))\relax);%
}%
\xintFor #1 in {Arg, pArg, atan2}\do
{%
- \xintdeffunc #1(x, y) := \xintfloatexpr #1(sfloat(x), sfloat(y))\relax;%
- \xintdeffunc #1d(x, y):= \xintfloatexpr #1d(sfloat(x), sfloat(y))\relax;%
+ \xintdeffloatfunc #1(x, y) := float_(@#1(x, y));%
+ \xintdeffloatfunc #1d(x, y) := float_(@#1d(x, y));%
+ \xintdeffunc #1(x, y) := float_(\xintfloatexpr @#1(sfloat(x), sfloat(y))\relax);%
+ \xintdeffunc #1d(x, y):= float_(\xintfloatexpr @#1d(sfloat(x), sfloat(y))\relax);%
}%
-\xintdeffunc tg(x) := \xintfloatexpr tg(sfloat(x))\relax;%
-\xintdeffunc cotg(x):= \xintfloatexpr cotg(sfloat(x))\relax;%
-\xintdeffunc sinc(x):= \xintfloatexpr sinc(sfloat(x))\relax;%
+\xintdeffloatfunc sinc(x):= float_(@sinc(x));%
+\xintdeffunc sinc(x):= float_(\xintfloatexpr @sinc(sfloat(x))\relax);%
+\expandafter\let\csname XINT_flexpr_func_tg\expandafter\endcsname
+ \csname XINT_flexpr_func_tan\endcsname
+\expandafter\let\csname XINT_flexpr_func_cotg\expandafter\endcsname
+ \csname XINT_flexpr_func_cot\endcsname
+\xintdeffloatvar twoPi := @twoPi;%
+\xintdeffloatvar threePiover2 := @threePiover2;%
+\xintdeffloatvar Pi := @Pi;%
+\xintdeffloatvar Piover2 := @Piover2;%
+\xintdeffloatvar oneDegree := @oneDegree;%
+\xintdeffloatvar oneRadian := @oneRadian;%
+\xintunassignvar{@twoPi}\xintunassignvar{@threePiover2}%
+\xintunassignvar{@Pi}\xintunassignvar{@Piover2}%
+\xintunassignvar{@oneRadian}\xintunassignvar{@oneDegree}%
\xintFor* #1 in {iDTVtuwxyzX}\do{\xintrestorevariable{#1}}%
+\XINTtrigendinput%
\endinput
%%
%% End of file `xinttrig.sty'.