\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(1 \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{2 \cdot \ell}} \cdot \sqrt[3]{1 - \frac{\left(1 \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{2 \cdot \ell}}\right)\right) \cdot \sqrt[3]{1 - \frac{\left(1 \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}{2 \cdot \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(1 \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}\right) \cdot h}{2 \cdot \ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r230855 = d;
double r230856 = h;
double r230857 = r230855 / r230856;
double r230858 = 1.0;
double r230859 = 2.0;
double r230860 = r230858 / r230859;
double r230861 = pow(r230857, r230860);
double r230862 = l;
double r230863 = r230855 / r230862;
double r230864 = pow(r230863, r230860);
double r230865 = r230861 * r230864;
double r230866 = M;
double r230867 = D;
double r230868 = r230866 * r230867;
double r230869 = r230859 * r230855;
double r230870 = r230868 / r230869;
double r230871 = pow(r230870, r230859);
double r230872 = r230860 * r230871;
double r230873 = r230856 / r230862;
double r230874 = r230872 * r230873;
double r230875 = r230858 - r230874;
double r230876 = r230865 * r230875;
return r230876;
}
double f(double d, double h, double l, double M, double D) {
double r230877 = l;
double r230878 = 2.3155022248962846e-46;
bool r230879 = r230877 <= r230878;
double r230880 = d;
double r230881 = cbrt(r230880);
double r230882 = r230881 * r230881;
double r230883 = h;
double r230884 = cbrt(r230883);
double r230885 = r230884 * r230884;
double r230886 = r230882 / r230885;
double r230887 = 1.0;
double r230888 = 2.0;
double r230889 = r230887 / r230888;
double r230890 = pow(r230886, r230889);
double r230891 = r230881 / r230884;
double r230892 = pow(r230891, r230889);
double r230893 = r230890 * r230892;
double r230894 = cbrt(r230877);
double r230895 = r230894 * r230894;
double r230896 = r230882 / r230895;
double r230897 = pow(r230896, r230889);
double r230898 = r230881 / r230894;
double r230899 = pow(r230898, r230889);
double r230900 = r230897 * r230899;
double r230901 = r230893 * r230900;
double r230902 = M;
double r230903 = D;
double r230904 = r230902 * r230903;
double r230905 = r230888 * r230880;
double r230906 = r230904 / r230905;
double r230907 = pow(r230906, r230888);
double r230908 = r230887 * r230907;
double r230909 = r230908 * r230883;
double r230910 = r230888 * r230877;
double r230911 = r230909 / r230910;
double r230912 = r230887 - r230911;
double r230913 = cbrt(r230912);
double r230914 = r230913 * r230913;
double r230915 = r230901 * r230914;
double r230916 = r230915 * r230913;
double r230917 = 1.2656987513771255e+248;
bool r230918 = r230877 <= r230917;
double r230919 = pow(r230880, r230889);
double r230920 = 1.0;
double r230921 = r230920 / r230883;
double r230922 = pow(r230921, r230889);
double r230923 = r230919 * r230922;
double r230924 = r230880 / r230877;
double r230925 = pow(r230924, r230889);
double r230926 = r230923 * r230925;
double r230927 = r230889 * r230907;
double r230928 = r230883 / r230877;
double r230929 = r230927 * r230928;
double r230930 = r230887 - r230929;
double r230931 = r230926 * r230930;
double r230932 = r230902 / r230888;
double r230933 = r230903 / r230880;
double r230934 = r230932 * r230933;
double r230935 = pow(r230934, r230888);
double r230936 = r230887 * r230935;
double r230937 = r230936 * r230883;
double r230938 = r230937 / r230910;
double r230939 = r230887 - r230938;
double r230940 = r230901 * r230939;
double r230941 = r230918 ? r230931 : r230940;
double r230942 = r230879 ? r230916 : r230941;
return r230942;
}



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-*l/19.0
Applied frac-times14.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-*l/20.6
Applied frac-times23.1
rmApplied times-frac23.7
Final simplification15.6
herbie shell --seed 2020089
(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)))))