\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 2.3155022248962846 \cdot 10^{-46}:\\
\;\;\;\;\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{\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(\sqrt[3]{1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}} \cdot \sqrt[3]{1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}}\right)\right) \cdot \sqrt[3]{1 - \frac{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{\ell}}\\
\mathbf{elif}\;\ell \le 1.26569875137712552 \cdot 10^{248}:\\
\;\;\;\;\left(\left({d}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{1}{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{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}}{\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{\left(\frac{1}{2} \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}\right) \cdot h}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r212911 = d;
double r212912 = h;
double r212913 = r212911 / r212912;
double r212914 = 1.0;
double r212915 = 2.0;
double r212916 = r212914 / r212915;
double r212917 = pow(r212913, r212916);
double r212918 = l;
double r212919 = r212911 / r212918;
double r212920 = pow(r212919, r212916);
double r212921 = r212917 * r212920;
double r212922 = M;
double r212923 = D;
double r212924 = r212922 * r212923;
double r212925 = r212915 * r212911;
double r212926 = r212924 / r212925;
double r212927 = pow(r212926, r212915);
double r212928 = r212916 * r212927;
double r212929 = r212912 / r212918;
double r212930 = r212928 * r212929;
double r212931 = r212914 - r212930;
double r212932 = r212921 * r212931;
return r212932;
}
double f(double d, double h, double l, double M, double D) {
double r212933 = l;
double r212934 = 2.3155022248962846e-46;
bool r212935 = r212933 <= r212934;
double r212936 = d;
double r212937 = cbrt(r212936);
double r212938 = r212937 * r212937;
double r212939 = h;
double r212940 = cbrt(r212939);
double r212941 = r212940 * r212940;
double r212942 = r212938 / r212941;
double r212943 = 1.0;
double r212944 = 2.0;
double r212945 = r212943 / r212944;
double r212946 = pow(r212942, r212945);
double r212947 = r212937 / r212940;
double r212948 = pow(r212947, r212945);
double r212949 = r212946 * r212948;
double r212950 = cbrt(r212933);
double r212951 = r212950 * r212950;
double r212952 = r212938 / r212951;
double r212953 = pow(r212952, r212945);
double r212954 = r212937 / r212950;
double r212955 = pow(r212954, r212945);
double r212956 = r212953 * r212955;
double r212957 = r212949 * r212956;
double r212958 = M;
double r212959 = D;
double r212960 = r212958 * r212959;
double r212961 = r212944 * r212936;
double r212962 = r212960 / r212961;
double r212963 = pow(r212962, r212944);
double r212964 = r212945 * r212963;
double r212965 = r212964 * r212939;
double r212966 = r212965 / r212933;
double r212967 = r212943 - r212966;
double r212968 = cbrt(r212967);
double r212969 = r212968 * r212968;
double r212970 = r212957 * r212969;
double r212971 = r212970 * r212968;
double r212972 = 1.2656987513771255e+248;
bool r212973 = r212933 <= r212972;
double r212974 = pow(r212936, r212945);
double r212975 = 1.0;
double r212976 = r212975 / r212939;
double r212977 = pow(r212976, r212945);
double r212978 = r212974 * r212977;
double r212979 = r212936 / r212933;
double r212980 = pow(r212979, r212945);
double r212981 = r212978 * r212980;
double r212982 = r212939 / r212933;
double r212983 = r212964 * r212982;
double r212984 = r212943 - r212983;
double r212985 = r212981 * r212984;
double r212986 = r212958 / r212944;
double r212987 = r212959 / r212936;
double r212988 = r212986 * r212987;
double r212989 = pow(r212988, r212944);
double r212990 = r212945 * r212989;
double r212991 = r212990 * r212939;
double r212992 = r212991 / r212933;
double r212993 = r212943 - r212992;
double r212994 = r212957 * r212993;
double r212995 = r212973 ? r212985 : r212994;
double r212996 = r212935 ? r212971 : r212995;
return r212996;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < 2.3155022248962846e-46Initial program 27.2
rmApplied add-cube-cbrt27.5
Applied add-cube-cbrt27.6
Applied times-frac27.6
Applied unpow-prod-down22.8
rmApplied add-cube-cbrt22.8
Applied add-cube-cbrt23.0
Applied times-frac23.0
Applied unpow-prod-down19.0
rmApplied associate-*r/14.5
rmApplied add-cube-cbrt14.5
Applied associate-*r*14.5
if 2.3155022248962846e-46 < l < 1.2656987513771255e+248Initial program 23.5
rmApplied div-inv23.5
Applied unpow-prod-down16.1
if 1.2656987513771255e+248 < l Initial program 32.9
rmApplied add-cube-cbrt33.1
Applied add-cube-cbrt33.2
Applied times-frac33.2
Applied unpow-prod-down27.1
rmApplied add-cube-cbrt27.1
Applied add-cube-cbrt27.3
Applied times-frac27.3
Applied unpow-prod-down20.6
rmApplied associate-*r/23.1
rmApplied times-frac23.7
Final simplification15.6
herbie shell --seed 2020089 +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)))))