\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 r244026 = d;
double r244027 = h;
double r244028 = r244026 / r244027;
double r244029 = 1.0;
double r244030 = 2.0;
double r244031 = r244029 / r244030;
double r244032 = pow(r244028, r244031);
double r244033 = l;
double r244034 = r244026 / r244033;
double r244035 = pow(r244034, r244031);
double r244036 = r244032 * r244035;
double r244037 = M;
double r244038 = D;
double r244039 = r244037 * r244038;
double r244040 = r244030 * r244026;
double r244041 = r244039 / r244040;
double r244042 = pow(r244041, r244030);
double r244043 = r244031 * r244042;
double r244044 = r244027 / r244033;
double r244045 = r244043 * r244044;
double r244046 = r244029 - r244045;
double r244047 = r244036 * r244046;
return r244047;
}
double f(double d, double h, double l, double M, double D) {
double r244048 = d;
double r244049 = -8.574628740470817e-77;
bool r244050 = r244048 <= r244049;
double r244051 = 1.2029733598257465e-166;
bool r244052 = r244048 <= r244051;
double r244053 = !r244052;
bool r244054 = r244050 || r244053;
double r244055 = 1.0;
double r244056 = h;
double r244057 = cbrt(r244056);
double r244058 = r244057 * r244057;
double r244059 = r244055 / r244058;
double r244060 = 1.0;
double r244061 = 2.0;
double r244062 = r244060 / r244061;
double r244063 = pow(r244059, r244062);
double r244064 = r244048 / r244057;
double r244065 = pow(r244064, r244062);
double r244066 = r244063 * r244065;
double r244067 = cbrt(r244048);
double r244068 = r244067 * r244067;
double r244069 = l;
double r244070 = cbrt(r244069);
double r244071 = r244070 * r244070;
double r244072 = r244068 / r244071;
double r244073 = pow(r244072, r244062);
double r244074 = r244067 / r244070;
double r244075 = pow(r244074, r244062);
double r244076 = r244073 * r244075;
double r244077 = r244066 * r244076;
double r244078 = r244061 * r244048;
double r244079 = M;
double r244080 = D;
double r244081 = r244079 * r244080;
double r244082 = r244078 / r244081;
double r244083 = r244055 / r244082;
double r244084 = pow(r244083, r244061);
double r244085 = r244062 * r244084;
double r244086 = r244085 * r244056;
double r244087 = r244055 / r244069;
double r244088 = r244086 * r244087;
double r244089 = r244060 - r244088;
double r244090 = r244077 * r244089;
double r244091 = r244081 / r244078;
double r244092 = pow(r244091, r244061);
double r244093 = r244062 * r244092;
double r244094 = r244056 / r244069;
double r244095 = r244093 * r244094;
double r244096 = r244060 - r244095;
double r244097 = r244076 * r244096;
double r244098 = r244066 * r244097;
double r244099 = r244054 ? r244090 : r244098;
return r244099;
}



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 +o rules:numerics
(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)))))