\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{\log \left(e^{\frac{\frac{1}{2}}{\sqrt{\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \left(\left(\frac{2}{Om} \cdot \ell\right) \cdot \left(\frac{2}{Om} \cdot \ell\right)\right) + 1}}}\right) + \frac{1}{2}}double f(double l, double Om, double kx, double ky) {
double r14874563 = 1.0;
double r14874564 = 2.0;
double r14874565 = r14874563 / r14874564;
double r14874566 = l;
double r14874567 = r14874564 * r14874566;
double r14874568 = Om;
double r14874569 = r14874567 / r14874568;
double r14874570 = pow(r14874569, r14874564);
double r14874571 = kx;
double r14874572 = sin(r14874571);
double r14874573 = pow(r14874572, r14874564);
double r14874574 = ky;
double r14874575 = sin(r14874574);
double r14874576 = pow(r14874575, r14874564);
double r14874577 = r14874573 + r14874576;
double r14874578 = r14874570 * r14874577;
double r14874579 = r14874563 + r14874578;
double r14874580 = sqrt(r14874579);
double r14874581 = r14874563 / r14874580;
double r14874582 = r14874563 + r14874581;
double r14874583 = r14874565 * r14874582;
double r14874584 = sqrt(r14874583);
return r14874584;
}
double f(double l, double Om, double kx, double ky) {
double r14874585 = 0.5;
double r14874586 = ky;
double r14874587 = sin(r14874586);
double r14874588 = r14874587 * r14874587;
double r14874589 = kx;
double r14874590 = sin(r14874589);
double r14874591 = r14874590 * r14874590;
double r14874592 = r14874588 + r14874591;
double r14874593 = 2.0;
double r14874594 = Om;
double r14874595 = r14874593 / r14874594;
double r14874596 = l;
double r14874597 = r14874595 * r14874596;
double r14874598 = r14874597 * r14874597;
double r14874599 = r14874592 * r14874598;
double r14874600 = 1.0;
double r14874601 = r14874599 + r14874600;
double r14874602 = sqrt(r14874601);
double r14874603 = r14874585 / r14874602;
double r14874604 = exp(r14874603);
double r14874605 = log(r14874604);
double r14874606 = r14874605 + r14874585;
double r14874607 = sqrt(r14874606);
return r14874607;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Results
Initial program 1.6
Simplified1.6
rmApplied add-log-exp1.6
Final simplification1.6
herbie shell --seed 2019104
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))