\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 -1.759098463508778435749781678731255130341 \cdot 10^{-200}:\\
\;\;\;\;\left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}} \cdot \frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot \left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{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)\right) \cdot \left(1 - \frac{h \cdot \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right)}{\ell}\right)\\
\mathbf{elif}\;d \le 8.694694098314580183807909210364342074651 \cdot 10^{-76}:\\
\;\;\;\;\left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}} \cdot \frac{\sqrt[3]{d}}{\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(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\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)\\
\mathbf{elif}\;d \le 3.107136480790391475823950267758985521437 \cdot 10^{146}:\\
\;\;\;\;\left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{h}} \cdot \frac{\sqrt[3]{d}}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot \left({\left(\frac{\sqrt[3]{d}}{\sqrt[3]{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)\right) \cdot \left(1 - \frac{h \cdot \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right)}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right) \cdot \left(\left({\left(\frac{1}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot {d}^{\left(\frac{1}{2}\right)}\right) \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r7219727 = d;
double r7219728 = h;
double r7219729 = r7219727 / r7219728;
double r7219730 = 1.0;
double r7219731 = 2.0;
double r7219732 = r7219730 / r7219731;
double r7219733 = pow(r7219729, r7219732);
double r7219734 = l;
double r7219735 = r7219727 / r7219734;
double r7219736 = pow(r7219735, r7219732);
double r7219737 = r7219733 * r7219736;
double r7219738 = M;
double r7219739 = D;
double r7219740 = r7219738 * r7219739;
double r7219741 = r7219731 * r7219727;
double r7219742 = r7219740 / r7219741;
double r7219743 = pow(r7219742, r7219731);
double r7219744 = r7219732 * r7219743;
double r7219745 = r7219728 / r7219734;
double r7219746 = r7219744 * r7219745;
double r7219747 = r7219730 - r7219746;
double r7219748 = r7219737 * r7219747;
return r7219748;
}
double f(double d, double h, double l, double M, double D) {
double r7219749 = d;
double r7219750 = -1.7590984635087784e-200;
bool r7219751 = r7219749 <= r7219750;
double r7219752 = cbrt(r7219749);
double r7219753 = h;
double r7219754 = cbrt(r7219753);
double r7219755 = r7219752 / r7219754;
double r7219756 = r7219755 * r7219755;
double r7219757 = 1.0;
double r7219758 = 2.0;
double r7219759 = r7219757 / r7219758;
double r7219760 = pow(r7219756, r7219759);
double r7219761 = pow(r7219755, r7219759);
double r7219762 = l;
double r7219763 = cbrt(r7219762);
double r7219764 = r7219749 / r7219763;
double r7219765 = pow(r7219764, r7219759);
double r7219766 = 1.0;
double r7219767 = r7219763 * r7219763;
double r7219768 = r7219766 / r7219767;
double r7219769 = pow(r7219768, r7219759);
double r7219770 = r7219765 * r7219769;
double r7219771 = r7219761 * r7219770;
double r7219772 = r7219760 * r7219771;
double r7219773 = M;
double r7219774 = D;
double r7219775 = r7219773 * r7219774;
double r7219776 = r7219758 * r7219749;
double r7219777 = r7219775 / r7219776;
double r7219778 = pow(r7219777, r7219758);
double r7219779 = r7219759 * r7219778;
double r7219780 = r7219753 * r7219779;
double r7219781 = r7219780 / r7219762;
double r7219782 = r7219757 - r7219781;
double r7219783 = r7219772 * r7219782;
double r7219784 = 8.69469409831458e-76;
bool r7219785 = r7219749 <= r7219784;
double r7219786 = r7219760 * r7219761;
double r7219787 = r7219753 / r7219762;
double r7219788 = r7219779 * r7219787;
double r7219789 = r7219757 - r7219788;
double r7219790 = r7219789 * r7219770;
double r7219791 = r7219786 * r7219790;
double r7219792 = 3.1071364807903915e+146;
bool r7219793 = r7219749 <= r7219792;
double r7219794 = r7219766 / r7219753;
double r7219795 = pow(r7219794, r7219759);
double r7219796 = pow(r7219749, r7219759);
double r7219797 = r7219795 * r7219796;
double r7219798 = r7219749 / r7219762;
double r7219799 = pow(r7219798, r7219759);
double r7219800 = r7219797 * r7219799;
double r7219801 = r7219789 * r7219800;
double r7219802 = r7219793 ? r7219783 : r7219801;
double r7219803 = r7219785 ? r7219791 : r7219802;
double r7219804 = r7219751 ? r7219783 : r7219803;
return r7219804;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if d < -1.7590984635087784e-200 or 8.69469409831458e-76 < d < 3.1071364807903915e+146Initial program 22.0
rmApplied add-cube-cbrt22.3
Applied add-cube-cbrt22.4
Applied times-frac22.4
Applied unpow-prod-down16.5
Simplified16.5
rmApplied add-cube-cbrt16.6
Applied *-un-lft-identity16.6
Applied times-frac16.6
Applied unpow-prod-down13.5
rmApplied associate-*r/10.7
rmApplied *-un-lft-identity10.7
Applied associate-*r*10.7
Simplified10.7
if -1.7590984635087784e-200 < d < 8.69469409831458e-76Initial program 36.9
rmApplied add-cube-cbrt37.0
Applied add-cube-cbrt37.1
Applied times-frac37.1
Applied unpow-prod-down35.6
Simplified35.6
rmApplied add-cube-cbrt35.6
Applied *-un-lft-identity35.6
Applied times-frac35.6
Applied unpow-prod-down30.6
rmApplied associate-*l*29.5
if 3.1071364807903915e+146 < d Initial program 28.6
rmApplied div-inv28.7
Applied unpow-prod-down14.0
Final simplification15.7
herbie shell --seed 2019200
(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)))))