\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\sqrt{\frac{1}{2} \cdot \left(\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{\frac{Om}{\ell}}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}} + 1\right)}double f(double l, double Om, double kx, double ky) {
double r725570 = 1.0;
double r725571 = 2.0;
double r725572 = r725570 / r725571;
double r725573 = l;
double r725574 = r725571 * r725573;
double r725575 = Om;
double r725576 = r725574 / r725575;
double r725577 = pow(r725576, r725571);
double r725578 = kx;
double r725579 = sin(r725578);
double r725580 = pow(r725579, r725571);
double r725581 = ky;
double r725582 = sin(r725581);
double r725583 = pow(r725582, r725571);
double r725584 = r725580 + r725583;
double r725585 = r725577 * r725584;
double r725586 = r725570 + r725585;
double r725587 = sqrt(r725586);
double r725588 = r725570 / r725587;
double r725589 = r725570 + r725588;
double r725590 = r725572 * r725589;
double r725591 = sqrt(r725590);
return r725591;
}
double f(double l, double Om, double kx, double ky) {
double r725592 = 1.0;
double r725593 = 2.0;
double r725594 = r725592 / r725593;
double r725595 = Om;
double r725596 = l;
double r725597 = r725595 / r725596;
double r725598 = r725593 / r725597;
double r725599 = pow(r725598, r725593);
double r725600 = kx;
double r725601 = sin(r725600);
double r725602 = pow(r725601, r725593);
double r725603 = ky;
double r725604 = sin(r725603);
double r725605 = pow(r725604, r725593);
double r725606 = r725602 + r725605;
double r725607 = fma(r725599, r725606, r725592);
double r725608 = sqrt(r725607);
double r725609 = r725592 / r725608;
double r725610 = r725609 + r725592;
double r725611 = r725594 * r725610;
double r725612 = sqrt(r725611);
return r725612;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.6
Simplified1.6
Final simplification1.6
herbie shell --seed 2019171 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(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))))))))))