\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}\;d \le 1.47686370215769455 \cdot 10^{159}:\\
\;\;\;\;\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(\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 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\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 r249714 = d;
double r249715 = h;
double r249716 = r249714 / r249715;
double r249717 = 1.0;
double r249718 = 2.0;
double r249719 = r249717 / r249718;
double r249720 = pow(r249716, r249719);
double r249721 = l;
double r249722 = r249714 / r249721;
double r249723 = pow(r249722, r249719);
double r249724 = r249720 * r249723;
double r249725 = M;
double r249726 = D;
double r249727 = r249725 * r249726;
double r249728 = r249718 * r249714;
double r249729 = r249727 / r249728;
double r249730 = pow(r249729, r249718);
double r249731 = r249719 * r249730;
double r249732 = r249715 / r249721;
double r249733 = r249731 * r249732;
double r249734 = r249717 - r249733;
double r249735 = r249724 * r249734;
return r249735;
}
double f(double d, double h, double l, double M, double D) {
double r249736 = d;
double r249737 = 1.4768637021576945e+159;
bool r249738 = r249736 <= r249737;
double r249739 = cbrt(r249736);
double r249740 = r249739 * r249739;
double r249741 = h;
double r249742 = cbrt(r249741);
double r249743 = r249742 * r249742;
double r249744 = r249740 / r249743;
double r249745 = 1.0;
double r249746 = 2.0;
double r249747 = r249745 / r249746;
double r249748 = pow(r249744, r249747);
double r249749 = r249739 / r249742;
double r249750 = pow(r249749, r249747);
double r249751 = r249748 * r249750;
double r249752 = 1.0;
double r249753 = l;
double r249754 = cbrt(r249753);
double r249755 = r249754 * r249754;
double r249756 = r249752 / r249755;
double r249757 = pow(r249756, r249747);
double r249758 = r249736 / r249754;
double r249759 = pow(r249758, r249747);
double r249760 = r249757 * r249759;
double r249761 = r249751 * r249760;
double r249762 = M;
double r249763 = D;
double r249764 = r249762 * r249763;
double r249765 = r249746 * r249736;
double r249766 = r249764 / r249765;
double r249767 = pow(r249766, r249746);
double r249768 = r249747 * r249767;
double r249769 = r249768 * r249741;
double r249770 = r249769 / r249753;
double r249771 = r249745 - r249770;
double r249772 = r249761 * r249771;
double r249773 = pow(r249736, r249745);
double r249774 = pow(r249773, r249745);
double r249775 = pow(r249741, r249745);
double r249776 = pow(r249753, r249745);
double r249777 = r249775 * r249776;
double r249778 = r249752 / r249777;
double r249779 = 0.5;
double r249780 = pow(r249778, r249779);
double r249781 = r249774 * r249780;
double r249782 = r249745 * r249781;
double r249783 = r249738 ? r249772 : r249782;
return r249783;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if d < 1.4768637021576945e+159Initial program 26.7
rmApplied add-cube-cbrt26.9
Applied add-cube-cbrt27.0
Applied times-frac27.0
Applied unpow-prod-down22.7
rmApplied add-cube-cbrt22.8
Applied *-un-lft-identity22.8
Applied times-frac22.8
Applied unpow-prod-down19.1
rmApplied associate-*r/16.7
if 1.4768637021576945e+159 < d Initial program 28.9
Taylor expanded around 0 16.1
Final simplification16.6
herbie shell --seed 2020064
(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)))))