\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 -6.0268064309520738 \cdot 10^{70}:\\
\;\;\;\;\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}{\frac{2 \cdot d}{D}}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\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({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{1}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\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)\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r243640 = d;
double r243641 = h;
double r243642 = r243640 / r243641;
double r243643 = 1.0;
double r243644 = 2.0;
double r243645 = r243643 / r243644;
double r243646 = pow(r243642, r243645);
double r243647 = l;
double r243648 = r243640 / r243647;
double r243649 = pow(r243648, r243645);
double r243650 = r243646 * r243649;
double r243651 = M;
double r243652 = D;
double r243653 = r243651 * r243652;
double r243654 = r243644 * r243640;
double r243655 = r243653 / r243654;
double r243656 = pow(r243655, r243644);
double r243657 = r243645 * r243656;
double r243658 = r243641 / r243647;
double r243659 = r243657 * r243658;
double r243660 = r243643 - r243659;
double r243661 = r243650 * r243660;
return r243661;
}
double f(double d, double h, double l, double M, double D) {
double r243662 = M;
double r243663 = D;
double r243664 = r243662 * r243663;
double r243665 = -6.026806430952074e+70;
bool r243666 = r243664 <= r243665;
double r243667 = d;
double r243668 = h;
double r243669 = r243667 / r243668;
double r243670 = 1.0;
double r243671 = 2.0;
double r243672 = r243670 / r243671;
double r243673 = pow(r243669, r243672);
double r243674 = l;
double r243675 = r243667 / r243674;
double r243676 = pow(r243675, r243672);
double r243677 = r243673 * r243676;
double r243678 = r243671 * r243667;
double r243679 = r243678 / r243663;
double r243680 = r243662 / r243679;
double r243681 = pow(r243680, r243671);
double r243682 = r243672 * r243681;
double r243683 = r243668 / r243674;
double r243684 = r243682 * r243683;
double r243685 = r243670 - r243684;
double r243686 = r243677 * r243685;
double r243687 = cbrt(r243667);
double r243688 = r243687 * r243687;
double r243689 = cbrt(r243668);
double r243690 = r243689 * r243689;
double r243691 = r243688 / r243690;
double r243692 = pow(r243691, r243672);
double r243693 = r243687 / r243689;
double r243694 = pow(r243693, r243672);
double r243695 = r243692 * r243694;
double r243696 = 1.0;
double r243697 = r243688 / r243696;
double r243698 = pow(r243697, r243672);
double r243699 = r243687 / r243674;
double r243700 = pow(r243699, r243672);
double r243701 = r243698 * r243700;
double r243702 = r243664 / r243678;
double r243703 = pow(r243702, r243671);
double r243704 = r243672 * r243703;
double r243705 = r243704 * r243668;
double r243706 = r243696 / r243674;
double r243707 = r243705 * r243706;
double r243708 = r243670 - r243707;
double r243709 = r243701 * r243708;
double r243710 = r243695 * r243709;
double r243711 = r243666 ? r243686 : r243710;
return r243711;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if (* M D) < -6.026806430952074e+70Initial program 37.6
rmApplied associate-/l*36.5
if -6.026806430952074e+70 < (* M D) Initial program 25.4
rmApplied add-cube-cbrt25.7
Applied add-cube-cbrt25.8
Applied times-frac25.8
Applied unpow-prod-down20.7
rmApplied *-un-lft-identity20.7
Applied add-cube-cbrt20.9
Applied times-frac20.9
Applied unpow-prod-down17.0
rmApplied div-inv17.0
Applied associate-*r*14.1
rmApplied associate-*l*14.4
Final simplification16.4
herbie shell --seed 2020062
(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)))))