\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 -7.1330799290219985 \cdot 10^{-218} \lor \neg \left(\ell \le 3.3706545066301731 \cdot 10^{-256}\right):\\
\;\;\;\;\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 - \left(\frac{1}{2} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(\sqrt[3]{h} \cdot \sqrt[3]{h}\right)\right)\right)\right) \cdot \frac{\sqrt[3]{h}}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\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(\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h\right) \cdot \frac{1}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r279688 = d;
double r279689 = h;
double r279690 = r279688 / r279689;
double r279691 = 1.0;
double r279692 = 2.0;
double r279693 = r279691 / r279692;
double r279694 = pow(r279690, r279693);
double r279695 = l;
double r279696 = r279688 / r279695;
double r279697 = pow(r279696, r279693);
double r279698 = r279694 * r279697;
double r279699 = M;
double r279700 = D;
double r279701 = r279699 * r279700;
double r279702 = r279692 * r279688;
double r279703 = r279701 / r279702;
double r279704 = pow(r279703, r279692);
double r279705 = r279693 * r279704;
double r279706 = r279689 / r279695;
double r279707 = r279705 * r279706;
double r279708 = r279691 - r279707;
double r279709 = r279698 * r279708;
return r279709;
}
double f(double d, double h, double l, double M, double D) {
double r279710 = l;
double r279711 = -7.133079929021998e-218;
bool r279712 = r279710 <= r279711;
double r279713 = 3.370654506630173e-256;
bool r279714 = r279710 <= r279713;
double r279715 = !r279714;
bool r279716 = r279712 || r279715;
double r279717 = d;
double r279718 = cbrt(r279717);
double r279719 = r279718 * r279718;
double r279720 = h;
double r279721 = cbrt(r279720);
double r279722 = r279721 * r279721;
double r279723 = r279719 / r279722;
double r279724 = 1.0;
double r279725 = 2.0;
double r279726 = r279724 / r279725;
double r279727 = pow(r279723, r279726);
double r279728 = r279718 / r279721;
double r279729 = pow(r279728, r279726);
double r279730 = r279727 * r279729;
double r279731 = 1.0;
double r279732 = cbrt(r279710);
double r279733 = r279732 * r279732;
double r279734 = r279731 / r279733;
double r279735 = pow(r279734, r279726);
double r279736 = r279717 / r279732;
double r279737 = pow(r279736, r279726);
double r279738 = r279735 * r279737;
double r279739 = r279730 * r279738;
double r279740 = M;
double r279741 = D;
double r279742 = r279740 * r279741;
double r279743 = r279725 * r279717;
double r279744 = r279742 / r279743;
double r279745 = 2.0;
double r279746 = r279725 / r279745;
double r279747 = pow(r279744, r279746);
double r279748 = r279747 * r279722;
double r279749 = r279747 * r279748;
double r279750 = r279726 * r279749;
double r279751 = r279721 / r279710;
double r279752 = r279750 * r279751;
double r279753 = r279724 - r279752;
double r279754 = r279739 * r279753;
double r279755 = r279717 / r279720;
double r279756 = pow(r279755, r279726);
double r279757 = r279717 / r279710;
double r279758 = pow(r279757, r279726);
double r279759 = r279756 * r279758;
double r279760 = pow(r279744, r279725);
double r279761 = r279726 * r279760;
double r279762 = r279761 * r279720;
double r279763 = r279731 / r279710;
double r279764 = r279762 * r279763;
double r279765 = r279724 - r279764;
double r279766 = r279759 * r279765;
double r279767 = r279716 ? r279754 : r279766;
return r279767;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -7.133079929021998e-218 or 3.370654506630173e-256 < l Initial program 25.8
rmApplied add-cube-cbrt26.1
Applied add-cube-cbrt26.2
Applied times-frac26.2
Applied unpow-prod-down20.6
rmApplied add-cube-cbrt20.7
Applied *-un-lft-identity20.7
Applied times-frac20.7
Applied unpow-prod-down17.1
rmApplied *-un-lft-identity17.1
Applied add-cube-cbrt17.1
Applied times-frac17.1
Applied associate-*r*15.2
Simplified15.2
rmApplied sqr-pow15.2
Applied associate-*l*13.4
if -7.133079929021998e-218 < l < 3.370654506630173e-256Initial program 40.2
rmApplied div-inv40.2
Applied associate-*r*31.6
Final simplification14.4
herbie shell --seed 2020083 +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)))))