\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(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\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 r452 = d;
double r453 = h;
double r454 = r452 / r453;
double r455 = 1.0;
double r456 = 2.0;
double r457 = r455 / r456;
double r458 = pow(r454, r457);
double r459 = l;
double r460 = r452 / r459;
double r461 = pow(r460, r457);
double r462 = r458 * r461;
double r463 = M;
double r464 = D;
double r465 = r463 * r464;
double r466 = r456 * r452;
double r467 = r465 / r466;
double r468 = pow(r467, r456);
double r469 = r457 * r468;
double r470 = r453 / r459;
double r471 = r469 * r470;
double r472 = r455 - r471;
double r473 = r462 * r472;
return r473;
}
double f(double d, double h, double l, double M, double D) {
double r474 = l;
double r475 = -0.6407164494093437;
bool r476 = r474 <= r475;
double r477 = 1.0;
double r478 = h;
double r479 = cbrt(r478);
double r480 = r479 * r479;
double r481 = r477 / r480;
double r482 = 1.0;
double r483 = 2.0;
double r484 = r482 / r483;
double r485 = pow(r481, r484);
double r486 = d;
double r487 = r486 / r479;
double r488 = pow(r487, r484);
double r489 = r485 * r488;
double r490 = cbrt(r486);
double r491 = r490 * r490;
double r492 = pow(r491, r484);
double r493 = cbrt(r474);
double r494 = r493 * r493;
double r495 = r477 / r494;
double r496 = pow(r495, r484);
double r497 = r492 * r496;
double r498 = r490 / r493;
double r499 = pow(r498, r484);
double r500 = r497 * r499;
double r501 = r489 * r500;
double r502 = M;
double r503 = D;
double r504 = r502 * r503;
double r505 = r483 * r486;
double r506 = r504 / r505;
double r507 = pow(r506, r483);
double r508 = r484 * r507;
double r509 = r478 / r474;
double r510 = r508 * r509;
double r511 = r482 - r510;
double r512 = r501 * r511;
double r513 = 9.646710592345407e-88;
bool r514 = r474 <= r513;
double r515 = r491 / r494;
double r516 = pow(r515, r484);
double r517 = r516 * r499;
double r518 = r489 * r517;
double r519 = r508 * r478;
double r520 = r519 / r474;
double r521 = r482 - r520;
double r522 = r518 * r521;
double r523 = r517 * r511;
double r524 = r489 * r523;
double r525 = r514 ? r522 : r524;
double r526 = r476 ? r512 : r525;
return r526;
}



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-*r/10.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
(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)))))