\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\begin{array}{l}
\mathbf{if}\;h \le 8.180496338818137 \cdot 10^{-209} \lor \neg \left(h \le 1.05513833187583856 \cdot 10^{-142}\right):\\
\;\;\;\;\left(\left({\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2}\right) \cdot h}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left({\left({d}^{1}\right)}^{1} \cdot {\left(\frac{1}{{h}^{1} \cdot {\ell}^{1}}\right)}^{0.5}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r242288 = d;
double r242289 = h;
double r242290 = r242288 / r242289;
double r242291 = 1.0;
double r242292 = 2.0;
double r242293 = r242291 / r242292;
double r242294 = pow(r242290, r242293);
double r242295 = l;
double r242296 = r242288 / r242295;
double r242297 = pow(r242296, r242293);
double r242298 = r242294 * r242297;
double r242299 = M;
double r242300 = D;
double r242301 = r242299 * r242300;
double r242302 = r242292 * r242288;
double r242303 = r242301 / r242302;
double r242304 = pow(r242303, r242292);
double r242305 = r242293 * r242304;
double r242306 = r242289 / r242295;
double r242307 = r242305 * r242306;
double r242308 = r242291 - r242307;
double r242309 = r242298 * r242308;
return r242309;
}
double f(double d, double h, double l, double M, double D) {
double r242310 = h;
double r242311 = 8.180496338818137e-209;
bool r242312 = r242310 <= r242311;
double r242313 = 1.0551383318758386e-142;
bool r242314 = r242310 <= r242313;
double r242315 = !r242314;
bool r242316 = r242312 || r242315;
double r242317 = 1.0;
double r242318 = cbrt(r242310);
double r242319 = r242318 * r242318;
double r242320 = r242317 / r242319;
double r242321 = 1.0;
double r242322 = 2.0;
double r242323 = r242321 / r242322;
double r242324 = pow(r242320, r242323);
double r242325 = d;
double r242326 = r242325 / r242318;
double r242327 = pow(r242326, r242323);
double r242328 = r242324 * r242327;
double r242329 = cbrt(r242325);
double r242330 = r242329 * r242329;
double r242331 = l;
double r242332 = cbrt(r242331);
double r242333 = r242332 * r242332;
double r242334 = r242330 / r242333;
double r242335 = pow(r242334, r242323);
double r242336 = r242329 / r242332;
double r242337 = pow(r242336, r242323);
double r242338 = r242335 * r242337;
double r242339 = r242328 * r242338;
double r242340 = M;
double r242341 = r242322 * r242325;
double r242342 = D;
double r242343 = r242341 / r242342;
double r242344 = r242340 / r242343;
double r242345 = pow(r242344, r242322);
double r242346 = r242323 * r242345;
double r242347 = r242346 * r242310;
double r242348 = r242347 / r242331;
double r242349 = r242321 - r242348;
double r242350 = r242339 * r242349;
double r242351 = pow(r242325, r242321);
double r242352 = pow(r242351, r242321);
double r242353 = pow(r242310, r242321);
double r242354 = pow(r242331, r242321);
double r242355 = r242353 * r242354;
double r242356 = r242317 / r242355;
double r242357 = 0.5;
double r242358 = pow(r242356, r242357);
double r242359 = r242352 * r242358;
double r242360 = r242321 * r242359;
double r242361 = r242316 ? r242350 : r242360;
return r242361;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if h < 8.180496338818137e-209 or 1.0551383318758386e-142 < h Initial program 26.5
rmApplied add-cube-cbrt26.8
Applied *-un-lft-identity26.8
Applied times-frac26.8
Applied unpow-prod-down22.1
rmApplied add-cube-cbrt22.2
Applied add-cube-cbrt22.3
Applied times-frac22.3
Applied unpow-prod-down18.4
rmApplied associate-*r/15.5
rmApplied associate-/l*15.8
if 8.180496338818137e-209 < h < 1.0551383318758386e-142Initial program 31.3
rmApplied add-cube-cbrt31.5
Applied *-un-lft-identity31.5
Applied times-frac31.5
Applied unpow-prod-down21.1
Taylor expanded around 0 21.5
Final simplification16.1
herbie shell --seed 2020027 +o rules:numerics
(FPCore (d h l M D)
:name "Henrywood and Agarwal, Equation (12)"
:precision binary64
(* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))))