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 -2.282180062770275197908078530250940945557 \cdot 10^{149}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{1}{\ell} \cdot \left({\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h\right)}\\
\mathbf{elif}\;\frac{h}{\ell} \le -2.53200167457589704840317226177229055452 \cdot 10^{-63}:\\
\;\;\;\;\left(w0 \cdot \sqrt{\sqrt{1 - {\left(\frac{D \cdot M}{d \cdot 2}\right)}^{2} \cdot \frac{h}{\ell}}}\right) \cdot \sqrt{\sqrt{1 - {\left(\frac{D \cdot M}{d \cdot 2}\right)}^{2} \cdot \frac{h}{\ell}}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left(\left(h \cdot {\left(\frac{D \cdot M}{d \cdot 2}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot \frac{1}{\ell}\right) \cdot {\left(\left(D \cdot M\right) \cdot \frac{1}{d \cdot 2}\right)}^{\left(\frac{2}{2}\right)}}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r5089196 = w0;
double r5089197 = 1.0;
double r5089198 = M;
double r5089199 = D;
double r5089200 = r5089198 * r5089199;
double r5089201 = 2.0;
double r5089202 = d;
double r5089203 = r5089201 * r5089202;
double r5089204 = r5089200 / r5089203;
double r5089205 = pow(r5089204, r5089201);
double r5089206 = h;
double r5089207 = l;
double r5089208 = r5089206 / r5089207;
double r5089209 = r5089205 * r5089208;
double r5089210 = r5089197 - r5089209;
double r5089211 = sqrt(r5089210);
double r5089212 = r5089196 * r5089211;
return r5089212;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r5089213 = h;
double r5089214 = l;
double r5089215 = r5089213 / r5089214;
double r5089216 = -2.282180062770275e+149;
bool r5089217 = r5089215 <= r5089216;
double r5089218 = w0;
double r5089219 = 1.0;
double r5089220 = 1.0;
double r5089221 = r5089220 / r5089214;
double r5089222 = M;
double r5089223 = 2.0;
double r5089224 = r5089222 / r5089223;
double r5089225 = D;
double r5089226 = d;
double r5089227 = r5089225 / r5089226;
double r5089228 = r5089224 * r5089227;
double r5089229 = pow(r5089228, r5089223);
double r5089230 = r5089229 * r5089213;
double r5089231 = r5089221 * r5089230;
double r5089232 = r5089219 - r5089231;
double r5089233 = sqrt(r5089232);
double r5089234 = r5089218 * r5089233;
double r5089235 = -2.532001674575897e-63;
bool r5089236 = r5089215 <= r5089235;
double r5089237 = r5089225 * r5089222;
double r5089238 = r5089226 * r5089223;
double r5089239 = r5089237 / r5089238;
double r5089240 = pow(r5089239, r5089223);
double r5089241 = r5089240 * r5089215;
double r5089242 = r5089219 - r5089241;
double r5089243 = sqrt(r5089242);
double r5089244 = sqrt(r5089243);
double r5089245 = r5089218 * r5089244;
double r5089246 = r5089245 * r5089244;
double r5089247 = 2.0;
double r5089248 = r5089223 / r5089247;
double r5089249 = pow(r5089239, r5089248);
double r5089250 = r5089213 * r5089249;
double r5089251 = r5089250 * r5089221;
double r5089252 = r5089220 / r5089238;
double r5089253 = r5089237 * r5089252;
double r5089254 = pow(r5089253, r5089248);
double r5089255 = r5089251 * r5089254;
double r5089256 = r5089219 - r5089255;
double r5089257 = sqrt(r5089256);
double r5089258 = r5089218 * r5089257;
double r5089259 = r5089236 ? r5089246 : r5089258;
double r5089260 = r5089217 ? r5089234 : r5089259;
return r5089260;
}



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) < -2.282180062770275e+149Initial program 37.0
rmApplied div-inv37.0
Applied associate-*r*21.8
rmApplied times-frac21.9
if -2.282180062770275e+149 < (/ h l) < -2.532001674575897e-63Initial program 13.0
rmApplied add-sqr-sqrt13.0
Applied sqrt-prod13.1
Applied associate-*r*13.1
if -2.532001674575897e-63 < (/ h l) Initial program 9.6
rmApplied div-inv9.6
Applied associate-*r*7.3
rmApplied sqr-pow7.3
Applied associate-*l*5.5
rmApplied associate-*l*4.4
rmApplied div-inv4.4
Final simplification8.5
herbie shell --seed 2019200 +o rules:numerics
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))