\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}\;\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) \le -3.045394342973040561697090879356737929553 \cdot 10^{-180}:\\
\;\;\;\;\left(\left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left({\left(\sqrt[3]{d} \cdot \sqrt[3]{d}\right)}^{\left(\frac{1}{2}\right)} \cdot \left({\left(\frac{1}{\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)\right) \cdot \left(1 - \left(\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h\right) \cdot \frac{1}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r180384 = d;
double r180385 = h;
double r180386 = r180384 / r180385;
double r180387 = 1.0;
double r180388 = 2.0;
double r180389 = r180387 / r180388;
double r180390 = pow(r180386, r180389);
double r180391 = l;
double r180392 = r180384 / r180391;
double r180393 = pow(r180392, r180389);
double r180394 = r180390 * r180393;
double r180395 = M;
double r180396 = D;
double r180397 = r180395 * r180396;
double r180398 = r180388 * r180384;
double r180399 = r180397 / r180398;
double r180400 = pow(r180399, r180388);
double r180401 = r180389 * r180400;
double r180402 = r180385 / r180391;
double r180403 = r180401 * r180402;
double r180404 = r180387 - r180403;
double r180405 = r180394 * r180404;
return r180405;
}
double f(double d, double h, double l, double M, double D) {
double r180406 = d;
double r180407 = h;
double r180408 = r180406 / r180407;
double r180409 = 1.0;
double r180410 = 2.0;
double r180411 = r180409 / r180410;
double r180412 = pow(r180408, r180411);
double r180413 = l;
double r180414 = r180406 / r180413;
double r180415 = pow(r180414, r180411);
double r180416 = r180412 * r180415;
double r180417 = M;
double r180418 = D;
double r180419 = r180417 * r180418;
double r180420 = r180410 * r180406;
double r180421 = r180419 / r180420;
double r180422 = pow(r180421, r180410);
double r180423 = r180411 * r180422;
double r180424 = r180407 / r180413;
double r180425 = r180423 * r180424;
double r180426 = r180409 - r180425;
double r180427 = r180416 * r180426;
double r180428 = -3.0453943429730406e-180;
bool r180429 = r180427 <= r180428;
double r180430 = cbrt(r180406);
double r180431 = r180430 * r180430;
double r180432 = cbrt(r180407);
double r180433 = r180432 * r180432;
double r180434 = r180431 / r180433;
double r180435 = pow(r180434, r180411);
double r180436 = r180430 / r180432;
double r180437 = pow(r180436, r180411);
double r180438 = r180435 * r180437;
double r180439 = r180438 * r180415;
double r180440 = r180417 / r180410;
double r180441 = r180418 / r180406;
double r180442 = r180440 * r180441;
double r180443 = pow(r180442, r180410);
double r180444 = r180411 * r180443;
double r180445 = r180444 * r180424;
double r180446 = r180409 - r180445;
double r180447 = r180439 * r180446;
double r180448 = pow(r180431, r180411);
double r180449 = 1.0;
double r180450 = cbrt(r180413);
double r180451 = r180450 * r180450;
double r180452 = r180449 / r180451;
double r180453 = pow(r180452, r180411);
double r180454 = r180430 / r180450;
double r180455 = pow(r180454, r180411);
double r180456 = r180453 * r180455;
double r180457 = r180448 * r180456;
double r180458 = r180438 * r180457;
double r180459 = r180423 * r180407;
double r180460 = r180449 / r180413;
double r180461 = r180459 * r180460;
double r180462 = r180409 - r180461;
double r180463 = r180458 * r180462;
double r180464 = r180429 ? r180447 : r180463;
return r180464;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if (* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))) < -3.0453943429730406e-180Initial program 28.5
rmApplied add-cube-cbrt28.7
Applied add-cube-cbrt28.8
Applied times-frac28.8
Applied unpow-prod-down28.5
rmApplied times-frac29.8
if -3.0453943429730406e-180 < (* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))) Initial program 27.1
rmApplied add-cube-cbrt27.4
Applied add-cube-cbrt27.5
Applied times-frac27.5
Applied unpow-prod-down21.0
rmApplied *-un-lft-identity21.0
Applied add-cube-cbrt21.2
Applied times-frac21.2
Applied unpow-prod-down17.0
Simplified17.0
rmApplied div-inv17.0
Applied associate-*r*14.0
rmApplied add-cube-cbrt14.1
Applied *-un-lft-identity14.1
Applied cbrt-prod14.1
Applied times-frac14.1
Applied unpow-prod-down12.5
Simplified12.5
Final simplification15.6
herbie shell --seed 2019303
(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)))))