w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;\frac{h}{\ell} = -\infty \lor \neg \left(\frac{h}{\ell} \le -6.051505276988730809064682225880124571638 \cdot 10^{-311}\right):\\
\;\;\;\;w0 \cdot \sqrt{1}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \frac{h}{\ell}\right)}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r172536 = w0;
double r172537 = 1.0;
double r172538 = M;
double r172539 = D;
double r172540 = r172538 * r172539;
double r172541 = 2.0;
double r172542 = d;
double r172543 = r172541 * r172542;
double r172544 = r172540 / r172543;
double r172545 = pow(r172544, r172541);
double r172546 = h;
double r172547 = l;
double r172548 = r172546 / r172547;
double r172549 = r172545 * r172548;
double r172550 = r172537 - r172549;
double r172551 = sqrt(r172550);
double r172552 = r172536 * r172551;
return r172552;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r172553 = h;
double r172554 = l;
double r172555 = r172553 / r172554;
double r172556 = -inf.0;
bool r172557 = r172555 <= r172556;
double r172558 = -6.0515052769887e-311;
bool r172559 = r172555 <= r172558;
double r172560 = !r172559;
bool r172561 = r172557 || r172560;
double r172562 = w0;
double r172563 = 1.0;
double r172564 = sqrt(r172563);
double r172565 = r172562 * r172564;
double r172566 = M;
double r172567 = D;
double r172568 = r172566 * r172567;
double r172569 = 2.0;
double r172570 = d;
double r172571 = r172569 * r172570;
double r172572 = r172568 / r172571;
double r172573 = 2.0;
double r172574 = r172569 / r172573;
double r172575 = pow(r172572, r172574);
double r172576 = r172575 * r172555;
double r172577 = r172575 * r172576;
double r172578 = r172563 - r172577;
double r172579 = sqrt(r172578);
double r172580 = r172562 * r172579;
double r172581 = r172561 ? r172565 : r172580;
return r172581;
}



Bits error versus w0



Bits error versus M



Bits error versus D



Bits error versus h



Bits error versus l



Bits error versus d
Results
if (/ h l) < -inf.0 or -6.0515052769887e-311 < (/ h l) Initial program 13.6
Taylor expanded around 0 5.8
if -inf.0 < (/ h l) < -6.0515052769887e-311Initial program 14.4
rmApplied sqr-pow14.4
Applied associate-*l*12.4
Final simplification8.9
herbie shell --seed 2019323 +o rules:numerics
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
:precision binary64
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))