\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 6.19018910180477599 \cdot 10^{170}:\\
\;\;\;\;\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(\sqrt[3]{d} \cdot \sqrt[3]{d}\right)}^{\left(\frac{1}{2}\right)} \cdot \left(\sqrt{{\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\right)}} \cdot \sqrt{{\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\right)}}\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{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(\sqrt[3]{d} \cdot \sqrt[3]{d}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{\sqrt[3]{d}}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right)\right) \cdot \left(1 - \log \left({\left(e^{\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}\right)}^{\left(\frac{h}{\ell}\right)}\right)\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r222931 = d;
double r222932 = h;
double r222933 = r222931 / r222932;
double r222934 = 1.0;
double r222935 = 2.0;
double r222936 = r222934 / r222935;
double r222937 = pow(r222933, r222936);
double r222938 = l;
double r222939 = r222931 / r222938;
double r222940 = pow(r222939, r222936);
double r222941 = r222937 * r222940;
double r222942 = M;
double r222943 = D;
double r222944 = r222942 * r222943;
double r222945 = r222935 * r222931;
double r222946 = r222944 / r222945;
double r222947 = pow(r222946, r222935);
double r222948 = r222936 * r222947;
double r222949 = r222932 / r222938;
double r222950 = r222948 * r222949;
double r222951 = r222934 - r222950;
double r222952 = r222941 * r222951;
return r222952;
}
double f(double d, double h, double l, double M, double D) {
double r222953 = d;
double r222954 = h;
double r222955 = r222953 / r222954;
double r222956 = 1.0;
double r222957 = 2.0;
double r222958 = r222956 / r222957;
double r222959 = pow(r222955, r222958);
double r222960 = l;
double r222961 = r222953 / r222960;
double r222962 = pow(r222961, r222958);
double r222963 = r222959 * r222962;
double r222964 = M;
double r222965 = D;
double r222966 = r222964 * r222965;
double r222967 = r222957 * r222953;
double r222968 = r222966 / r222967;
double r222969 = pow(r222968, r222957);
double r222970 = r222958 * r222969;
double r222971 = r222954 / r222960;
double r222972 = r222970 * r222971;
double r222973 = r222956 - r222972;
double r222974 = r222963 * r222973;
double r222975 = 6.190189101804776e+170;
bool r222976 = r222974 <= r222975;
double r222977 = 1.0;
double r222978 = cbrt(r222954);
double r222979 = r222978 * r222978;
double r222980 = r222977 / r222979;
double r222981 = pow(r222980, r222958);
double r222982 = r222953 / r222978;
double r222983 = pow(r222982, r222958);
double r222984 = r222981 * r222983;
double r222985 = cbrt(r222953);
double r222986 = r222985 * r222985;
double r222987 = pow(r222986, r222958);
double r222988 = r222985 / r222960;
double r222989 = pow(r222988, r222958);
double r222990 = sqrt(r222989);
double r222991 = r222990 * r222990;
double r222992 = r222987 * r222991;
double r222993 = r222984 * r222992;
double r222994 = r222993 * r222973;
double r222995 = r222987 * r222989;
double r222996 = r222984 * r222995;
double r222997 = exp(r222970);
double r222998 = pow(r222997, r222971);
double r222999 = log(r222998);
double r223000 = r222956 - r222999;
double r223001 = r222996 * r223000;
double r223002 = r222976 ? r222994 : r223001;
return r223002;
}



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)))) < 6.190189101804776e+170Initial program 13.5
rmApplied add-cube-cbrt13.8
Applied *-un-lft-identity13.8
Applied times-frac13.8
Applied unpow-prod-down12.7
rmApplied *-un-lft-identity12.7
Applied add-cube-cbrt12.8
Applied times-frac12.8
Applied unpow-prod-down9.7
Simplified9.7
rmApplied add-sqr-sqrt9.8
if 6.190189101804776e+170 < (* (* (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 52.5
rmApplied add-cube-cbrt52.6
Applied *-un-lft-identity52.6
Applied times-frac52.6
Applied unpow-prod-down39.8
rmApplied *-un-lft-identity39.8
Applied add-cube-cbrt39.9
Applied times-frac39.9
Applied unpow-prod-down35.7
Simplified35.7
rmApplied div-inv35.7
Applied associate-*r*28.0
rmApplied add-log-exp28.6
Simplified27.8
Final simplification15.7
herbie shell --seed 2019199
(FPCore (d h l M D)
:name "Henrywood and Agarwal, Equation (12)"
(* (* (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)))))