\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\begin{array}{l}
t_0 := {\pi}^{5} \cdot {\ell}^{5}\\
t_1 := \frac{F}{\pi \cdot \ell}\\
t_2 := \left(F \cdot \ell\right) \cdot 0.3333333333333333\\
\mathbf{if}\;F \cdot F \leq 1.1017335510091991 \cdot 10^{-97}:\\
\;\;\;\;\pi \cdot \ell - \frac{1}{F \cdot \left(t_1 - \mathsf{fma}\left(\pi, t_2, \mathsf{log1p}\left(\mathsf{expm1}\left(F \cdot \mathsf{fma}\left(0.0021164021164021165, t_0, 0.022222222222222223 \cdot {\left(\pi \cdot \ell\right)}^{3}\right)\right)\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot \ell - \frac{1}{F \cdot \left(t_1 - \mathsf{fma}\left(\pi, t_2, F \cdot \left(0.0021164021164021165 \cdot t_0\right)\right)\right)}\\
\end{array}
(FPCore (F l) :precision binary64 (- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))
(FPCore (F l)
:precision binary64
(let* ((t_0 (* (pow PI 5.0) (pow l 5.0)))
(t_1 (/ F (* PI l)))
(t_2 (* (* F l) 0.3333333333333333)))
(if (<= (* F F) 1.1017335510091991e-97)
(-
(* PI l)
(/
1.0
(*
F
(-
t_1
(fma
PI
t_2
(log1p
(expm1
(*
F
(fma
0.0021164021164021165
t_0
(* 0.022222222222222223 (pow (* PI l) 3.0)))))))))))
(-
(* PI l)
(/
1.0
(* F (- t_1 (fma PI t_2 (* F (* 0.0021164021164021165 t_0))))))))))double code(double F, double l) {
return (((double) M_PI) * l) - ((1.0 / (F * F)) * tan(((double) M_PI) * l));
}
double code(double F, double l) {
double t_0 = pow(((double) M_PI), 5.0) * pow(l, 5.0);
double t_1 = F / (((double) M_PI) * l);
double t_2 = (F * l) * 0.3333333333333333;
double tmp;
if ((F * F) <= 1.1017335510091991e-97) {
tmp = (((double) M_PI) * l) - (1.0 / (F * (t_1 - fma(((double) M_PI), t_2, log1p(expm1(F * fma(0.0021164021164021165, t_0, (0.022222222222222223 * pow((((double) M_PI) * l), 3.0)))))))));
} else {
tmp = (((double) M_PI) * l) - (1.0 / (F * (t_1 - fma(((double) M_PI), t_2, (F * (0.0021164021164021165 * t_0))))));
}
return tmp;
}



Bits error versus F



Bits error versus l
if (*.f64 F F) < 1.1017335510091991e-97Initial program 43.6
Simplified42.9
Applied associate-/r*_binary6432.4
Applied clear-num_binary6432.4
Simplified32.4
Taylor expanded in l around 0 4.8
Simplified4.7
Applied log1p-expm1-u_binary643.4
Simplified3.4
if 1.1017335510091991e-97 < (*.f64 F F) Initial program 0.8
Simplified0.8
Applied associate-/r*_binary640.8
Applied clear-num_binary640.8
Simplified0.8
Taylor expanded in l around 0 0.5
Simplified0.5
Taylor expanded in l around inf 0.5
Simplified0.5
Final simplification1.6
herbie shell --seed 2021280
(FPCore (F l)
:name "VandenBroeck and Keller, Equation (6)"
:precision binary64
(- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))