\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 -4.824389863243856874428581165129592262042 \cdot 10^{-22}:\\
\;\;\;\;\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(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right) \cdot \left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\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}{\frac{2 \cdot d}{D}}\right)}^{2}\right) \cdot h}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r190669 = d;
double r190670 = h;
double r190671 = r190669 / r190670;
double r190672 = 1.0;
double r190673 = 2.0;
double r190674 = r190672 / r190673;
double r190675 = pow(r190671, r190674);
double r190676 = l;
double r190677 = r190669 / r190676;
double r190678 = pow(r190677, r190674);
double r190679 = r190675 * r190678;
double r190680 = M;
double r190681 = D;
double r190682 = r190680 * r190681;
double r190683 = r190673 * r190669;
double r190684 = r190682 / r190683;
double r190685 = pow(r190684, r190673);
double r190686 = r190674 * r190685;
double r190687 = r190670 / r190676;
double r190688 = r190686 * r190687;
double r190689 = r190672 - r190688;
double r190690 = r190679 * r190689;
return r190690;
}
double f(double d, double h, double l, double M, double D) {
double r190691 = l;
double r190692 = -4.824389863243857e-22;
bool r190693 = r190691 <= r190692;
double r190694 = 1.0;
double r190695 = h;
double r190696 = cbrt(r190695);
double r190697 = r190696 * r190696;
double r190698 = r190694 / r190697;
double r190699 = 1.0;
double r190700 = 2.0;
double r190701 = r190699 / r190700;
double r190702 = pow(r190698, r190701);
double r190703 = d;
double r190704 = r190703 / r190696;
double r190705 = pow(r190704, r190701);
double r190706 = r190702 * r190705;
double r190707 = M;
double r190708 = D;
double r190709 = r190707 * r190708;
double r190710 = r190700 * r190703;
double r190711 = r190709 / r190710;
double r190712 = pow(r190711, r190700);
double r190713 = r190701 * r190712;
double r190714 = r190695 / r190691;
double r190715 = r190713 * r190714;
double r190716 = r190699 - r190715;
double r190717 = cbrt(r190703);
double r190718 = cbrt(r190691);
double r190719 = r190717 / r190718;
double r190720 = pow(r190719, r190701);
double r190721 = r190717 * r190717;
double r190722 = r190718 * r190718;
double r190723 = r190721 / r190722;
double r190724 = pow(r190723, r190701);
double r190725 = r190720 * r190724;
double r190726 = r190716 * r190725;
double r190727 = r190706 * r190726;
double r190728 = r190724 * r190720;
double r190729 = r190706 * r190728;
double r190730 = r190710 / r190708;
double r190731 = r190707 / r190730;
double r190732 = pow(r190731, r190700);
double r190733 = r190701 * r190732;
double r190734 = r190733 * r190695;
double r190735 = r190734 / r190691;
double r190736 = r190699 - r190735;
double r190737 = r190729 * r190736;
double r190738 = r190693 ? r190727 : r190737;
return r190738;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -4.824389863243857e-22Initial program 24.9
rmApplied add-cube-cbrt25.1
Applied *-un-lft-identity25.1
Applied times-frac25.1
Applied unpow-prod-down19.2
rmApplied add-cube-cbrt19.3
Applied add-cube-cbrt19.4
Applied times-frac19.4
Applied unpow-prod-down16.0
rmApplied associate-*l*15.4
Simplified15.4
if -4.824389863243857e-22 < l Initial program 27.0
rmApplied add-cube-cbrt27.3
Applied *-un-lft-identity27.3
Applied times-frac27.3
Applied unpow-prod-down22.7
rmApplied add-cube-cbrt22.9
Applied add-cube-cbrt23.0
Applied times-frac23.0
Applied unpow-prod-down18.6
rmApplied associate-*r/14.2
rmApplied associate-/l*14.7
Final simplification14.9
herbie shell --seed 2019350 +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)))))