\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 -132349.3539105802192352712154388427734375:\\
\;\;\;\;\left(\left({\left(\frac{d}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \frac{h}{\ell} \cdot \left(\frac{1}{2} \cdot {\left(\frac{D \cdot M}{2 \cdot d}\right)}^{2}\right)\right)\right) \cdot \left({\left(\frac{d}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right)\\
\mathbf{elif}\;\ell \le 31955175104594.1953125:\\
\;\;\;\;\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot \left({\left(\frac{d}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(1 - \frac{\sqrt[3]{h}}{\ell} \cdot \left(\left(\sqrt[3]{h} \cdot \sqrt[3]{h}\right) \cdot \left(\frac{1}{2} \cdot {\left(\frac{D \cdot M}{2 \cdot d}\right)}^{2}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left({\left(\frac{d}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \frac{h}{\ell} \cdot \left(\frac{1}{2} \cdot {\left(\frac{D \cdot M}{2 \cdot d}\right)}^{2}\right)\right)\right) \cdot \left({\left(\frac{d}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r7016649 = d;
double r7016650 = h;
double r7016651 = r7016649 / r7016650;
double r7016652 = 1.0;
double r7016653 = 2.0;
double r7016654 = r7016652 / r7016653;
double r7016655 = pow(r7016651, r7016654);
double r7016656 = l;
double r7016657 = r7016649 / r7016656;
double r7016658 = pow(r7016657, r7016654);
double r7016659 = r7016655 * r7016658;
double r7016660 = M;
double r7016661 = D;
double r7016662 = r7016660 * r7016661;
double r7016663 = r7016653 * r7016649;
double r7016664 = r7016662 / r7016663;
double r7016665 = pow(r7016664, r7016653);
double r7016666 = r7016654 * r7016665;
double r7016667 = r7016650 / r7016656;
double r7016668 = r7016666 * r7016667;
double r7016669 = r7016652 - r7016668;
double r7016670 = r7016659 * r7016669;
return r7016670;
}
double f(double d, double h, double l, double M, double D) {
double r7016671 = l;
double r7016672 = -132349.35391058022;
bool r7016673 = r7016671 <= r7016672;
double r7016674 = d;
double r7016675 = cbrt(r7016671);
double r7016676 = r7016674 / r7016675;
double r7016677 = 1.0;
double r7016678 = 2.0;
double r7016679 = r7016677 / r7016678;
double r7016680 = pow(r7016676, r7016679);
double r7016681 = 1.0;
double r7016682 = r7016675 * r7016675;
double r7016683 = r7016681 / r7016682;
double r7016684 = pow(r7016683, r7016679);
double r7016685 = r7016680 * r7016684;
double r7016686 = h;
double r7016687 = r7016686 / r7016671;
double r7016688 = D;
double r7016689 = M;
double r7016690 = r7016688 * r7016689;
double r7016691 = r7016678 * r7016674;
double r7016692 = r7016690 / r7016691;
double r7016693 = pow(r7016692, r7016678);
double r7016694 = r7016679 * r7016693;
double r7016695 = r7016687 * r7016694;
double r7016696 = r7016677 - r7016695;
double r7016697 = r7016685 * r7016696;
double r7016698 = cbrt(r7016686);
double r7016699 = r7016674 / r7016698;
double r7016700 = pow(r7016699, r7016679);
double r7016701 = r7016698 * r7016698;
double r7016702 = r7016681 / r7016701;
double r7016703 = pow(r7016702, r7016679);
double r7016704 = r7016700 * r7016703;
double r7016705 = r7016697 * r7016704;
double r7016706 = 31955175104594.195;
bool r7016707 = r7016671 <= r7016706;
double r7016708 = r7016674 / r7016686;
double r7016709 = pow(r7016708, r7016679);
double r7016710 = r7016709 * r7016685;
double r7016711 = r7016698 / r7016671;
double r7016712 = r7016701 * r7016694;
double r7016713 = r7016711 * r7016712;
double r7016714 = r7016677 - r7016713;
double r7016715 = r7016710 * r7016714;
double r7016716 = r7016707 ? r7016715 : r7016705;
double r7016717 = r7016673 ? r7016705 : r7016716;
return r7016717;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -132349.35391058022 or 31955175104594.195 < l Initial program 26.2
rmApplied add-cube-cbrt26.5
Applied *-un-lft-identity26.5
Applied times-frac26.5
Applied unpow-prod-down22.7
rmApplied add-cube-cbrt22.8
Applied *-un-lft-identity22.8
Applied times-frac22.8
Applied unpow-prod-down16.8
rmApplied associate-*l*16.2
if -132349.35391058022 < l < 31955175104594.195Initial program 26.4
rmApplied add-cube-cbrt26.7
Applied *-un-lft-identity26.7
Applied times-frac26.7
Applied unpow-prod-down22.9
rmApplied *-un-lft-identity22.9
Applied add-cube-cbrt22.9
Applied times-frac22.9
Applied associate-*r*16.8
Final simplification16.4
herbie shell --seed 2019169 +o rules:numerics
(FPCore (d h l M D)
:name "Henrywood and Agarwal, Equation (12)"
(* (* (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)))))