\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(1 + \frac{1}{\sqrt{1 + \mathsf{log1p}\left(\mathsf{expm1}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)\right)\right)}}\right)}double f(double l, double Om, double kx, double ky) {
double r57428 = 1.0;
double r57429 = 2.0;
double r57430 = r57428 / r57429;
double r57431 = l;
double r57432 = r57429 * r57431;
double r57433 = Om;
double r57434 = r57432 / r57433;
double r57435 = pow(r57434, r57429);
double r57436 = kx;
double r57437 = sin(r57436);
double r57438 = pow(r57437, r57429);
double r57439 = ky;
double r57440 = sin(r57439);
double r57441 = pow(r57440, r57429);
double r57442 = r57438 + r57441;
double r57443 = r57435 * r57442;
double r57444 = r57428 + r57443;
double r57445 = sqrt(r57444);
double r57446 = r57428 / r57445;
double r57447 = r57428 + r57446;
double r57448 = r57430 * r57447;
double r57449 = sqrt(r57448);
return r57449;
}
double f(double l, double Om, double kx, double ky) {
double r57450 = 1.0;
double r57451 = 2.0;
double r57452 = r57450 / r57451;
double r57453 = l;
double r57454 = r57451 * r57453;
double r57455 = Om;
double r57456 = r57454 / r57455;
double r57457 = pow(r57456, r57451);
double r57458 = kx;
double r57459 = sin(r57458);
double r57460 = pow(r57459, r57451);
double r57461 = ky;
double r57462 = sin(r57461);
double r57463 = pow(r57462, r57451);
double r57464 = r57460 + r57463;
double r57465 = r57457 * r57464;
double r57466 = expm1(r57465);
double r57467 = log1p(r57466);
double r57468 = r57450 + r57467;
double r57469 = sqrt(r57468);
double r57470 = r57450 / r57469;
double r57471 = r57450 + r57470;
double r57472 = r57452 * r57471;
double r57473 = sqrt(r57472);
return r57473;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.8
rmApplied log1p-expm1-u1.9
Final simplification1.9
herbie shell --seed 2020047 +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))))))))))