\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\sin kx}^{2} + {\sin ky}^{2}\right)}}\right)}
\begin{array}{l}
t_0 := {\left(\frac{2 \cdot \ell}{Om}\right)}^{2}\\
\mathbf{if}\;t_0 \leq 1.0718034203244173 \cdot 10^{+245}:\\
\;\;\;\;\sqrt{0.5 + \frac{0.5}{\sqrt{\mathsf{fma}\left(t_0, {\sin kx}^{2} + {\sin ky}^{2}, 1\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.5 + \frac{0.5}{\mathsf{fma}\left(2, \frac{\ell \cdot \sin ky}{Om}, 0.25 \cdot \frac{Om}{\ell \cdot ky}\right)}}\\
\end{array}
(FPCore (l Om kx ky)
:precision binary64
(sqrt
(*
(/ 1.0 2.0)
(+
1.0
(/
1.0
(sqrt
(+
1.0
(*
(pow (/ (* 2.0 l) Om) 2.0)
(+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))(FPCore (l Om kx ky)
:precision binary64
(let* ((t_0 (pow (/ (* 2.0 l) Om) 2.0)))
(if (<= t_0 1.0718034203244173e+245)
(sqrt
(+
0.5
(/ 0.5 (sqrt (fma t_0 (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)) 1.0)))))
(sqrt
(+
0.5
(/ 0.5 (fma 2.0 (/ (* l (sin ky)) Om) (* 0.25 (/ Om (* l ky))))))))))double code(double l, double Om, double kx, double ky) {
return sqrt((1.0 / 2.0) * (1.0 + (1.0 / sqrt(1.0 + (pow(((2.0 * l) / Om), 2.0) * (pow(sin(kx), 2.0) + pow(sin(ky), 2.0)))))));
}
double code(double l, double Om, double kx, double ky) {
double t_0 = pow(((2.0 * l) / Om), 2.0);
double tmp;
if (t_0 <= 1.0718034203244173e+245) {
tmp = sqrt(0.5 + (0.5 / sqrt(fma(t_0, (pow(sin(kx), 2.0) + pow(sin(ky), 2.0)), 1.0))));
} else {
tmp = sqrt(0.5 + (0.5 / fma(2.0, ((l * sin(ky)) / Om), (0.25 * (Om / (l * ky))))));
}
return tmp;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
if (pow.f64 (/.f64 (*.f64 2 l) Om) 2) < 1.07180342032441729e245Initial program 0.0
Simplified0.0
if 1.07180342032441729e245 < (pow.f64 (/.f64 (*.f64 2 l) Om) 2) Initial program 3.5
Simplified3.5
Taylor expanded in Om around 0 15.2
Simplified2.9
Taylor expanded in kx around 0 1.7
Simplified1.7
Taylor expanded in ky around 0 1.7
Final simplification0.6
herbie shell --seed 2022039
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
:precision binary64
(sqrt (* (/ 1.0 2.0) (+ 1.0 (/ 1.0 (sqrt (+ 1.0 (* (pow (/ (* 2.0 l) Om) 2.0) (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))