diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xinttrig.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/xint/xinttrig.sty | 353 |
1 files changed, 219 insertions, 134 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xinttrig.sty b/Master/texmf-dist/tex/generic/xint/xinttrig.sty index c25ebaeb452..a8ab5b69ad2 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.3f 2019/09/10 -%% Copyright (C) 2013-2019 by Jean-Francois Burnol +%% The xint bundle 1.4 2020/01/31 +%% Copyright (C) 2013-2020 by Jean-Francois Burnol %% xinttrig: Trigonometry for the xintexpr package %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% @@ -68,10 +68,10 @@ \expandafter\xint_secondoftwo \fi {\immediate\write-1{Reloading xinttrig library using Digits=\xinttheDigits.}}% -{\expandafter\gdef\csname xintlibver@trig\endcsname{2019/09/10 v1.3f}% +{\expandafter\gdef\csname xintlibver@trig\endcsname{2020/01/31 v1.4}% \XINT_providespackage \ProvidesPackage{xinttrig}% -[2019/09/10 v1.3f Trigonometrical functions for xintexpr (JFB)]% +[2020/01/31 v1.4 Trigonometrical functions for xintexpr (JFB)]% }% \xintFor* #1 in {iDTVtuwxyzX}\do{\xintensuredummy{#1}}% \def\xintreloadxinttrig @@ -92,8 +92,10 @@ \xintdeffloatvar oneRadian := 0 + 57.2957795130823208767981548141051703324054724665643215491602;% 180/Pi \xintdeffloatvar invfact\xintListWithSep{, invfact}{\xintSeq{2}{44}}% - := seq(0+x, x=\xintexpr rseq(1/2{;}@/i, i=3..44)\relax);% need to hide inner ; -\xintdeffloatefunc sin_aux(X) := 1 - X(invfact3 - X(invfact5 + := \xintfloatexpr [\XINTdigits] % force float rounding after exact evaluations + \xintexpr rseq(1/2{;}@/i, i=3..44)\relax % need to hide inner ; from \xintdeffloatvar + \relax;% +\xintdeffloatfunc sin_aux(X) := 1 - X(invfact3 - X(invfact5 \ifnum\XINTdigits>4 - X(invfact7 \ifnum\XINTdigits>6 @@ -133,7 +135,7 @@ \ifnum\XINTdigits>59 - X(invfact43 )\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi)\fi));% -\xintdeffloatefunc cos_aux(X) := 1 - X(invfact2 - X(invfact4 +\xintdeffloatfunc cos_aux(X) := 1 - X(invfact2 - X(invfact4 \ifnum\XINTdigits>3 - X(invfact6 \ifnum\XINTdigits>5 @@ -179,8 +181,8 @@ \csname XINT_flexpr_func_sin_aux\endcsname \expandafter\let\csname XINT_expr_func_cos_aux\expandafter\endcsname \csname XINT_flexpr_func_cos_aux\endcsname -\xintdeffloatefunc sin_(x) := x * sin_aux(sqr(x));% -\xintdeffloatefunc cos_(x) := cos_aux(sqr(x));% +\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 {% \expandafter\XINT_mod_ccclx_e\the\numexpr @@ -200,9 +202,10 @@ \def\XINT_mod_ccclx_z#1.#2.{#2-360*#1.}% \def\XINT_flexpr_func_sind_ #1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\xintSind{\XINT_expr_unlock#3}\endcsname + \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\xintsind #1[#2#3]% @@ -235,8 +238,8 @@ \def\XINT_sind_A#1{% \def\XINT_sind_A##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_sind_A\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% @@ -244,13 +247,13 @@ \def\XINT_tmpa#1{% \def\XINT_sind_B_n-##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% \def\XINT_sind_B_p##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% @@ -258,13 +261,13 @@ \def\XINT_tmpa#1{% \def\XINT_sind_C_n-##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% \def\XINT_sind_C_p##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% @@ -272,31 +275,31 @@ \def\XINT_tmpa#1{% \def\XINT_sind_D_n-##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% \def\XINT_sind_D_p##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% \def\XINT_sind_E#1{% \def\XINT_sind_E-##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% }\expandafter \XINT_sind_E\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% \def\XINT_flexpr_func_cosd_ #1#2#3% {% - \expandafter #1\expandafter #2\csname.=% - \XINT:NEhook:one\xintCosd{\XINT_expr_unlock#3}\endcsname + \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}}% + \romannumeral0\XINTinfloatS[\XINTdigits]{#1}}% \def\xintcosd #1[#2#3]% {% \xint_UDsignfork @@ -327,8 +330,8 @@ \def\XINT_cosd_A#1{% \def\XINT_cosd_A##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_cosd_A\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% @@ -336,13 +339,13 @@ \def\XINT_tmpa#1{% \def\XINT_cosd_B_n-##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% \def\XINT_cosd_B_p##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% @@ -350,13 +353,13 @@ \def\XINT_tmpa#1{% \def\XINT_cosd_C_n-##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% \def\XINT_cosd_C_p##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% @@ -364,54 +367,88 @@ \def\XINT_tmpa#1{% \def\XINT_cosd_D_n-##1.##2.% {% - \xintiiopp\expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \xintiiopp\XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% \def\XINT_cosd_D_p##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_sin_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_sin_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{##1.##2}#1}}% }% }\expandafter \XINT_tmpa\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% \def\XINT_cosd_E#1{% \def\XINT_cosd_E-##1.##2.% {% - \expandafter\XINT_flexpr_userefunc_cos_\expandafter - {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}{#1}}}% + \XINT_expr_unlock\expandafter\XINT_flexpr_userfunc_cos_\expandafter + {\romannumeral0\XINTinfloat[\XINTdigits]{\xintMul{\xintSub{##1[0]}{.##2}}#1}}% }% }\expandafter \XINT_cosd_E\expandafter{\romannumeral`&&@\xintthebarefloateval oneDegree\relax}% -\xintdeffloatefunc sind(x) := ifsgn(x, if(x>=-45, sin_(x*oneDegree), -sind_(-x)), - 0, - if(x<=45, sin_(x*oneDegree), sind_(x)));% -\xintdeffloatefunc cosd(x) := ifsgn(x, if(x>=-45, cos_(x*oneDegree), cosd_(-x)), - 1, - if(x<=45, cos_(x*oneDegree), cosd_(x)));% -\xintdeffloatefunc sin(x):= if(abs(x)<0.79, sin_(x),% - ifsgn(x, -sind_(-x*oneRadian), - 0, - sind_(x*oneRadian)) - );% -\xintdeffloatefunc cos(x):= if(abs(x)<0.79, cos_(x), cosd_(abs(x*oneRadian)));% -\xintdeffloatefunc sinc(x):= - if(abs(x)<0.79, sin_aux(sqr(x)), sind_(abs(x)*oneRadian)/abs(x));% -\xintdeffloatefunc tand(x):= sind(x)/cosd(x);% -\xintdeffloatefunc cotd(x):= cosd(x)/sind(x);% -\xintdeffloatefunc tan(x) := ifsgn(x, if(x>-0.79, sin(x)/cos(x), -cotd(90+x*oneRadian)), - 0, - if(x<0.79, sin(x)/cos(x), cotd(90-x*oneRadian)) - );% -\xintdeffloatefunc cot(x) := if(abs(x)<0.79, cos(x)/sin(x), - ifsgn(x, -tand(90+x*oneRadian), - 0, - tand(90-x*oneRadian)) - );% -\xintdeffloatefunc sec(x) := inv(cos(x));% -\xintdeffloatefunc csc(x) := inv(sin(x));% -\xintdeffloatefunc secd(x):= inv(cosd(x));% -\xintdeffloatefunc cscd(x):= inv(sind(x));% -\xintdeffloatefunc asin_aux(X) := 1 +\xintdeffloatfunc sind(x) := (x)?? + {(x>=-45)? + {sin_(x*oneDegree)} + {-sind_(-x)} + } + {0} + {(x<=45)? + {sin_(x*oneDegree)} + {sind_(x)} + } + ;% +\xintdeffloatfunc cosd(x) := (x)?? + {(x>=-45)? + {cos_(x*oneDegree)} + {cosd_(-x)} + } + {1} + {(x<=45)? + {cos_(x*oneDegree)} + {cosd_(x)} + } + ;% +\xintdeffloatfunc sin(x):= (abs(x)<0.79)? + {sin_(x)} + {(x)?? + {-sind_(-x*oneRadian)} + {0} + {sind_(x*oneRadian)} + } + ;% +\xintdeffloatfunc cos(x):= (abs(x)<0.79)? + {cos_(x)} + {cosd_(abs(x*oneRadian))} + ;% +\xintdeffloatfunc sinc(x):= (abs(x)<0.79) ? + {sin_aux(sqr(x))} + {sind_(abs(x)*oneRadian)/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) + } + } + {0} + {(x<0.79)? + {sin(x)/cos(x)} + {cotd(90-x*oneRadian)} + } + ;% +\xintdeffloatfunc cot(x) := (abs(x)<0.79)? + {cos(x)/sin(x)} + {(x)?? + {-tand(90+x*oneRadian)} + {0} + {tand(90-x*oneRadian)} + };% +\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 @@ -425,57 +462,105 @@ \ifnum\XINTdigits>46 + X(231/13312 )\fi)\fi)\fi)\fi)\fi)\fi;% -\xintdeffloatefunc asin_o(D, T) := T + D*asin_aux(sqr(D));% -\xintdeffloatefunc asin_n(V, T, t, u) :=% V is square of T +\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);% -\xintdeffloatefunc asin_m(T, t, u) := asin_n(sqr(T), T, t, u);% -\xintdeffloatefunc asin_l(t, u) := asin_m(t*asin_aux(sqr(t)), t, u);% -\xintdeffloatefunc asin_a(t, u) := - if(t<u, asin_l(t, u), Piover2 - asin_l(u, t));% -\xintdeffloatefunc asind_a(t, u):= - if(t<u, asin_l(t, u) * oneRadian, 90 - asin_l(u, t) * oneRadian);% -\xintdeffloatefunc asin(t) := ifsgn(t, -asin_a(-t, sqrt(1-sqr(t))), - 0, - asin_a(t, sqrt(1-sqr(t))));% -\xintdeffloatefunc asind(t) := ifsgn(t, -asind_a(-t, sqrt(1-sqr(t))), - 0, - asind_a(t, sqrt(1-sqr(t))));% -\xintdeffloatefunc acos(t) := Piover2 - asin(t);% -\xintdeffloatefunc acosd(t):= 90 - asind(t);% -\xintdeffloatefunc atan_b(t, w, z):=% - 0.5 * if(w< 0, Pi - asin_a(2z * t, -w*z), asin_a(2z * t, w*z));% -\xintdeffloatefunc atan_a(t, T) := atan_b(t, 1-T, inv(1+T));% -\xintdeffloatefunc atan(t):= ifsgn(t,-atan_a(-t, sqr(t)), 0, atan_a(t, sqr(t)));% -\xintdeffloatefunc atand_b(t, w, z) := - 0.5 * if(w< 0, 180 - asind_a(2z * t, -w*z), asind_a(2z * t, w*z));% -\xintdeffloatefunc atand_a(t, T) := atand_b(t, 1-T, inv(1+T));% -\xintdeffloatefunc atand(t):= ifsgn(t,-atand_a(-t, sqr(t)), 0, atand_a(t, sqr(t)));% -\xintdeffloatefunc Arg(x, y):= - if(y>x, - if(y>-x, Piover2 - atan(x/y), - if(y<0, -Pi + atan(y/x), Pi + atan(y/x))), - if(y>-x, atan(y/x), -Piover2 + atan(x/-y)) - );% -\xintdeffloatefunc atan2(y,x) := Arg(x, y);% -\xintdeffloatefunc Argd(x, y):= - if(y>x, - if(y>-x, 90 - atand(x/y), - if(y<0, -180 + atand(y/x), 180 + atand(y/x))), - if(y>-x, atand(y/x), -90 + atand(x/-y)) - );% -\xintdeffloatefunc atan2d(y,x) := Argd(x, y);% -\xintdeffloatefunc pArg(x, y):= - if(y>x, - if(y>-x, Piover2 - atan(x/y), Pi + atan(y/x)), - if(y>-x, if(y<0, twoPi + atan(y/x), atan(y/x)), - threePiover2 + atan(x/-y)) - );% -\xintdeffloatefunc pArgd(x, y):= - if(y>x, - if(y>-x, 90 - atan(x/y)*oneRadian, 180 + atan(y/x)*oneRadian), - if(y>-x, if(y<0, 360 + atan(y/x)*oneRadian, atan(y/x)*oneRadian), - 270 + atan(x/-y)*oneRadian) - );% +\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 asind_a(t, u):= (t<u)? + {asin_l(t, u) * oneRadian} + {90 - 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 asind(t) := (t)?? + {-asind_a(-t, sqrt_(1-sqr(t)))} + {0} + {asind_a(t, sqrt_(1-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 atan_a(t, T) := atan_b(t, 1-T, inv(1+T));% +\xintdeffloatfunc atan(t):= (t)?? + {-atan_a(-t, sqr(t))} + {0} + {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_a(t, T) := atand_b(t, 1-T, inv(1+T));% +\xintdeffloatfunc atand(t) := (t)?? + {-atand_a(-t, sqr(t))} + {0} + {atand_a(t, sqr(t))} + ;% +\xintdeffloatfunc Arg(x, y):= (y>x)? + {(y>-x)? + {Piover2 - atan(x/y)} + {(y<0)? + {-Pi + atan(y/x)} + {Pi + atan(y/x)} + } + } + {(y>-x)? + {atan(y/x)} + {-Piover2 + atan(x/-y)} + } + ;% +\xintdeffloatfunc atan2(y,x) := Arg(x, y);% +\xintdeffloatfunc Argd(x, y):= (y>x)? + {(y>-x)? + {90 - atand(x/y)} + {(y<0)? + {-180 + atand(y/x)} + {180 + atand(y/x)} + } + } + {(y>-x)? + {atand(y/x)} + {-90 + atand(x/-y)} + } + ;% +\xintdeffloatfunc atan2d(y,x) := Argd(x, y);% +\xintdeffloatfunc pArg(x, y):= (y>x)? + {(y>-x)? + {Piover2 - atan(x/y)} + {Pi + atan(y/x)} + } + {(y>-x)? + {(y<0)? + {twoPi + atan(y/x)} + {atan(y/x)} + } + {threePiover2 + atan(x/-y)} + } + ;% +\xintdeffloatfunc pArgd(x, y):=(y>x)? + {(y>-x)? + {90 - atan(x/y)*oneRadian} + {180 + atan(y/x)*oneRadian} + } + {(y>-x)? + {(y<0)? + {360 + atan(y/x)*oneRadian} + {atan(y/x)*oneRadian} + } + {270 + 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 @@ -483,18 +568,18 @@ \xintFor #1 in {sin, cos, tan, sec, csc, cot, asin, acos, atan}\do {% - \xintdefefunc #1(x) := \xintfloatexpr #1(sfloat(x))\relax;% - \xintdefefunc #1d(x):= \xintfloatexpr #1d(sfloat(x))\relax;% + \xintdeffunc #1(x) := \xintfloatexpr #1(sfloat(x))\relax;% + \xintdeffunc #1d(x):= \xintfloatexpr #1d(sfloat(x))\relax;% }% \xintFor #1 in {Arg, pArg, atan2}\do {% - \xintdefefunc #1(x, y) := \xintfloatexpr #1(sfloat(x), sfloat(y))\relax;% - \xintdefefunc #1d(x, y):= \xintfloatexpr #1d(sfloat(x), sfloat(y))\relax;% + \xintdeffunc #1(x, y) := \xintfloatexpr #1(sfloat(x), sfloat(y))\relax;% + \xintdeffunc #1d(x, y):= \xintfloatexpr #1d(sfloat(x), sfloat(y))\relax;% }% -\xintdefefunc tg(x) := \xintfloatexpr tg(sfloat(x))\relax;% -\xintdefefunc cotg(x):= \xintfloatexpr cotg(sfloat(x))\relax;% -\xintdefefunc sinc(x):= \xintfloatexpr sinc(sfloat(x))\relax;% -\xintFor* #1 in {iDTVtuwxyzX}\do{\xintrestorelettervar{#1}}% +\xintdeffunc tg(x) := \xintfloatexpr tg(sfloat(x))\relax;% +\xintdeffunc cotg(x):= \xintfloatexpr cotg(sfloat(x))\relax;% +\xintdeffunc sinc(x):= \xintfloatexpr sinc(sfloat(x))\relax;% +\xintFor* #1 in {iDTVtuwxyzX}\do{\xintrestorevariable{#1}}% \endinput %% %% End of file `xinttrig.sty'. |