\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(1 - \frac{h}{\ell} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{1}{2}\right)\right) \cdot \left({\left(\frac{d}{\ell}\right)}^{\frac{1}{2}} \cdot {\left(\frac{d}{h}\right)}^{\frac{1}{2}}\right) = -\infty:\\
\;\;\;\;\left(\sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}}} \cdot \left|\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right|\right) \cdot \left(\sqrt{\frac{d}{\ell}} - \left(\left(\frac{\frac{M}{d} \cdot \frac{D}{2}}{2} \cdot \frac{\frac{M}{d} \cdot \frac{D}{2}}{\ell}\right) \cdot h\right) \cdot \sqrt{\frac{d}{\ell}}\right)\\
\mathbf{elif}\;\left(1 - \frac{h}{\ell} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{1}{2}\right)\right) \cdot \left({\left(\frac{d}{\ell}\right)}^{\frac{1}{2}} \cdot {\left(\frac{d}{h}\right)}^{\frac{1}{2}}\right) \le -1.9866250135508768 \cdot 10^{-77}:\\
\;\;\;\;\left(1 - \frac{h}{\ell} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{1}{2}\right)\right) \cdot \left({\left(\frac{d}{\ell}\right)}^{\frac{1}{2}} \cdot {\left(\frac{d}{h}\right)}^{\frac{1}{2}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}} \cdot \frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}} \cdot \sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}} - \left(\left(\left|\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}\right| \cdot \sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}}\right) \cdot \left(\frac{\frac{M}{d} \cdot \frac{D}{2}}{2} \cdot \frac{\frac{M}{d} \cdot \frac{D}{2}}{\ell}\right)\right) \cdot h\right) \cdot \left(\sqrt{\frac{\sqrt[3]{d}}{\sqrt[3]{h}}} \cdot \left|\frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right|\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r8683652 = d;
double r8683653 = h;
double r8683654 = r8683652 / r8683653;
double r8683655 = 1.0;
double r8683656 = 2.0;
double r8683657 = r8683655 / r8683656;
double r8683658 = pow(r8683654, r8683657);
double r8683659 = l;
double r8683660 = r8683652 / r8683659;
double r8683661 = pow(r8683660, r8683657);
double r8683662 = r8683658 * r8683661;
double r8683663 = M;
double r8683664 = D;
double r8683665 = r8683663 * r8683664;
double r8683666 = r8683656 * r8683652;
double r8683667 = r8683665 / r8683666;
double r8683668 = pow(r8683667, r8683656);
double r8683669 = r8683657 * r8683668;
double r8683670 = r8683653 / r8683659;
double r8683671 = r8683669 * r8683670;
double r8683672 = r8683655 - r8683671;
double r8683673 = r8683662 * r8683672;
return r8683673;
}
double f(double d, double h, double l, double M, double D) {
double r8683674 = 1.0;
double r8683675 = h;
double r8683676 = l;
double r8683677 = r8683675 / r8683676;
double r8683678 = M;
double r8683679 = D;
double r8683680 = r8683678 * r8683679;
double r8683681 = 2.0;
double r8683682 = d;
double r8683683 = r8683681 * r8683682;
double r8683684 = r8683680 / r8683683;
double r8683685 = pow(r8683684, r8683681);
double r8683686 = 0.5;
double r8683687 = r8683685 * r8683686;
double r8683688 = r8683677 * r8683687;
double r8683689 = r8683674 - r8683688;
double r8683690 = r8683682 / r8683676;
double r8683691 = pow(r8683690, r8683686);
double r8683692 = r8683682 / r8683675;
double r8683693 = pow(r8683692, r8683686);
double r8683694 = r8683691 * r8683693;
double r8683695 = r8683689 * r8683694;
double r8683696 = -inf.0;
bool r8683697 = r8683695 <= r8683696;
double r8683698 = cbrt(r8683682);
double r8683699 = cbrt(r8683675);
double r8683700 = r8683698 / r8683699;
double r8683701 = sqrt(r8683700);
double r8683702 = fabs(r8683700);
double r8683703 = r8683701 * r8683702;
double r8683704 = sqrt(r8683690);
double r8683705 = r8683678 / r8683682;
double r8683706 = r8683679 / r8683681;
double r8683707 = r8683705 * r8683706;
double r8683708 = r8683707 / r8683681;
double r8683709 = r8683707 / r8683676;
double r8683710 = r8683708 * r8683709;
double r8683711 = r8683710 * r8683675;
double r8683712 = r8683711 * r8683704;
double r8683713 = r8683704 - r8683712;
double r8683714 = r8683703 * r8683713;
double r8683715 = -1.9866250135508768e-77;
bool r8683716 = r8683695 <= r8683715;
double r8683717 = cbrt(r8683676);
double r8683718 = r8683698 / r8683717;
double r8683719 = r8683718 * r8683718;
double r8683720 = sqrt(r8683719);
double r8683721 = sqrt(r8683718);
double r8683722 = r8683720 * r8683721;
double r8683723 = fabs(r8683718);
double r8683724 = r8683723 * r8683721;
double r8683725 = r8683724 * r8683710;
double r8683726 = r8683725 * r8683675;
double r8683727 = r8683722 - r8683726;
double r8683728 = r8683727 * r8683703;
double r8683729 = r8683716 ? r8683695 : r8683728;
double r8683730 = r8683697 ? r8683714 : r8683729;
return r8683730;
}



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 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) < -inf.0Initial program 60.1
Simplified49.5
rmApplied add-cube-cbrt49.5
Applied add-cube-cbrt49.5
Applied times-frac49.5
Applied sqrt-prod48.3
Simplified48.3
rmApplied times-frac36.4
rmApplied associate-*l*41.7
if -inf.0 < (* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) < -1.9866250135508768e-77Initial program 1.1
if -1.9866250135508768e-77 < (* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))) Initial program 25.1
Simplified24.2
rmApplied add-cube-cbrt24.5
Applied add-cube-cbrt24.6
Applied times-frac24.6
Applied sqrt-prod17.6
Simplified16.5
rmApplied times-frac15.4
rmApplied add-cube-cbrt15.4
Applied add-cube-cbrt15.4
Applied times-frac15.4
Applied sqrt-prod14.0
Simplified13.7
rmApplied add-cube-cbrt13.8
Applied add-cube-cbrt14.0
Applied times-frac13.9
Applied sqrt-prod8.1
Simplified8.1
Final simplification10.0
herbie shell --seed 2019139
(FPCore (d h l M D)
:name "Henrywood and Agarwal, Equation (12)"
(* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))))