\frac{2}{\left(\left(\frac{{t}^{3}}{\ell \cdot \ell} \cdot \sin k\right) \cdot \tan k\right) \cdot \left(\left(1 + {\left(\frac{k}{t}\right)}^{2}\right) - 1\right)}\begin{array}{l}
\mathbf{if}\;\ell \cdot \ell \le 8.003863462628194015660414444465186232314 \cdot 10^{-322}:\\
\;\;\;\;2 \cdot \left({\left(\frac{1}{{k}^{\left(\frac{2}{2}\right)} \cdot \left({k}^{\left(\frac{2}{2}\right)} \cdot {t}^{1}\right)}\right)}^{1} \cdot \mathsf{fma}\left(\frac{\ell}{k}, \frac{\ell}{k}, {\ell}^{2} \cdot \frac{-1}{6}\right)\right)\\
\mathbf{elif}\;\ell \cdot \ell \le 6.708780650530279639716326318936791171449 \cdot 10^{58}:\\
\;\;\;\;2 \cdot \left({\left(\frac{1}{{k}^{\left(\frac{2}{2}\right)} \cdot \left({k}^{\left(\frac{2}{2}\right)} \cdot {t}^{1}\right)}\right)}^{1} \cdot \frac{\frac{\cos k \cdot {\ell}^{2}}{\sin k}}{\sin k}\right)\\
\mathbf{elif}\;\ell \cdot \ell \le 1.696746513646253334924840057519526861716 \cdot 10^{289}:\\
\;\;\;\;\left({\left(\frac{1}{{k}^{\left(\frac{2}{2}\right)}}\right)}^{1} \cdot \left(\left({\left(\frac{1}{{k}^{\left(\frac{2}{2}\right)} \cdot {t}^{1}}\right)}^{1} \cdot \left(\cos k \cdot {\ell}^{2}\right)\right) \cdot \frac{1}{{\left(\sin k\right)}^{2}}\right)\right) \cdot 2\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{2}{\left(\frac{{\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)}^{3}}{\ell} \cdot \left(\frac{{\left(\sqrt[3]{t}\right)}^{3}}{\ell} \cdot \sin k\right)\right) \cdot \tan k}}{{\left(\frac{k}{t}\right)}^{2}}\\
\end{array}double f(double t, double l, double k) {
double r100700 = 2.0;
double r100701 = t;
double r100702 = 3.0;
double r100703 = pow(r100701, r100702);
double r100704 = l;
double r100705 = r100704 * r100704;
double r100706 = r100703 / r100705;
double r100707 = k;
double r100708 = sin(r100707);
double r100709 = r100706 * r100708;
double r100710 = tan(r100707);
double r100711 = r100709 * r100710;
double r100712 = 1.0;
double r100713 = r100707 / r100701;
double r100714 = pow(r100713, r100700);
double r100715 = r100712 + r100714;
double r100716 = r100715 - r100712;
double r100717 = r100711 * r100716;
double r100718 = r100700 / r100717;
return r100718;
}
double f(double t, double l, double k) {
double r100719 = l;
double r100720 = r100719 * r100719;
double r100721 = 8.0038634626282e-322;
bool r100722 = r100720 <= r100721;
double r100723 = 2.0;
double r100724 = 1.0;
double r100725 = k;
double r100726 = 2.0;
double r100727 = r100723 / r100726;
double r100728 = pow(r100725, r100727);
double r100729 = t;
double r100730 = 1.0;
double r100731 = pow(r100729, r100730);
double r100732 = r100728 * r100731;
double r100733 = r100728 * r100732;
double r100734 = r100724 / r100733;
double r100735 = pow(r100734, r100730);
double r100736 = r100719 / r100725;
double r100737 = pow(r100719, r100726);
double r100738 = -0.16666666666666666;
double r100739 = r100737 * r100738;
double r100740 = fma(r100736, r100736, r100739);
double r100741 = r100735 * r100740;
double r100742 = r100723 * r100741;
double r100743 = 6.70878065053028e+58;
bool r100744 = r100720 <= r100743;
double r100745 = cos(r100725);
double r100746 = r100745 * r100737;
double r100747 = sin(r100725);
double r100748 = r100746 / r100747;
double r100749 = r100748 / r100747;
double r100750 = r100735 * r100749;
double r100751 = r100723 * r100750;
double r100752 = 1.6967465136462533e+289;
bool r100753 = r100720 <= r100752;
double r100754 = r100724 / r100728;
double r100755 = pow(r100754, r100730);
double r100756 = r100724 / r100732;
double r100757 = pow(r100756, r100730);
double r100758 = r100757 * r100746;
double r100759 = pow(r100747, r100726);
double r100760 = r100724 / r100759;
double r100761 = r100758 * r100760;
double r100762 = r100755 * r100761;
double r100763 = r100762 * r100723;
double r100764 = cbrt(r100729);
double r100765 = r100764 * r100764;
double r100766 = 3.0;
double r100767 = pow(r100765, r100766);
double r100768 = r100767 / r100719;
double r100769 = pow(r100764, r100766);
double r100770 = r100769 / r100719;
double r100771 = r100770 * r100747;
double r100772 = r100768 * r100771;
double r100773 = tan(r100725);
double r100774 = r100772 * r100773;
double r100775 = r100723 / r100774;
double r100776 = r100725 / r100729;
double r100777 = pow(r100776, r100723);
double r100778 = r100775 / r100777;
double r100779 = r100753 ? r100763 : r100778;
double r100780 = r100744 ? r100751 : r100779;
double r100781 = r100722 ? r100742 : r100780;
return r100781;
}



Bits error versus t



Bits error versus l



Bits error versus k
if (* l l) < 8.0038634626282e-322Initial program 46.1
Simplified37.0
Taylor expanded around inf 19.9
rmApplied sqr-pow19.9
Applied associate-*l*19.9
Taylor expanded around 0 19.9
Simplified10.6
if 8.0038634626282e-322 < (* l l) < 6.70878065053028e+58Initial program 43.0
Simplified32.7
Taylor expanded around inf 4.7
rmApplied sqr-pow4.7
Applied associate-*l*2.6
rmApplied unpow22.6
Applied associate-/r*1.8
if 6.70878065053028e+58 < (* l l) < 1.6967465136462533e+289Initial program 48.5
Simplified41.0
Taylor expanded around inf 22.4
rmApplied sqr-pow22.4
Applied associate-*l*15.0
rmApplied add-cube-cbrt15.0
Applied times-frac14.5
Applied unpow-prod-down14.5
Applied associate-*l*6.4
Simplified6.4
rmApplied div-inv6.4
Applied associate-*r*4.8
if 1.6967465136462533e+289 < (* l l) Initial program 62.9
Simplified62.7
rmApplied add-cube-cbrt62.7
Applied unpow-prod-down62.7
Applied times-frac49.4
Applied associate-*l*49.4
Final simplification12.9
herbie shell --seed 2019347 +o rules:numerics
(FPCore (t l k)
:name "Toniolo and Linder, Equation (10-)"
:precision binary64
(/ 2 (* (* (* (/ (pow t 3) (* l l)) (sin k)) (tan k)) (- (+ 1 (pow (/ k t) 2)) 1))))