\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}\;M \cdot D \le 2.426480920307366 \cdot 10^{-11}:\\
\;\;\;\;\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{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(1 - \sqrt{\left(\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h\right) \cdot \frac{1}{\ell}} \cdot \sqrt{\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)\\
\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{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{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 r309490 = d;
double r309491 = h;
double r309492 = r309490 / r309491;
double r309493 = 1.0;
double r309494 = 2.0;
double r309495 = r309493 / r309494;
double r309496 = pow(r309492, r309495);
double r309497 = l;
double r309498 = r309490 / r309497;
double r309499 = pow(r309498, r309495);
double r309500 = r309496 * r309499;
double r309501 = M;
double r309502 = D;
double r309503 = r309501 * r309502;
double r309504 = r309494 * r309490;
double r309505 = r309503 / r309504;
double r309506 = pow(r309505, r309494);
double r309507 = r309495 * r309506;
double r309508 = r309491 / r309497;
double r309509 = r309507 * r309508;
double r309510 = r309493 - r309509;
double r309511 = r309500 * r309510;
return r309511;
}
double f(double d, double h, double l, double M, double D) {
double r309512 = M;
double r309513 = D;
double r309514 = r309512 * r309513;
double r309515 = 2.426480920307366e-11;
bool r309516 = r309514 <= r309515;
double r309517 = 1.0;
double r309518 = h;
double r309519 = cbrt(r309518);
double r309520 = r309519 * r309519;
double r309521 = r309517 / r309520;
double r309522 = 1.0;
double r309523 = 2.0;
double r309524 = r309522 / r309523;
double r309525 = pow(r309521, r309524);
double r309526 = d;
double r309527 = r309526 / r309519;
double r309528 = pow(r309527, r309524);
double r309529 = r309525 * r309528;
double r309530 = l;
double r309531 = cbrt(r309530);
double r309532 = r309531 * r309531;
double r309533 = r309517 / r309532;
double r309534 = pow(r309533, r309524);
double r309535 = r309526 / r309531;
double r309536 = pow(r309535, r309524);
double r309537 = r309534 * r309536;
double r309538 = r309529 * r309537;
double r309539 = r309523 * r309526;
double r309540 = r309514 / r309539;
double r309541 = pow(r309540, r309523);
double r309542 = r309524 * r309541;
double r309543 = r309542 * r309518;
double r309544 = r309517 / r309530;
double r309545 = r309543 * r309544;
double r309546 = sqrt(r309545);
double r309547 = r309546 * r309546;
double r309548 = r309522 - r309547;
double r309549 = r309538 * r309548;
double r309550 = r309518 / r309530;
double r309551 = r309542 * r309550;
double r309552 = r309522 - r309551;
double r309553 = r309537 * r309552;
double r309554 = r309529 * r309553;
double r309555 = r309516 ? r309549 : r309554;
return r309555;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if (* M D) < 2.426480920307366e-11Initial program 25.6
rmApplied add-cube-cbrt25.8
Applied *-un-lft-identity25.8
Applied times-frac25.8
Applied unpow-prod-down20.9
rmApplied add-cube-cbrt21.0
Applied *-un-lft-identity21.0
Applied times-frac21.0
Applied unpow-prod-down17.0
rmApplied div-inv17.0
Applied associate-*r*13.7
rmApplied add-sqr-sqrt13.7
if 2.426480920307366e-11 < (* M D) Initial program 33.2
rmApplied add-cube-cbrt33.4
Applied *-un-lft-identity33.4
Applied times-frac33.4
Applied unpow-prod-down27.8
rmApplied add-cube-cbrt27.9
Applied *-un-lft-identity27.9
Applied times-frac27.8
Applied unpow-prod-down26.4
rmApplied associate-*l*26.4
Final simplification15.8
herbie shell --seed 2020047 +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)))))