\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}\;k \leq -1.5482059886230863 \cdot 10^{-162}:\\
\;\;\;\;2 \cdot \frac{\left(\ell \cdot \frac{\ell}{k}\right) \cdot \cos k}{k \cdot \left(t \cdot {\sin k}^{2}\right)}\\
\mathbf{elif}\;k \leq 4.6518583883372725 \cdot 10^{-55}:\\
\;\;\;\;2 \cdot e^{\left(\left(\left(\log \ell + \log \ell\right) - \log k\right) + \log \cos k\right) - \left(\log k + \left(\log t + 2 \cdot \log \sin k\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \frac{\cos k \cdot \frac{\ell}{\frac{k}{\ell}}}{k \cdot \left(t \cdot {\sin k}^{2}\right)}\\
\end{array}(FPCore (t l k) :precision binary64 (/ 2.0 (* (* (* (/ (pow t 3.0) (* l l)) (sin k)) (tan k)) (- (+ 1.0 (pow (/ k t) 2.0)) 1.0))))
(FPCore (t l k)
:precision binary64
(if (<= k -1.5482059886230863e-162)
(* 2.0 (/ (* (* l (/ l k)) (cos k)) (* k (* t (pow (sin k) 2.0)))))
(if (<= k 4.6518583883372725e-55)
(*
2.0
(exp
(-
(+ (- (+ (log l) (log l)) (log k)) (log (cos k)))
(+ (log k) (+ (log t) (* 2.0 (log (sin k))))))))
(* 2.0 (/ (* (cos k) (/ l (/ k l))) (* k (* t (pow (sin k) 2.0))))))))double code(double t, double l, double k) {
return 2.0 / ((((pow(t, 3.0) / (l * l)) * sin(k)) * tan(k)) * ((1.0 + pow((k / t), 2.0)) - 1.0));
}
double code(double t, double l, double k) {
double tmp;
if (k <= -1.5482059886230863e-162) {
tmp = 2.0 * (((l * (l / k)) * cos(k)) / (k * (t * pow(sin(k), 2.0))));
} else if (k <= 4.6518583883372725e-55) {
tmp = 2.0 * exp((((log(l) + log(l)) - log(k)) + log(cos(k))) - (log(k) + (log(t) + (2.0 * log(sin(k))))));
} else {
tmp = 2.0 * ((cos(k) * (l / (k / l))) / (k * (t * pow(sin(k), 2.0))));
}
return tmp;
}



Bits error versus t



Bits error versus l



Bits error versus k
Results
if k < -1.5482059886230863e-162Initial program 48.3
Simplified40.5
Taylor expanded around 0 21.9
Simplified21.9
rmApplied associate-*l*_binary64_36019.9
rmApplied associate-/r*_binary64_36317.3
Simplified17.3
rmApplied *-un-lft-identity_binary64_41917.3
Applied times-frac_binary64_42512.0
if -1.5482059886230863e-162 < k < 4.6518583883372725e-55Initial program 63.2
Simplified60.2
Taylor expanded around 0 48.5
Simplified48.5
rmApplied associate-*l*_binary64_36048.5
rmApplied associate-/r*_binary64_36345.5
Simplified45.5
rmApplied pow-to-exp_binary64_48846.7
Applied add-exp-log_binary64_45756.3
Applied prod-exp_binary64_46856.1
Applied add-exp-log_binary64_45756.1
Applied prod-exp_binary64_46856.1
Applied add-exp-log_binary64_45756.1
Applied add-exp-log_binary64_45756.1
Applied add-exp-log_binary64_45760.5
Applied add-exp-log_binary64_45760.5
Applied prod-exp_binary64_46860.5
Applied div-exp_binary64_47059.7
Applied prod-exp_binary64_46859.7
Applied div-exp_binary64_47053.4
if 4.6518583883372725e-55 < k Initial program 45.6
Simplified37.2
Taylor expanded around 0 19.1
Simplified19.1
rmApplied associate-*l*_binary64_36016.5
rmApplied associate-/r*_binary64_36314.9
Simplified14.9
rmApplied associate-/l*_binary64_3649.5
Final simplification14.2
herbie shell --seed 2021047
(FPCore (t l k)
:name "Toniolo and Linder, Equation (10-)"
:precision binary64
(/ 2.0 (* (* (* (/ (pow t 3.0) (* l l)) (sin k)) (tan k)) (- (+ 1.0 (pow (/ k t) 2.0)) 1.0))))