\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{\left(\frac{1}{\left(\sqrt[3]{\sqrt{\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]{\sqrt{\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]{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}} + 1\right) \cdot \frac{1}{2}}double f(double l, double Om, double kx, double ky) {
double r50473 = 1.0;
double r50474 = 2.0;
double r50475 = r50473 / r50474;
double r50476 = l;
double r50477 = r50474 * r50476;
double r50478 = Om;
double r50479 = r50477 / r50478;
double r50480 = pow(r50479, r50474);
double r50481 = kx;
double r50482 = sin(r50481);
double r50483 = pow(r50482, r50474);
double r50484 = ky;
double r50485 = sin(r50484);
double r50486 = pow(r50485, r50474);
double r50487 = r50483 + r50486;
double r50488 = r50480 * r50487;
double r50489 = r50473 + r50488;
double r50490 = sqrt(r50489);
double r50491 = r50473 / r50490;
double r50492 = r50473 + r50491;
double r50493 = r50475 * r50492;
double r50494 = sqrt(r50493);
return r50494;
}
double f(double l, double Om, double kx, double ky) {
double r50495 = 1.0;
double r50496 = 2.0;
double r50497 = l;
double r50498 = r50496 * r50497;
double r50499 = Om;
double r50500 = r50498 / r50499;
double r50501 = pow(r50500, r50496);
double r50502 = kx;
double r50503 = sin(r50502);
double r50504 = pow(r50503, r50496);
double r50505 = ky;
double r50506 = sin(r50505);
double r50507 = pow(r50506, r50496);
double r50508 = r50504 + r50507;
double r50509 = fma(r50501, r50508, r50495);
double r50510 = sqrt(r50509);
double r50511 = cbrt(r50510);
double r50512 = r50511 * r50511;
double r50513 = r50512 * r50511;
double r50514 = r50495 / r50513;
double r50515 = r50514 + r50495;
double r50516 = r50495 / r50496;
double r50517 = r50515 * r50516;
double r50518 = sqrt(r50517);
return r50518;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.6
Simplified1.6
rmApplied add-cube-cbrt1.6
Final simplification1.6
herbie shell --seed 2020042 +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))))))))))