\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}\;D \le 5.206184082375279838904650586524733209239 \cdot 10^{70}:\\
\;\;\;\;\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) \cdot \left(\left(1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}\right) \cdot \left({\left(\sqrt[3]{d} \cdot \sqrt[3]{d}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\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) \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \frac{h}{\ell} \cdot \left(\frac{1}{2} \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}\right)\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r10163605 = d;
double r10163606 = h;
double r10163607 = r10163605 / r10163606;
double r10163608 = 1.0;
double r10163609 = 2.0;
double r10163610 = r10163608 / r10163609;
double r10163611 = pow(r10163607, r10163610);
double r10163612 = l;
double r10163613 = r10163605 / r10163612;
double r10163614 = pow(r10163613, r10163610);
double r10163615 = r10163611 * r10163614;
double r10163616 = M;
double r10163617 = D;
double r10163618 = r10163616 * r10163617;
double r10163619 = r10163609 * r10163605;
double r10163620 = r10163618 / r10163619;
double r10163621 = pow(r10163620, r10163609);
double r10163622 = r10163610 * r10163621;
double r10163623 = r10163606 / r10163612;
double r10163624 = r10163622 * r10163623;
double r10163625 = r10163608 - r10163624;
double r10163626 = r10163615 * r10163625;
return r10163626;
}
double f(double d, double h, double l, double M, double D) {
double r10163627 = D;
double r10163628 = 5.20618408237528e+70;
bool r10163629 = r10163627 <= r10163628;
double r10163630 = d;
double r10163631 = h;
double r10163632 = cbrt(r10163631);
double r10163633 = r10163630 / r10163632;
double r10163634 = 1.0;
double r10163635 = 2.0;
double r10163636 = r10163634 / r10163635;
double r10163637 = pow(r10163633, r10163636);
double r10163638 = 1.0;
double r10163639 = r10163632 * r10163632;
double r10163640 = r10163638 / r10163639;
double r10163641 = pow(r10163640, r10163636);
double r10163642 = r10163637 * r10163641;
double r10163643 = M;
double r10163644 = r10163643 * r10163627;
double r10163645 = r10163635 * r10163630;
double r10163646 = r10163644 / r10163645;
double r10163647 = pow(r10163646, r10163635);
double r10163648 = r10163636 * r10163647;
double r10163649 = r10163648 * r10163631;
double r10163650 = l;
double r10163651 = r10163649 / r10163650;
double r10163652 = r10163634 - r10163651;
double r10163653 = cbrt(r10163630);
double r10163654 = r10163653 * r10163653;
double r10163655 = pow(r10163654, r10163636);
double r10163656 = r10163653 / r10163650;
double r10163657 = pow(r10163656, r10163636);
double r10163658 = r10163655 * r10163657;
double r10163659 = r10163652 * r10163658;
double r10163660 = r10163642 * r10163659;
double r10163661 = r10163630 / r10163650;
double r10163662 = pow(r10163661, r10163636);
double r10163663 = r10163642 * r10163662;
double r10163664 = r10163631 / r10163650;
double r10163665 = r10163627 / r10163630;
double r10163666 = r10163643 / r10163635;
double r10163667 = r10163665 * r10163666;
double r10163668 = pow(r10163667, r10163635);
double r10163669 = r10163636 * r10163668;
double r10163670 = r10163664 * r10163669;
double r10163671 = r10163634 - r10163670;
double r10163672 = r10163663 * r10163671;
double r10163673 = r10163629 ? r10163660 : r10163672;
return r10163673;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if D < 5.20618408237528e+70Initial program 25.9
rmApplied add-cube-cbrt26.1
Applied *-un-lft-identity26.1
Applied times-frac26.1
Applied unpow-prod-down21.1
rmApplied associate-*r/19.6
rmApplied *-un-lft-identity19.6
Applied add-cube-cbrt19.7
Applied times-frac19.7
Applied unpow-prod-down14.6
Simplified14.6
rmApplied associate-*l*14.8
if 5.20618408237528e+70 < D Initial program 31.1
rmApplied add-cube-cbrt31.4
Applied *-un-lft-identity31.4
Applied times-frac31.3
Applied unpow-prod-down26.9
rmApplied times-frac27.8
Final simplification16.4
herbie shell --seed 2019172 +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)))))