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 -6.618800651430147 \cdot 10^{+226}:\\
\;\;\;\;\sqrt{1 - \frac{\left(\frac{D \cdot M}{2 \cdot d} \cdot h\right) \cdot \left(D \cdot M\right)}{\left(2 \cdot d\right) \cdot \ell}} \cdot w0\\
\mathbf{elif}\;\frac{h}{\ell} \le -9.099471666860626 \cdot 10^{-303}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{D \cdot M}{2 \cdot d} \cdot \left(\frac{h}{\ell} \cdot \frac{D \cdot M}{2 \cdot d}\right)}\\
\mathbf{else}:\\
\;\;\;\;w0\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r47560970 = w0;
double r47560971 = 1.0;
double r47560972 = M;
double r47560973 = D;
double r47560974 = r47560972 * r47560973;
double r47560975 = 2.0;
double r47560976 = d;
double r47560977 = r47560975 * r47560976;
double r47560978 = r47560974 / r47560977;
double r47560979 = pow(r47560978, r47560975);
double r47560980 = h;
double r47560981 = l;
double r47560982 = r47560980 / r47560981;
double r47560983 = r47560979 * r47560982;
double r47560984 = r47560971 - r47560983;
double r47560985 = sqrt(r47560984);
double r47560986 = r47560970 * r47560985;
return r47560986;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r47560987 = h;
double r47560988 = l;
double r47560989 = r47560987 / r47560988;
double r47560990 = -6.618800651430147e+226;
bool r47560991 = r47560989 <= r47560990;
double r47560992 = 1.0;
double r47560993 = D;
double r47560994 = M;
double r47560995 = r47560993 * r47560994;
double r47560996 = 2.0;
double r47560997 = d;
double r47560998 = r47560996 * r47560997;
double r47560999 = r47560995 / r47560998;
double r47561000 = r47560999 * r47560987;
double r47561001 = r47561000 * r47560995;
double r47561002 = r47560998 * r47560988;
double r47561003 = r47561001 / r47561002;
double r47561004 = r47560992 - r47561003;
double r47561005 = sqrt(r47561004);
double r47561006 = w0;
double r47561007 = r47561005 * r47561006;
double r47561008 = -9.099471666860626e-303;
bool r47561009 = r47560989 <= r47561008;
double r47561010 = r47560989 * r47560999;
double r47561011 = r47560999 * r47561010;
double r47561012 = r47560992 - r47561011;
double r47561013 = sqrt(r47561012);
double r47561014 = r47561006 * r47561013;
double r47561015 = r47561009 ? r47561014 : r47561006;
double r47561016 = r47560991 ? r47561007 : r47561015;
return r47561016;
}



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) < -6.618800651430147e+226Initial program 42.3
Simplified42.3
rmApplied associate-*l/42.7
Applied frac-times23.7
rmApplied associate-*l*22.4
if -6.618800651430147e+226 < (/ h l) < -9.099471666860626e-303Initial program 12.7
Simplified12.7
rmApplied associate-*l*10.9
if -9.099471666860626e-303 < (/ h l) Initial program 7.2
Simplified7.2
Taylor expanded around 0 2.5
Final simplification8.0
herbie shell --seed 2019121
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))