\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}\;h \le 8.180496338818137 \cdot 10^{-209} \lor \neg \left(h \le 1.05513833187583856 \cdot 10^{-142}\right):\\
\;\;\;\;\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}{\frac{2 \cdot d}{D}}\right)}^{2}\right) \cdot h}{2 \cdot \ell}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left({\left({d}^{1}\right)}^{1} \cdot {\left(\frac{1}{{h}^{1} \cdot {\ell}^{1}}\right)}^{0.5}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r235712 = d;
double r235713 = h;
double r235714 = r235712 / r235713;
double r235715 = 1.0;
double r235716 = 2.0;
double r235717 = r235715 / r235716;
double r235718 = pow(r235714, r235717);
double r235719 = l;
double r235720 = r235712 / r235719;
double r235721 = pow(r235720, r235717);
double r235722 = r235718 * r235721;
double r235723 = M;
double r235724 = D;
double r235725 = r235723 * r235724;
double r235726 = r235716 * r235712;
double r235727 = r235725 / r235726;
double r235728 = pow(r235727, r235716);
double r235729 = r235717 * r235728;
double r235730 = r235713 / r235719;
double r235731 = r235729 * r235730;
double r235732 = r235715 - r235731;
double r235733 = r235722 * r235732;
return r235733;
}
double f(double d, double h, double l, double M, double D) {
double r235734 = h;
double r235735 = 8.180496338818137e-209;
bool r235736 = r235734 <= r235735;
double r235737 = 1.0551383318758386e-142;
bool r235738 = r235734 <= r235737;
double r235739 = !r235738;
bool r235740 = r235736 || r235739;
double r235741 = 1.0;
double r235742 = cbrt(r235734);
double r235743 = r235742 * r235742;
double r235744 = r235741 / r235743;
double r235745 = 1.0;
double r235746 = 2.0;
double r235747 = r235745 / r235746;
double r235748 = pow(r235744, r235747);
double r235749 = d;
double r235750 = r235749 / r235742;
double r235751 = pow(r235750, r235747);
double r235752 = r235748 * r235751;
double r235753 = cbrt(r235749);
double r235754 = r235753 * r235753;
double r235755 = l;
double r235756 = cbrt(r235755);
double r235757 = r235756 * r235756;
double r235758 = r235754 / r235757;
double r235759 = pow(r235758, r235747);
double r235760 = r235753 / r235756;
double r235761 = pow(r235760, r235747);
double r235762 = r235759 * r235761;
double r235763 = r235752 * r235762;
double r235764 = M;
double r235765 = r235746 * r235749;
double r235766 = D;
double r235767 = r235765 / r235766;
double r235768 = r235764 / r235767;
double r235769 = pow(r235768, r235746);
double r235770 = r235745 * r235769;
double r235771 = r235770 * r235734;
double r235772 = r235746 * r235755;
double r235773 = r235771 / r235772;
double r235774 = r235745 - r235773;
double r235775 = r235763 * r235774;
double r235776 = pow(r235749, r235745);
double r235777 = pow(r235776, r235745);
double r235778 = pow(r235734, r235745);
double r235779 = pow(r235755, r235745);
double r235780 = r235778 * r235779;
double r235781 = r235741 / r235780;
double r235782 = 0.5;
double r235783 = pow(r235781, r235782);
double r235784 = r235777 * r235783;
double r235785 = r235745 * r235784;
double r235786 = r235740 ? r235775 : r235785;
return r235786;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if h < 8.180496338818137e-209 or 1.0551383318758386e-142 < h Initial program 26.5
rmApplied add-cube-cbrt26.8
Applied *-un-lft-identity26.8
Applied times-frac26.8
Applied unpow-prod-down22.1
rmApplied add-cube-cbrt22.2
Applied add-cube-cbrt22.3
Applied times-frac22.3
Applied unpow-prod-down18.4
rmApplied associate-*l/18.4
Applied frac-times15.5
rmApplied associate-/l*15.8
if 8.180496338818137e-209 < h < 1.0551383318758386e-142Initial program 31.3
rmApplied add-cube-cbrt31.5
Applied *-un-lft-identity31.5
Applied times-frac31.5
Applied unpow-prod-down21.1
Taylor expanded around 0 21.5
Final simplification16.1
herbie shell --seed 2020027
(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)))))