\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 -8.574628740470817102738780728825241752659 \cdot 10^{-77} \lor \neg \left(d \le 1.202973359825746487165728890772549622691 \cdot 10^{-166}\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{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(1 - \left(\left(\frac{1}{2} \cdot {\left(\frac{1}{\frac{2 \cdot d}{M \cdot D}}\right)}^{2}\right) \cdot h\right) \cdot \frac{1}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\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({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\sqrt[3]{\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)\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r227859 = d;
double r227860 = h;
double r227861 = r227859 / r227860;
double r227862 = 1.0;
double r227863 = 2.0;
double r227864 = r227862 / r227863;
double r227865 = pow(r227861, r227864);
double r227866 = l;
double r227867 = r227859 / r227866;
double r227868 = pow(r227867, r227864);
double r227869 = r227865 * r227868;
double r227870 = M;
double r227871 = D;
double r227872 = r227870 * r227871;
double r227873 = r227863 * r227859;
double r227874 = r227872 / r227873;
double r227875 = pow(r227874, r227863);
double r227876 = r227864 * r227875;
double r227877 = r227860 / r227866;
double r227878 = r227876 * r227877;
double r227879 = r227862 - r227878;
double r227880 = r227869 * r227879;
return r227880;
}
double f(double d, double h, double l, double M, double D) {
double r227881 = d;
double r227882 = -8.574628740470817e-77;
bool r227883 = r227881 <= r227882;
double r227884 = 1.2029733598257465e-166;
bool r227885 = r227881 <= r227884;
double r227886 = !r227885;
bool r227887 = r227883 || r227886;
double r227888 = 1.0;
double r227889 = h;
double r227890 = cbrt(r227889);
double r227891 = r227890 * r227890;
double r227892 = r227888 / r227891;
double r227893 = 1.0;
double r227894 = 2.0;
double r227895 = r227893 / r227894;
double r227896 = pow(r227892, r227895);
double r227897 = r227881 / r227890;
double r227898 = pow(r227897, r227895);
double r227899 = r227896 * r227898;
double r227900 = cbrt(r227881);
double r227901 = r227900 * r227900;
double r227902 = l;
double r227903 = cbrt(r227902);
double r227904 = r227903 * r227903;
double r227905 = r227901 / r227904;
double r227906 = pow(r227905, r227895);
double r227907 = r227900 / r227903;
double r227908 = pow(r227907, r227895);
double r227909 = r227906 * r227908;
double r227910 = r227899 * r227909;
double r227911 = r227894 * r227881;
double r227912 = M;
double r227913 = D;
double r227914 = r227912 * r227913;
double r227915 = r227911 / r227914;
double r227916 = r227888 / r227915;
double r227917 = pow(r227916, r227894);
double r227918 = r227895 * r227917;
double r227919 = r227918 * r227889;
double r227920 = r227888 / r227902;
double r227921 = r227919 * r227920;
double r227922 = r227893 - r227921;
double r227923 = r227910 * r227922;
double r227924 = r227914 / r227911;
double r227925 = pow(r227924, r227894);
double r227926 = r227895 * r227925;
double r227927 = r227889 / r227902;
double r227928 = r227926 * r227927;
double r227929 = r227893 - r227928;
double r227930 = r227909 * r227929;
double r227931 = r227899 * r227930;
double r227932 = r227887 ? r227923 : r227931;
return r227932;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if d < -8.574628740470817e-77 or 1.2029733598257465e-166 < d Initial program 22.5
rmApplied add-cube-cbrt22.8
Applied *-un-lft-identity22.8
Applied times-frac22.8
Applied unpow-prod-down16.4
rmApplied add-cube-cbrt16.5
Applied add-cube-cbrt16.6
Applied times-frac16.6
Applied unpow-prod-down13.2
rmApplied div-inv13.2
Applied associate-*r*10.0
rmApplied clear-num10.1
if -8.574628740470817e-77 < d < 1.2029733598257465e-166Initial program 37.7
rmApplied add-cube-cbrt37.9
Applied *-un-lft-identity37.9
Applied times-frac37.9
Applied unpow-prod-down36.5
rmApplied add-cube-cbrt36.6
Applied add-cube-cbrt36.6
Applied times-frac36.6
Applied unpow-prod-down30.7
rmApplied associate-*l*29.5
Final simplification15.4
herbie shell --seed 2020001
(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)))))