\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 + e^{\mathsf{fma}\left(\log \left(\frac{2 \cdot \ell}{Om}\right), 2, \log \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)\right)}}}\right)}double f(double l, double Om, double kx, double ky) {
double r36593 = 1.0;
double r36594 = 2.0;
double r36595 = r36593 / r36594;
double r36596 = l;
double r36597 = r36594 * r36596;
double r36598 = Om;
double r36599 = r36597 / r36598;
double r36600 = pow(r36599, r36594);
double r36601 = kx;
double r36602 = sin(r36601);
double r36603 = pow(r36602, r36594);
double r36604 = ky;
double r36605 = sin(r36604);
double r36606 = pow(r36605, r36594);
double r36607 = r36603 + r36606;
double r36608 = r36600 * r36607;
double r36609 = r36593 + r36608;
double r36610 = sqrt(r36609);
double r36611 = r36593 / r36610;
double r36612 = r36593 + r36611;
double r36613 = r36595 * r36612;
double r36614 = sqrt(r36613);
return r36614;
}
double f(double l, double Om, double kx, double ky) {
double r36615 = 1.0;
double r36616 = 2.0;
double r36617 = r36615 / r36616;
double r36618 = l;
double r36619 = r36616 * r36618;
double r36620 = Om;
double r36621 = r36619 / r36620;
double r36622 = log(r36621);
double r36623 = kx;
double r36624 = sin(r36623);
double r36625 = pow(r36624, r36616);
double r36626 = ky;
double r36627 = sin(r36626);
double r36628 = pow(r36627, r36616);
double r36629 = r36625 + r36628;
double r36630 = log(r36629);
double r36631 = fma(r36622, r36616, r36630);
double r36632 = exp(r36631);
double r36633 = r36615 + r36632;
double r36634 = sqrt(r36633);
double r36635 = r36615 / r36634;
double r36636 = r36615 + r36635;
double r36637 = r36617 * r36636;
double r36638 = sqrt(r36637);
return r36638;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.1
rmApplied add-exp-log1.1
Applied add-exp-log32.1
Applied add-exp-log32.1
Applied add-exp-log32.1
Applied prod-exp32.1
Applied div-exp32.1
Applied pow-exp32.1
Applied prod-exp31.9
Simplified0.8
Final simplification0.8
herbie shell --seed 2020046 +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))))))))))