\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}\;\ell \le -1.16224426293113532 \cdot 10^{227}:\\
\;\;\;\;\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\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(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\\
\mathbf{elif}\;\ell \le -3.27880730867629335 \cdot 10^{-10}:\\
\;\;\;\;\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(\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)\\
\mathbf{elif}\;\ell \le 3.48850499663846863 \cdot 10^{-81}:\\
\;\;\;\;\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\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 - \frac{1}{\frac{\ell}{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}}\right)\\
\mathbf{elif}\;\ell \le 3.846423325806426 \cdot 10^{236}:\\
\;\;\;\;1 \cdot \left({\left({d}^{1}\right)}^{1} \cdot {\left(\frac{1}{{h}^{1} \cdot {\ell}^{1}}\right)}^{0.5}\right)\\
\mathbf{else}:\\
\;\;\;\;\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\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(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r266948 = d;
double r266949 = h;
double r266950 = r266948 / r266949;
double r266951 = 1.0;
double r266952 = 2.0;
double r266953 = r266951 / r266952;
double r266954 = pow(r266950, r266953);
double r266955 = l;
double r266956 = r266948 / r266955;
double r266957 = pow(r266956, r266953);
double r266958 = r266954 * r266957;
double r266959 = M;
double r266960 = D;
double r266961 = r266959 * r266960;
double r266962 = r266952 * r266948;
double r266963 = r266961 / r266962;
double r266964 = pow(r266963, r266952);
double r266965 = r266953 * r266964;
double r266966 = r266949 / r266955;
double r266967 = r266965 * r266966;
double r266968 = r266951 - r266967;
double r266969 = r266958 * r266968;
return r266969;
}
double f(double d, double h, double l, double M, double D) {
double r266970 = l;
double r266971 = -1.1622442629311353e+227;
bool r266972 = r266970 <= r266971;
double r266973 = d;
double r266974 = h;
double r266975 = r266973 / r266974;
double r266976 = 1.0;
double r266977 = 2.0;
double r266978 = r266976 / r266977;
double r266979 = pow(r266975, r266978);
double r266980 = 1.0;
double r266981 = cbrt(r266970);
double r266982 = r266981 * r266981;
double r266983 = r266980 / r266982;
double r266984 = pow(r266983, r266978);
double r266985 = r266973 / r266981;
double r266986 = pow(r266985, r266978);
double r266987 = r266984 * r266986;
double r266988 = r266979 * r266987;
double r266989 = M;
double r266990 = D;
double r266991 = r266989 * r266990;
double r266992 = r266977 * r266973;
double r266993 = r266991 / r266992;
double r266994 = pow(r266993, r266977);
double r266995 = r266978 * r266994;
double r266996 = r266974 / r266970;
double r266997 = r266995 * r266996;
double r266998 = r266976 - r266997;
double r266999 = r266988 * r266998;
double r267000 = -3.2788073086762934e-10;
bool r267001 = r266970 <= r267000;
double r267002 = cbrt(r266974);
double r267003 = r267002 * r267002;
double r267004 = r266980 / r267003;
double r267005 = pow(r267004, r266978);
double r267006 = r266973 / r267002;
double r267007 = pow(r267006, r266978);
double r267008 = r267005 * r267007;
double r267009 = r266973 / r266970;
double r267010 = pow(r267009, r266978);
double r267011 = r267008 * r267010;
double r267012 = r267011 * r266998;
double r267013 = 3.4885049966384686e-81;
bool r267014 = r266970 <= r267013;
double r267015 = cbrt(r266973);
double r267016 = r267015 * r267015;
double r267017 = r267016 / r266982;
double r267018 = pow(r267017, r266978);
double r267019 = r267015 / r266981;
double r267020 = pow(r267019, r266978);
double r267021 = r267018 * r267020;
double r267022 = r266979 * r267021;
double r267023 = r266995 * r266974;
double r267024 = r266970 / r267023;
double r267025 = r266980 / r267024;
double r267026 = r266976 - r267025;
double r267027 = r267022 * r267026;
double r267028 = 3.846423325806426e+236;
bool r267029 = r266970 <= r267028;
double r267030 = pow(r266973, r266976);
double r267031 = pow(r267030, r266976);
double r267032 = pow(r266974, r266976);
double r267033 = pow(r266970, r266976);
double r267034 = r267032 * r267033;
double r267035 = r266980 / r267034;
double r267036 = 0.5;
double r267037 = pow(r267035, r267036);
double r267038 = r267031 * r267037;
double r267039 = r266976 * r267038;
double r267040 = r267029 ? r267039 : r266999;
double r267041 = r267014 ? r267027 : r267040;
double r267042 = r267001 ? r267012 : r267041;
double r267043 = r266972 ? r266999 : r267042;
return r267043;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -1.1622442629311353e+227 or 3.846423325806426e+236 < l Initial program 30.7
rmApplied add-cube-cbrt30.9
Applied *-un-lft-identity30.9
Applied times-frac30.9
Applied unpow-prod-down24.8
if -1.1622442629311353e+227 < l < -3.2788073086762934e-10Initial program 22.5
rmApplied add-cube-cbrt22.8
Applied *-un-lft-identity22.8
Applied times-frac22.8
Applied unpow-prod-down17.0
if -3.2788073086762934e-10 < l < 3.4885049966384686e-81Initial program 29.0
rmApplied add-cube-cbrt29.3
Applied add-cube-cbrt29.4
Applied times-frac29.4
Applied unpow-prod-down24.2
rmApplied associate-*r/14.3
rmApplied clear-num14.3
if 3.4885049966384686e-81 < l < 3.846423325806426e+236Initial program 23.9
Taylor expanded around 0 24.4
Final simplification19.8
herbie shell --seed 2020039 +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)))))