w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;\ell \le -1.066168939072587 \cdot 10^{-22}:\\
\;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\
\mathbf{elif}\;\ell \le 1.1961345055262083 \cdot 10^{+26}:\\
\;\;\;\;{\left(1 - \frac{h \cdot \left(\frac{\frac{M}{2}}{\frac{d}{D}} \cdot \frac{\frac{M}{2}}{\frac{d}{D}}\right)}{\ell}\right)}^{\frac{1}{2}} \cdot w0\\
\mathbf{else}:\\
\;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r36658953 = w0;
double r36658954 = 1.0;
double r36658955 = M;
double r36658956 = D;
double r36658957 = r36658955 * r36658956;
double r36658958 = 2.0;
double r36658959 = d;
double r36658960 = r36658958 * r36658959;
double r36658961 = r36658957 / r36658960;
double r36658962 = pow(r36658961, r36658958);
double r36658963 = h;
double r36658964 = l;
double r36658965 = r36658963 / r36658964;
double r36658966 = r36658962 * r36658965;
double r36658967 = r36658954 - r36658966;
double r36658968 = sqrt(r36658967);
double r36658969 = r36658953 * r36658968;
return r36658969;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r36658970 = l;
double r36658971 = -1.066168939072587e-22;
bool r36658972 = r36658970 <= r36658971;
double r36658973 = 1.0;
double r36658974 = M;
double r36658975 = D;
double r36658976 = r36658974 * r36658975;
double r36658977 = d;
double r36658978 = 2.0;
double r36658979 = r36658977 * r36658978;
double r36658980 = r36658976 / r36658979;
double r36658981 = h;
double r36658982 = r36658980 * r36658981;
double r36658983 = r36658982 / r36658970;
double r36658984 = r36658980 * r36658983;
double r36658985 = r36658973 - r36658984;
double r36658986 = sqrt(r36658985);
double r36658987 = w0;
double r36658988 = r36658986 * r36658987;
double r36658989 = 1.1961345055262083e+26;
bool r36658990 = r36658970 <= r36658989;
double r36658991 = r36658974 / r36658978;
double r36658992 = r36658977 / r36658975;
double r36658993 = r36658991 / r36658992;
double r36658994 = r36658993 * r36658993;
double r36658995 = r36658981 * r36658994;
double r36658996 = r36658995 / r36658970;
double r36658997 = r36658973 - r36658996;
double r36658998 = 0.5;
double r36658999 = pow(r36658997, r36658998);
double r36659000 = r36658999 * r36658987;
double r36659001 = r36658990 ? r36659000 : r36658988;
double r36659002 = r36658972 ? r36658988 : r36659001;
return r36659002;
}



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 l < -1.066168939072587e-22 or 1.1961345055262083e+26 < l Initial program 9.6
Simplified7.2
rmApplied associate-*l/6.8
if -1.066168939072587e-22 < l < 1.1961345055262083e+26Initial program 18.2
Simplified17.8
rmApplied times-frac18.3
rmApplied pow118.3
Applied sqrt-pow118.2
Simplified9.9
Final simplification8.2
herbie shell --seed 2019112 +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))))))