\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{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sqrt[3]{\sin ky} \cdot \sqrt[3]{\sin ky}\right)}^{2} \cdot {\left(\sqrt[3]{\sin ky}\right)}^{2}, 1\right)}} + 1}}}double f(double l, double Om, double kx, double ky) {
double r32382 = 1.0;
double r32383 = 2.0;
double r32384 = r32382 / r32383;
double r32385 = l;
double r32386 = r32383 * r32385;
double r32387 = Om;
double r32388 = r32386 / r32387;
double r32389 = pow(r32388, r32383);
double r32390 = kx;
double r32391 = sin(r32390);
double r32392 = pow(r32391, r32383);
double r32393 = ky;
double r32394 = sin(r32393);
double r32395 = pow(r32394, r32383);
double r32396 = r32392 + r32395;
double r32397 = r32389 * r32396;
double r32398 = r32382 + r32397;
double r32399 = sqrt(r32398);
double r32400 = r32382 / r32399;
double r32401 = r32382 + r32400;
double r32402 = r32384 * r32401;
double r32403 = sqrt(r32402);
return r32403;
}
double f(double l, double Om, double kx, double ky) {
double r32404 = 1.0;
double r32405 = 2.0;
double r32406 = l;
double r32407 = r32405 * r32406;
double r32408 = Om;
double r32409 = r32407 / r32408;
double r32410 = pow(r32409, r32405);
double r32411 = kx;
double r32412 = sin(r32411);
double r32413 = pow(r32412, r32405);
double r32414 = ky;
double r32415 = sin(r32414);
double r32416 = cbrt(r32415);
double r32417 = r32416 * r32416;
double r32418 = pow(r32417, r32405);
double r32419 = pow(r32416, r32405);
double r32420 = r32418 * r32419;
double r32421 = r32413 + r32420;
double r32422 = fma(r32410, r32421, r32404);
double r32423 = sqrt(r32422);
double r32424 = r32404 / r32423;
double r32425 = r32424 + r32404;
double r32426 = r32405 / r32425;
double r32427 = r32404 / r32426;
double r32428 = sqrt(r32427);
return r32428;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.8
Simplified1.8
rmApplied add-cube-cbrt1.8
Applied unpow-prod-down1.8
Final simplification1.8
herbie shell --seed 2019304 +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))))))))))