\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 -2.299316884642459 \cdot 10^{-151}:\\
\;\;\;\;\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{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) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\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(\left(\frac{1}{2} \cdot {\left(\left(M \cdot D\right) \cdot \frac{1}{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 r232652 = d;
double r232653 = h;
double r232654 = r232652 / r232653;
double r232655 = 1.0;
double r232656 = 2.0;
double r232657 = r232655 / r232656;
double r232658 = pow(r232654, r232657);
double r232659 = l;
double r232660 = r232652 / r232659;
double r232661 = pow(r232660, r232657);
double r232662 = r232658 * r232661;
double r232663 = M;
double r232664 = D;
double r232665 = r232663 * r232664;
double r232666 = r232656 * r232652;
double r232667 = r232665 / r232666;
double r232668 = pow(r232667, r232656);
double r232669 = r232657 * r232668;
double r232670 = r232653 / r232659;
double r232671 = r232669 * r232670;
double r232672 = r232655 - r232671;
double r232673 = r232662 * r232672;
return r232673;
}
double f(double d, double h, double l, double M, double D) {
double r232674 = l;
double r232675 = -2.299316884642459e-151;
bool r232676 = r232674 <= r232675;
double r232677 = d;
double r232678 = cbrt(r232677);
double r232679 = r232678 * r232678;
double r232680 = h;
double r232681 = cbrt(r232680);
double r232682 = r232681 * r232681;
double r232683 = r232679 / r232682;
double r232684 = 1.0;
double r232685 = 2.0;
double r232686 = r232684 / r232685;
double r232687 = pow(r232683, r232686);
double r232688 = r232678 / r232681;
double r232689 = pow(r232688, r232686);
double r232690 = r232687 * r232689;
double r232691 = 1.0;
double r232692 = cbrt(r232674);
double r232693 = r232692 * r232692;
double r232694 = r232691 / r232693;
double r232695 = pow(r232694, r232686);
double r232696 = r232677 / r232692;
double r232697 = pow(r232696, r232686);
double r232698 = r232695 * r232697;
double r232699 = M;
double r232700 = D;
double r232701 = r232699 * r232700;
double r232702 = r232685 * r232677;
double r232703 = r232701 / r232702;
double r232704 = pow(r232703, r232685);
double r232705 = r232686 * r232704;
double r232706 = r232680 / r232674;
double r232707 = r232705 * r232706;
double r232708 = r232684 - r232707;
double r232709 = r232698 * r232708;
double r232710 = r232690 * r232709;
double r232711 = r232690 * r232698;
double r232712 = r232691 / r232702;
double r232713 = r232701 * r232712;
double r232714 = pow(r232713, r232685);
double r232715 = r232686 * r232714;
double r232716 = r232715 * r232680;
double r232717 = r232691 / r232674;
double r232718 = r232716 * r232717;
double r232719 = r232684 - r232718;
double r232720 = r232711 * r232719;
double r232721 = r232676 ? r232710 : r232720;
return r232721;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -2.299316884642459e-151Initial program 24.8
rmApplied add-cube-cbrt25.0
Applied add-cube-cbrt25.1
Applied times-frac25.1
Applied unpow-prod-down19.3
rmApplied add-cube-cbrt19.3
Applied *-un-lft-identity19.3
Applied times-frac19.3
Applied unpow-prod-down16.1
rmApplied associate-*l*15.6
if -2.299316884642459e-151 < l Initial program 27.6
rmApplied add-cube-cbrt27.8
Applied add-cube-cbrt27.9
Applied times-frac27.9
Applied unpow-prod-down23.1
rmApplied add-cube-cbrt23.2
Applied *-un-lft-identity23.2
Applied times-frac23.2
Applied unpow-prod-down19.3
rmApplied div-inv19.3
Applied associate-*r*15.2
rmApplied div-inv15.2
Final simplification15.4
herbie shell --seed 2020100
(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)))))