\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.47686370215769455 \cdot 10^{159}:\\
\;\;\;\;\left(\left(\left({\left(\frac{\sqrt[3]{d} \cdot \sqrt[3]{d}}{\sqrt[3]{h} \cdot \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(\frac{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(\sqrt{1} + \sqrt{\frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}}\right)\right) \cdot \left(\sqrt{1} - \sqrt{\frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left({\left({d}^{1}\right)}^{1} \cdot {\left(\frac{1}{{h}^{1} \cdot {\ell}^{1}}\right)}^{0.5}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r275952 = d;
double r275953 = h;
double r275954 = r275952 / r275953;
double r275955 = 1.0;
double r275956 = 2.0;
double r275957 = r275955 / r275956;
double r275958 = pow(r275954, r275957);
double r275959 = l;
double r275960 = r275952 / r275959;
double r275961 = pow(r275960, r275957);
double r275962 = r275958 * r275961;
double r275963 = M;
double r275964 = D;
double r275965 = r275963 * r275964;
double r275966 = r275956 * r275952;
double r275967 = r275965 / r275966;
double r275968 = pow(r275967, r275956);
double r275969 = r275957 * r275968;
double r275970 = r275953 / r275959;
double r275971 = r275969 * r275970;
double r275972 = r275955 - r275971;
double r275973 = r275962 * r275972;
return r275973;
}
double f(double d, double h, double l, double M, double D) {
double r275974 = d;
double r275975 = 1.4768637021576945e+159;
bool r275976 = r275974 <= r275975;
double r275977 = cbrt(r275974);
double r275978 = r275977 * r275977;
double r275979 = h;
double r275980 = cbrt(r275979);
double r275981 = r275980 * r275980;
double r275982 = r275978 / r275981;
double r275983 = 1.0;
double r275984 = 2.0;
double r275985 = r275983 / r275984;
double r275986 = pow(r275982, r275985);
double r275987 = r275977 / r275980;
double r275988 = pow(r275987, r275985);
double r275989 = r275986 * r275988;
double r275990 = 1.0;
double r275991 = l;
double r275992 = cbrt(r275991);
double r275993 = r275992 * r275992;
double r275994 = r275990 / r275993;
double r275995 = pow(r275994, r275985);
double r275996 = r275974 / r275992;
double r275997 = pow(r275996, r275985);
double r275998 = r275995 * r275997;
double r275999 = r275989 * r275998;
double r276000 = sqrt(r275983);
double r276001 = M;
double r276002 = D;
double r276003 = r276001 * r276002;
double r276004 = r275984 * r275974;
double r276005 = r276003 / r276004;
double r276006 = pow(r276005, r275984);
double r276007 = r275985 * r276006;
double r276008 = r276007 * r275979;
double r276009 = r276008 / r275991;
double r276010 = sqrt(r276009);
double r276011 = r276000 + r276010;
double r276012 = r275999 * r276011;
double r276013 = r276000 - r276010;
double r276014 = r276012 * r276013;
double r276015 = pow(r275974, r275983);
double r276016 = pow(r276015, r275983);
double r276017 = pow(r275979, r275983);
double r276018 = pow(r275991, r275983);
double r276019 = r276017 * r276018;
double r276020 = r275990 / r276019;
double r276021 = 0.5;
double r276022 = pow(r276020, r276021);
double r276023 = r276016 * r276022;
double r276024 = r275983 * r276023;
double r276025 = r275976 ? r276014 : r276024;
return r276025;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if d < 1.4768637021576945e+159Initial program 26.7
rmApplied add-cube-cbrt26.9
Applied add-cube-cbrt27.0
Applied times-frac27.0
Applied unpow-prod-down22.7
rmApplied add-cube-cbrt22.8
Applied *-un-lft-identity22.8
Applied times-frac22.8
Applied unpow-prod-down19.1
rmApplied associate-*r/16.7
rmApplied add-sqr-sqrt16.7
Applied add-sqr-sqrt16.7
Applied difference-of-squares16.7
Applied associate-*r*16.7
if 1.4768637021576945e+159 < d Initial program 28.9
Taylor expanded around 0 16.1
Final simplification16.6
herbie shell --seed 2020064 +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)))))