\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 -3.83023767151276997 \cdot 10^{97} \lor \neg \left(h \le 4.5669509591709906 \cdot 10^{-130}\right):\\
\;\;\;\;\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({\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) \cdot \left(1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left({\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot \left({\left(\frac{1}{\sqrt[3]{\sqrt[3]{h}} \cdot \sqrt[3]{\sqrt[3]{h}}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{\sqrt[3]{h}}}\right)}^{\left(\frac{1}{2}\right)}\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 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r291290 = d;
double r291291 = h;
double r291292 = r291290 / r291291;
double r291293 = 1.0;
double r291294 = 2.0;
double r291295 = r291293 / r291294;
double r291296 = pow(r291292, r291295);
double r291297 = l;
double r291298 = r291290 / r291297;
double r291299 = pow(r291298, r291295);
double r291300 = r291296 * r291299;
double r291301 = M;
double r291302 = D;
double r291303 = r291301 * r291302;
double r291304 = r291294 * r291290;
double r291305 = r291303 / r291304;
double r291306 = pow(r291305, r291294);
double r291307 = r291295 * r291306;
double r291308 = r291291 / r291297;
double r291309 = r291307 * r291308;
double r291310 = r291293 - r291309;
double r291311 = r291300 * r291310;
return r291311;
}
double f(double d, double h, double l, double M, double D) {
double r291312 = h;
double r291313 = -3.83023767151277e+97;
bool r291314 = r291312 <= r291313;
double r291315 = 4.5669509591709906e-130;
bool r291316 = r291312 <= r291315;
double r291317 = !r291316;
bool r291318 = r291314 || r291317;
double r291319 = 1.0;
double r291320 = cbrt(r291312);
double r291321 = r291320 * r291320;
double r291322 = r291319 / r291321;
double r291323 = 1.0;
double r291324 = 2.0;
double r291325 = r291323 / r291324;
double r291326 = pow(r291322, r291325);
double r291327 = d;
double r291328 = r291327 / r291320;
double r291329 = pow(r291328, r291325);
double r291330 = r291326 * r291329;
double r291331 = cbrt(r291327);
double r291332 = r291331 * r291331;
double r291333 = l;
double r291334 = cbrt(r291333);
double r291335 = r291334 * r291334;
double r291336 = r291332 / r291335;
double r291337 = pow(r291336, r291325);
double r291338 = r291331 / r291334;
double r291339 = pow(r291338, r291325);
double r291340 = r291337 * r291339;
double r291341 = M;
double r291342 = D;
double r291343 = r291341 * r291342;
double r291344 = r291324 * r291327;
double r291345 = r291343 / r291344;
double r291346 = pow(r291345, r291324);
double r291347 = r291325 * r291346;
double r291348 = r291347 * r291312;
double r291349 = r291348 / r291333;
double r291350 = r291323 - r291349;
double r291351 = r291340 * r291350;
double r291352 = r291330 * r291351;
double r291353 = cbrt(r291320);
double r291354 = r291353 * r291353;
double r291355 = r291319 / r291354;
double r291356 = pow(r291355, r291325);
double r291357 = r291327 / r291353;
double r291358 = pow(r291357, r291325);
double r291359 = r291356 * r291358;
double r291360 = r291326 * r291359;
double r291361 = r291360 * r291340;
double r291362 = r291312 / r291333;
double r291363 = r291347 * r291362;
double r291364 = r291323 - r291363;
double r291365 = r291361 * r291364;
double r291366 = r291318 ? r291352 : r291365;
return r291366;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if h < -3.83023767151277e+97 or 4.5669509591709906e-130 < h Initial program 25.8
rmApplied add-cube-cbrt26.0
Applied *-un-lft-identity26.0
Applied times-frac26.0
Applied unpow-prod-down24.2
rmApplied add-cube-cbrt24.3
Applied add-cube-cbrt24.4
Applied times-frac24.4
Applied unpow-prod-down21.2
rmApplied associate-*r/16.5
rmApplied associate-*l*16.7
if -3.83023767151277e+97 < h < 4.5669509591709906e-130Initial program 28.3
rmApplied add-cube-cbrt28.6
Applied *-un-lft-identity28.6
Applied times-frac28.6
Applied unpow-prod-down20.1
rmApplied add-cube-cbrt20.2
Applied add-cube-cbrt20.3
Applied times-frac20.3
Applied unpow-prod-down15.2
rmApplied add-cube-cbrt15.3
Applied *-un-lft-identity15.3
Applied times-frac15.3
Applied unpow-prod-down14.1
Final simplification15.5
herbie shell --seed 2020035 +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)))))