\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}\;\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) \le -1.624495708136576 \cdot 10^{286}:\\
\;\;\;\;\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(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \frac{\frac{1}{2} \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}} \cdot \frac{h}{\sqrt[3]{\ell}}\right)\\
\mathbf{elif}\;\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) \le 3.0092666112745297 \cdot 10^{143}:\\
\;\;\;\;\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(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\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{\sqrt[3]{d} \cdot \sqrt[3]{d}}{1}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(1 - \frac{\frac{\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}} \cdot h}{\sqrt[3]{\ell}}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r336918 = d;
double r336919 = h;
double r336920 = r336918 / r336919;
double r336921 = 1.0;
double r336922 = 2.0;
double r336923 = r336921 / r336922;
double r336924 = pow(r336920, r336923);
double r336925 = l;
double r336926 = r336918 / r336925;
double r336927 = pow(r336926, r336923);
double r336928 = r336924 * r336927;
double r336929 = M;
double r336930 = D;
double r336931 = r336929 * r336930;
double r336932 = r336922 * r336918;
double r336933 = r336931 / r336932;
double r336934 = pow(r336933, r336922);
double r336935 = r336923 * r336934;
double r336936 = r336919 / r336925;
double r336937 = r336935 * r336936;
double r336938 = r336921 - r336937;
double r336939 = r336928 * r336938;
return r336939;
}
double f(double d, double h, double l, double M, double D) {
double r336940 = d;
double r336941 = h;
double r336942 = r336940 / r336941;
double r336943 = 1.0;
double r336944 = 2.0;
double r336945 = r336943 / r336944;
double r336946 = pow(r336942, r336945);
double r336947 = l;
double r336948 = r336940 / r336947;
double r336949 = pow(r336948, r336945);
double r336950 = r336946 * r336949;
double r336951 = M;
double r336952 = D;
double r336953 = r336951 * r336952;
double r336954 = r336944 * r336940;
double r336955 = r336953 / r336954;
double r336956 = pow(r336955, r336944);
double r336957 = r336945 * r336956;
double r336958 = r336941 / r336947;
double r336959 = r336957 * r336958;
double r336960 = r336943 - r336959;
double r336961 = r336950 * r336960;
double r336962 = -1.624495708136576e+286;
bool r336963 = r336961 <= r336962;
double r336964 = cbrt(r336940);
double r336965 = r336964 * r336964;
double r336966 = cbrt(r336941);
double r336967 = r336966 * r336966;
double r336968 = r336965 / r336967;
double r336969 = pow(r336968, r336945);
double r336970 = r336964 / r336966;
double r336971 = pow(r336970, r336945);
double r336972 = r336969 * r336971;
double r336973 = r336972 * r336949;
double r336974 = r336951 / r336944;
double r336975 = r336952 / r336940;
double r336976 = r336974 * r336975;
double r336977 = pow(r336976, r336944);
double r336978 = r336945 * r336977;
double r336979 = cbrt(r336947);
double r336980 = r336979 * r336979;
double r336981 = r336978 / r336980;
double r336982 = r336941 / r336979;
double r336983 = r336981 * r336982;
double r336984 = r336943 - r336983;
double r336985 = r336973 * r336984;
double r336986 = 3.0092666112745297e+143;
bool r336987 = r336961 <= r336986;
double r336988 = 1.0;
double r336989 = r336988 / r336980;
double r336990 = pow(r336989, r336945);
double r336991 = r336940 / r336979;
double r336992 = pow(r336991, r336945);
double r336993 = r336990 * r336992;
double r336994 = r336972 * r336993;
double r336995 = r336994 * r336960;
double r336996 = r336965 / r336988;
double r336997 = pow(r336996, r336945);
double r336998 = r336964 / r336947;
double r336999 = pow(r336998, r336945);
double r337000 = r336997 * r336999;
double r337001 = r336972 * r337000;
double r337002 = r336957 / r336980;
double r337003 = r337002 * r336941;
double r337004 = r337003 / r336979;
double r337005 = r336943 - r337004;
double r337006 = r337001 * r337005;
double r337007 = r336987 ? r336995 : r337006;
double r337008 = r336963 ? r336985 : r337007;
return r337008;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if (* (* (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)))) < -1.624495708136576e+286Initial program 60.9
rmApplied add-cube-cbrt60.9
Applied add-cube-cbrt61.0
Applied times-frac61.0
Applied unpow-prod-down61.0
rmApplied add-cube-cbrt61.0
Applied *-un-lft-identity61.0
Applied times-frac61.0
Applied associate-*r*55.1
Simplified55.1
rmApplied times-frac51.9
if -1.624495708136576e+286 < (* (* (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)))) < 3.0092666112745297e+143Initial program 7.8
rmApplied add-cube-cbrt8.2
Applied add-cube-cbrt8.3
Applied times-frac8.3
Applied unpow-prod-down6.9
rmApplied add-cube-cbrt7.1
Applied *-un-lft-identity7.1
Applied times-frac7.1
Applied unpow-prod-down3.1
if 3.0092666112745297e+143 < (* (* (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)))) Initial program 48.7
rmApplied add-cube-cbrt48.8
Applied add-cube-cbrt48.9
Applied times-frac48.9
Applied unpow-prod-down35.6
rmApplied add-cube-cbrt35.6
Applied *-un-lft-identity35.6
Applied times-frac35.6
Applied associate-*r*32.7
Simplified32.7
rmApplied *-un-lft-identity32.7
Applied add-cube-cbrt32.9
Applied times-frac32.9
Applied unpow-prod-down27.1
rmApplied associate-*r/25.2
Final simplification15.2
herbie shell --seed 2020060 +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)))))