\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}\;\ell \le -0.640716449409343691:\\
\;\;\;\;\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({\left(\sqrt[3]{d} \cdot \sqrt[3]{d}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\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)\\
\mathbf{elif}\;\ell \le 9.64671059234540743 \cdot 10^{-88}:\\
\;\;\;\;\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(1 \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{2 \cdot \ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\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 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r384 = d;
double r385 = h;
double r386 = r384 / r385;
double r387 = 1.0;
double r388 = 2.0;
double r389 = r387 / r388;
double r390 = pow(r386, r389);
double r391 = l;
double r392 = r384 / r391;
double r393 = pow(r392, r389);
double r394 = r390 * r393;
double r395 = M;
double r396 = D;
double r397 = r395 * r396;
double r398 = r388 * r384;
double r399 = r397 / r398;
double r400 = pow(r399, r388);
double r401 = r389 * r400;
double r402 = r385 / r391;
double r403 = r401 * r402;
double r404 = r387 - r403;
double r405 = r394 * r404;
return r405;
}
double f(double d, double h, double l, double M, double D) {
double r406 = l;
double r407 = -0.6407164494093437;
bool r408 = r406 <= r407;
double r409 = 1.0;
double r410 = h;
double r411 = cbrt(r410);
double r412 = r411 * r411;
double r413 = r409 / r412;
double r414 = 1.0;
double r415 = 2.0;
double r416 = r414 / r415;
double r417 = pow(r413, r416);
double r418 = d;
double r419 = r418 / r411;
double r420 = pow(r419, r416);
double r421 = r417 * r420;
double r422 = cbrt(r418);
double r423 = r422 * r422;
double r424 = pow(r423, r416);
double r425 = cbrt(r406);
double r426 = r425 * r425;
double r427 = r409 / r426;
double r428 = pow(r427, r416);
double r429 = r424 * r428;
double r430 = r422 / r425;
double r431 = pow(r430, r416);
double r432 = r429 * r431;
double r433 = r421 * r432;
double r434 = M;
double r435 = D;
double r436 = r434 * r435;
double r437 = r415 * r418;
double r438 = r436 / r437;
double r439 = pow(r438, r415);
double r440 = r416 * r439;
double r441 = r410 / r406;
double r442 = r440 * r441;
double r443 = r414 - r442;
double r444 = r433 * r443;
double r445 = 9.646710592345407e-88;
bool r446 = r406 <= r445;
double r447 = r423 / r426;
double r448 = pow(r447, r416);
double r449 = r448 * r431;
double r450 = r421 * r449;
double r451 = r414 * r439;
double r452 = r451 * r410;
double r453 = r415 * r406;
double r454 = r452 / r453;
double r455 = r414 - r454;
double r456 = r450 * r455;
double r457 = r449 * r443;
double r458 = r421 * r457;
double r459 = r446 ? r456 : r458;
double r460 = r408 ? r444 : r459;
return r460;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -0.6407164494093437Initial program 25.9
rmApplied add-cube-cbrt26.2
Applied add-cube-cbrt26.3
Applied times-frac26.3
Applied unpow-prod-down22.3
rmApplied add-cube-cbrt22.4
Applied *-un-lft-identity22.4
Applied times-frac22.4
Applied unpow-prod-down16.7
rmApplied div-inv16.7
Applied unpow-prod-down16.3
if -0.6407164494093437 < l < 9.646710592345407e-88Initial program 28.6
rmApplied add-cube-cbrt28.9
Applied add-cube-cbrt29.0
Applied times-frac29.0
Applied unpow-prod-down23.6
rmApplied add-cube-cbrt23.6
Applied *-un-lft-identity23.6
Applied times-frac23.6
Applied unpow-prod-down21.4
rmApplied associate-*l/21.4
Applied frac-times10.2
if 9.646710592345407e-88 < l Initial program 25.6
rmApplied add-cube-cbrt25.8
Applied add-cube-cbrt25.9
Applied times-frac25.9
Applied unpow-prod-down22.9
rmApplied add-cube-cbrt23.0
Applied *-un-lft-identity23.0
Applied times-frac23.0
Applied unpow-prod-down16.9
rmApplied associate-*l*16.4
Final simplification14.5
herbie shell --seed 2020025 +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)))))