\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 -7.1330799290219985 \cdot 10^{-218} \lor \neg \left(\ell \le 3.3706545066301731 \cdot 10^{-256}\right):\\
\;\;\;\;\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({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(\sqrt[3]{h} \cdot \sqrt[3]{h}\right)\right)\right)\right) \cdot \frac{\sqrt[3]{h}}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\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(\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h\right) \cdot \frac{1}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r324854 = d;
double r324855 = h;
double r324856 = r324854 / r324855;
double r324857 = 1.0;
double r324858 = 2.0;
double r324859 = r324857 / r324858;
double r324860 = pow(r324856, r324859);
double r324861 = l;
double r324862 = r324854 / r324861;
double r324863 = pow(r324862, r324859);
double r324864 = r324860 * r324863;
double r324865 = M;
double r324866 = D;
double r324867 = r324865 * r324866;
double r324868 = r324858 * r324854;
double r324869 = r324867 / r324868;
double r324870 = pow(r324869, r324858);
double r324871 = r324859 * r324870;
double r324872 = r324855 / r324861;
double r324873 = r324871 * r324872;
double r324874 = r324857 - r324873;
double r324875 = r324864 * r324874;
return r324875;
}
double f(double d, double h, double l, double M, double D) {
double r324876 = l;
double r324877 = -7.133079929021998e-218;
bool r324878 = r324876 <= r324877;
double r324879 = 3.370654506630173e-256;
bool r324880 = r324876 <= r324879;
double r324881 = !r324880;
bool r324882 = r324878 || r324881;
double r324883 = d;
double r324884 = cbrt(r324883);
double r324885 = r324884 * r324884;
double r324886 = h;
double r324887 = cbrt(r324886);
double r324888 = r324887 * r324887;
double r324889 = r324885 / r324888;
double r324890 = 1.0;
double r324891 = 2.0;
double r324892 = r324890 / r324891;
double r324893 = pow(r324889, r324892);
double r324894 = r324884 / r324887;
double r324895 = pow(r324894, r324892);
double r324896 = r324893 * r324895;
double r324897 = 1.0;
double r324898 = cbrt(r324876);
double r324899 = r324898 * r324898;
double r324900 = r324897 / r324899;
double r324901 = pow(r324900, r324892);
double r324902 = r324883 / r324898;
double r324903 = pow(r324902, r324892);
double r324904 = r324901 * r324903;
double r324905 = r324896 * r324904;
double r324906 = M;
double r324907 = D;
double r324908 = r324906 * r324907;
double r324909 = r324891 * r324883;
double r324910 = r324908 / r324909;
double r324911 = 2.0;
double r324912 = r324891 / r324911;
double r324913 = pow(r324910, r324912);
double r324914 = r324913 * r324888;
double r324915 = r324913 * r324914;
double r324916 = r324892 * r324915;
double r324917 = r324887 / r324876;
double r324918 = r324916 * r324917;
double r324919 = r324890 - r324918;
double r324920 = r324905 * r324919;
double r324921 = r324883 / r324886;
double r324922 = pow(r324921, r324892);
double r324923 = r324883 / r324876;
double r324924 = pow(r324923, r324892);
double r324925 = r324922 * r324924;
double r324926 = pow(r324910, r324891);
double r324927 = r324892 * r324926;
double r324928 = r324927 * r324886;
double r324929 = r324897 / r324876;
double r324930 = r324928 * r324929;
double r324931 = r324890 - r324930;
double r324932 = r324925 * r324931;
double r324933 = r324882 ? r324920 : r324932;
return r324933;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -7.133079929021998e-218 or 3.370654506630173e-256 < l Initial program 25.8
rmApplied add-cube-cbrt26.1
Applied add-cube-cbrt26.2
Applied times-frac26.2
Applied unpow-prod-down20.6
rmApplied add-cube-cbrt20.7
Applied *-un-lft-identity20.7
Applied times-frac20.7
Applied unpow-prod-down17.1
rmApplied *-un-lft-identity17.1
Applied add-cube-cbrt17.1
Applied times-frac17.1
Applied associate-*r*15.2
Simplified15.2
rmApplied sqr-pow15.2
Applied associate-*l*13.4
if -7.133079929021998e-218 < l < 3.370654506630173e-256Initial program 40.2
rmApplied div-inv40.2
Applied associate-*r*31.6
Final simplification14.4
herbie shell --seed 2020083
(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)))))