\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 r283788 = d;
double r283789 = h;
double r283790 = r283788 / r283789;
double r283791 = 1.0;
double r283792 = 2.0;
double r283793 = r283791 / r283792;
double r283794 = pow(r283790, r283793);
double r283795 = l;
double r283796 = r283788 / r283795;
double r283797 = pow(r283796, r283793);
double r283798 = r283794 * r283797;
double r283799 = M;
double r283800 = D;
double r283801 = r283799 * r283800;
double r283802 = r283792 * r283788;
double r283803 = r283801 / r283802;
double r283804 = pow(r283803, r283792);
double r283805 = r283793 * r283804;
double r283806 = r283789 / r283795;
double r283807 = r283805 * r283806;
double r283808 = r283791 - r283807;
double r283809 = r283798 * r283808;
return r283809;
}
double f(double d, double h, double l, double M, double D) {
double r283810 = d;
double r283811 = h;
double r283812 = r283810 / r283811;
double r283813 = 1.0;
double r283814 = 2.0;
double r283815 = r283813 / r283814;
double r283816 = pow(r283812, r283815);
double r283817 = l;
double r283818 = r283810 / r283817;
double r283819 = pow(r283818, r283815);
double r283820 = r283816 * r283819;
double r283821 = M;
double r283822 = D;
double r283823 = r283821 * r283822;
double r283824 = r283814 * r283810;
double r283825 = r283823 / r283824;
double r283826 = pow(r283825, r283814);
double r283827 = r283815 * r283826;
double r283828 = r283811 / r283817;
double r283829 = r283827 * r283828;
double r283830 = r283813 - r283829;
double r283831 = r283820 * r283830;
double r283832 = -1.624495708136576e+286;
bool r283833 = r283831 <= r283832;
double r283834 = cbrt(r283810);
double r283835 = r283834 * r283834;
double r283836 = cbrt(r283811);
double r283837 = r283836 * r283836;
double r283838 = r283835 / r283837;
double r283839 = pow(r283838, r283815);
double r283840 = r283834 / r283836;
double r283841 = pow(r283840, r283815);
double r283842 = r283839 * r283841;
double r283843 = r283842 * r283819;
double r283844 = r283821 / r283814;
double r283845 = r283822 / r283810;
double r283846 = r283844 * r283845;
double r283847 = pow(r283846, r283814);
double r283848 = r283815 * r283847;
double r283849 = cbrt(r283817);
double r283850 = r283849 * r283849;
double r283851 = r283848 / r283850;
double r283852 = r283811 / r283849;
double r283853 = r283851 * r283852;
double r283854 = r283813 - r283853;
double r283855 = r283843 * r283854;
double r283856 = 3.0092666112745297e+143;
bool r283857 = r283831 <= r283856;
double r283858 = 1.0;
double r283859 = r283858 / r283850;
double r283860 = pow(r283859, r283815);
double r283861 = r283810 / r283849;
double r283862 = pow(r283861, r283815);
double r283863 = r283860 * r283862;
double r283864 = r283842 * r283863;
double r283865 = r283864 * r283830;
double r283866 = r283835 / r283858;
double r283867 = pow(r283866, r283815);
double r283868 = r283834 / r283817;
double r283869 = pow(r283868, r283815);
double r283870 = r283867 * r283869;
double r283871 = r283842 * r283870;
double r283872 = r283827 / r283850;
double r283873 = r283872 * r283811;
double r283874 = r283873 / r283849;
double r283875 = r283813 - r283874;
double r283876 = r283871 * r283875;
double r283877 = r283857 ? r283865 : r283876;
double r283878 = r283833 ? r283855 : r283877;
return r283878;
}



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)))))