\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}\;\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) \le -1.112644896019491284147662314075859502418 \cdot 10^{305} \lor \neg \left(\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) \le 4923306603250557952\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{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(1 \cdot {\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2}\right) \cdot h}{2 \cdot \ell}\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{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot \left({\left(\frac{1}{\sqrt[3]{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{\sqrt[3]{\ell}}}\right)}^{\left(\frac{1}{2}\right)}\right)\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)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r179642 = d;
double r179643 = h;
double r179644 = r179642 / r179643;
double r179645 = 1.0;
double r179646 = 2.0;
double r179647 = r179645 / r179646;
double r179648 = pow(r179644, r179647);
double r179649 = l;
double r179650 = r179642 / r179649;
double r179651 = pow(r179650, r179647);
double r179652 = r179648 * r179651;
double r179653 = M;
double r179654 = D;
double r179655 = r179653 * r179654;
double r179656 = r179646 * r179642;
double r179657 = r179655 / r179656;
double r179658 = pow(r179657, r179646);
double r179659 = r179647 * r179658;
double r179660 = r179643 / r179649;
double r179661 = r179659 * r179660;
double r179662 = r179645 - r179661;
double r179663 = r179652 * r179662;
return r179663;
}
double f(double d, double h, double l, double M, double D) {
double r179664 = d;
double r179665 = h;
double r179666 = r179664 / r179665;
double r179667 = 1.0;
double r179668 = 2.0;
double r179669 = r179667 / r179668;
double r179670 = pow(r179666, r179669);
double r179671 = l;
double r179672 = r179664 / r179671;
double r179673 = pow(r179672, r179669);
double r179674 = r179670 * r179673;
double r179675 = M;
double r179676 = D;
double r179677 = r179675 * r179676;
double r179678 = r179668 * r179664;
double r179679 = r179677 / r179678;
double r179680 = pow(r179679, r179668);
double r179681 = r179669 * r179680;
double r179682 = r179665 / r179671;
double r179683 = r179681 * r179682;
double r179684 = r179667 - r179683;
double r179685 = r179674 * r179684;
double r179686 = -1.1126448960194913e+305;
bool r179687 = r179685 <= r179686;
double r179688 = 4.923306603250558e+18;
bool r179689 = r179685 <= r179688;
double r179690 = !r179689;
bool r179691 = r179687 || r179690;
double r179692 = 1.0;
double r179693 = cbrt(r179665);
double r179694 = r179693 * r179693;
double r179695 = r179692 / r179694;
double r179696 = pow(r179695, r179669);
double r179697 = r179664 / r179693;
double r179698 = pow(r179697, r179669);
double r179699 = r179696 * r179698;
double r179700 = cbrt(r179671);
double r179701 = r179700 * r179700;
double r179702 = r179692 / r179701;
double r179703 = pow(r179702, r179669);
double r179704 = r179664 / r179700;
double r179705 = pow(r179704, r179669);
double r179706 = r179703 * r179705;
double r179707 = r179699 * r179706;
double r179708 = r179678 / r179676;
double r179709 = r179675 / r179708;
double r179710 = pow(r179709, r179668);
double r179711 = r179667 * r179710;
double r179712 = r179711 * r179665;
double r179713 = r179668 * r179671;
double r179714 = r179712 / r179713;
double r179715 = r179667 - r179714;
double r179716 = r179707 * r179715;
double r179717 = cbrt(r179701);
double r179718 = r179692 / r179717;
double r179719 = pow(r179718, r179669);
double r179720 = cbrt(r179700);
double r179721 = r179664 / r179720;
double r179722 = pow(r179721, r179669);
double r179723 = r179719 * r179722;
double r179724 = r179703 * r179723;
double r179725 = r179699 * r179724;
double r179726 = r179725 * r179684;
double r179727 = r179691 ? r179716 : r179726;
return r179727;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if (* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))) < -1.1126448960194913e+305 or 4.923306603250558e+18 < (* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))) Initial program 37.9
rmApplied add-cube-cbrt38.1
Applied *-un-lft-identity38.1
Applied times-frac38.1
Applied unpow-prod-down31.2
rmApplied add-cube-cbrt31.3
Applied *-un-lft-identity31.3
Applied times-frac31.3
Applied unpow-prod-down28.7
rmApplied associate-*l/28.7
Applied frac-times22.7
rmApplied associate-/l*22.3
if -1.1126448960194913e+305 < (* (* (pow (/ d h) (/ 1.0 2.0)) (pow (/ d l) (/ 1.0 2.0))) (- 1.0 (* (* (/ 1.0 2.0) (pow (/ (* M D) (* 2.0 d)) 2.0)) (/ h l)))) < 4.923306603250558e+18Initial program 10.0
rmApplied add-cube-cbrt10.3
Applied *-un-lft-identity10.3
Applied times-frac10.3
Applied unpow-prod-down8.6
rmApplied add-cube-cbrt8.8
Applied *-un-lft-identity8.8
Applied times-frac8.8
Applied unpow-prod-down3.4
rmApplied add-cube-cbrt3.4
Applied cbrt-prod3.4
Applied *-un-lft-identity3.4
Applied times-frac3.4
Applied unpow-prod-down2.9
Final simplification14.5
herbie shell --seed 2019305 +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)))))