\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}{\frac{2}{\frac{1}{\sqrt{\left(\sqrt[3]{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)} \cdot \sqrt[3]{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}} + 1}}}double f(double l, double Om, double kx, double ky) {
double r52543 = 1.0;
double r52544 = 2.0;
double r52545 = r52543 / r52544;
double r52546 = l;
double r52547 = r52544 * r52546;
double r52548 = Om;
double r52549 = r52547 / r52548;
double r52550 = pow(r52549, r52544);
double r52551 = kx;
double r52552 = sin(r52551);
double r52553 = pow(r52552, r52544);
double r52554 = ky;
double r52555 = sin(r52554);
double r52556 = pow(r52555, r52544);
double r52557 = r52553 + r52556;
double r52558 = r52550 * r52557;
double r52559 = r52543 + r52558;
double r52560 = sqrt(r52559);
double r52561 = r52543 / r52560;
double r52562 = r52543 + r52561;
double r52563 = r52545 * r52562;
double r52564 = sqrt(r52563);
return r52564;
}
double f(double l, double Om, double kx, double ky) {
double r52565 = 1.0;
double r52566 = 2.0;
double r52567 = l;
double r52568 = r52566 * r52567;
double r52569 = Om;
double r52570 = r52568 / r52569;
double r52571 = pow(r52570, r52566);
double r52572 = kx;
double r52573 = sin(r52572);
double r52574 = pow(r52573, r52566);
double r52575 = ky;
double r52576 = sin(r52575);
double r52577 = pow(r52576, r52566);
double r52578 = r52574 + r52577;
double r52579 = fma(r52571, r52578, r52565);
double r52580 = cbrt(r52579);
double r52581 = r52580 * r52580;
double r52582 = r52581 * r52580;
double r52583 = sqrt(r52582);
double r52584 = r52565 / r52583;
double r52585 = r52584 + r52565;
double r52586 = r52566 / r52585;
double r52587 = r52565 / r52586;
double r52588 = sqrt(r52587);
return r52588;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.7
Simplified1.7
rmApplied add-cube-cbrt1.7
Final simplification1.7
herbie shell --seed 2019325 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
:precision binary64
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))