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} \le -1.7711340644202013 \cdot 10^{+308}:\\
\;\;\;\;w0\\
\mathbf{elif}\;\frac{h}{\ell} \le -1.3952779318537435 \cdot 10^{-239}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{\left(\left(M \cdot D\right) \cdot \frac{M \cdot D}{d \cdot 2}\right) \cdot \frac{h}{\ell}}{d \cdot 2}}\\
\mathbf{else}:\\
\;\;\;\;w0\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r3828620 = w0;
double r3828621 = 1.0;
double r3828622 = M;
double r3828623 = D;
double r3828624 = r3828622 * r3828623;
double r3828625 = 2.0;
double r3828626 = d;
double r3828627 = r3828625 * r3828626;
double r3828628 = r3828624 / r3828627;
double r3828629 = pow(r3828628, r3828625);
double r3828630 = h;
double r3828631 = l;
double r3828632 = r3828630 / r3828631;
double r3828633 = r3828629 * r3828632;
double r3828634 = r3828621 - r3828633;
double r3828635 = sqrt(r3828634);
double r3828636 = r3828620 * r3828635;
return r3828636;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r3828637 = h;
double r3828638 = l;
double r3828639 = r3828637 / r3828638;
double r3828640 = -1.7711340644202013e+308;
bool r3828641 = r3828639 <= r3828640;
double r3828642 = w0;
double r3828643 = -1.3952779318537435e-239;
bool r3828644 = r3828639 <= r3828643;
double r3828645 = 1.0;
double r3828646 = M;
double r3828647 = D;
double r3828648 = r3828646 * r3828647;
double r3828649 = d;
double r3828650 = 2.0;
double r3828651 = r3828649 * r3828650;
double r3828652 = r3828648 / r3828651;
double r3828653 = r3828648 * r3828652;
double r3828654 = r3828653 * r3828639;
double r3828655 = r3828654 / r3828651;
double r3828656 = r3828645 - r3828655;
double r3828657 = sqrt(r3828656);
double r3828658 = r3828642 * r3828657;
double r3828659 = r3828644 ? r3828658 : r3828642;
double r3828660 = r3828641 ? r3828642 : r3828659;
return r3828660;
}



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) < -1.7711340644202013e+308 or -1.3952779318537435e-239 < (/ h l) Initial program 13.6
Simplified13.6
rmApplied *-un-lft-identity13.6
Applied add-cube-cbrt13.6
Applied times-frac13.6
Applied associate-*r*8.6
Simplified7.3
Taylor expanded around 0 6.5
if -1.7711340644202013e+308 < (/ h l) < -1.3952779318537435e-239Initial program 12.9
Simplified12.9
rmApplied associate-*r/13.9
Applied associate-*l/13.7
Final simplification9.6
herbie shell --seed 2019132 +o rules:numerics
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))