w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;\frac{M \cdot D}{2 \cdot d} \le -1.641307001890876877764859089871069314969 \cdot 10^{106}:\\
\;\;\;\;\mathsf{hypot}\left(\frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}}{\sqrt{\frac{\ell}{-h}}}, \sqrt{1}\right) \cdot w0\\
\mathbf{elif}\;\frac{M \cdot D}{2 \cdot d} \le -2.400424800434625566480183780927380456868 \cdot 10^{-106}:\\
\;\;\;\;\left(\sqrt[3]{\sqrt{1 + \frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\frac{\ell}{-h}}}} \cdot \sqrt[3]{\sqrt{1 + \frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\frac{\ell}{-h}}}}\right) \cdot \left(\sqrt[3]{\sqrt{\mathsf{fma}\left(\frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\ell}, -h, 1\right)}} \cdot w0\right)\\
\mathbf{elif}\;\frac{M \cdot D}{2 \cdot d} \le 6.742814395308295523802265392271778001732 \cdot 10^{-243}:\\
\;\;\;\;w0 \cdot \sqrt{1}\\
\mathbf{elif}\;\frac{M \cdot D}{2 \cdot d} \le 8.330468902335569604940997588223018461521 \cdot 10^{146}:\\
\;\;\;\;\sqrt{\sqrt[3]{1 + \frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\frac{\ell}{-h}}} \cdot \sqrt[3]{1 + \frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\frac{\ell}{-h}}}} \cdot \left(\sqrt{\sqrt[3]{\mathsf{fma}\left(\frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}}{\ell}, -h, 1\right)}} \cdot w0\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{hypot}\left(\frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}}{\sqrt{\frac{\ell}{-h}}}, \sqrt{1}\right) \cdot w0\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r540760 = w0;
double r540761 = 1.0;
double r540762 = M;
double r540763 = D;
double r540764 = r540762 * r540763;
double r540765 = 2.0;
double r540766 = d;
double r540767 = r540765 * r540766;
double r540768 = r540764 / r540767;
double r540769 = pow(r540768, r540765);
double r540770 = h;
double r540771 = l;
double r540772 = r540770 / r540771;
double r540773 = r540769 * r540772;
double r540774 = r540761 - r540773;
double r540775 = sqrt(r540774);
double r540776 = r540760 * r540775;
return r540776;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r540777 = M;
double r540778 = D;
double r540779 = r540777 * r540778;
double r540780 = 2.0;
double r540781 = d;
double r540782 = r540780 * r540781;
double r540783 = r540779 / r540782;
double r540784 = -1.6413070018908769e+106;
bool r540785 = r540783 <= r540784;
double r540786 = 2.0;
double r540787 = r540780 / r540786;
double r540788 = pow(r540783, r540787);
double r540789 = l;
double r540790 = h;
double r540791 = -r540790;
double r540792 = r540789 / r540791;
double r540793 = sqrt(r540792);
double r540794 = r540788 / r540793;
double r540795 = 1.0;
double r540796 = sqrt(r540795);
double r540797 = hypot(r540794, r540796);
double r540798 = w0;
double r540799 = r540797 * r540798;
double r540800 = -2.4004248004346256e-106;
bool r540801 = r540783 <= r540800;
double r540802 = pow(r540783, r540780);
double r540803 = r540802 / r540792;
double r540804 = r540795 + r540803;
double r540805 = sqrt(r540804);
double r540806 = cbrt(r540805);
double r540807 = r540806 * r540806;
double r540808 = r540802 / r540789;
double r540809 = fma(r540808, r540791, r540795);
double r540810 = sqrt(r540809);
double r540811 = cbrt(r540810);
double r540812 = r540811 * r540798;
double r540813 = r540807 * r540812;
double r540814 = 6.742814395308296e-243;
bool r540815 = r540783 <= r540814;
double r540816 = r540798 * r540796;
double r540817 = 8.33046890233557e+146;
bool r540818 = r540783 <= r540817;
double r540819 = cbrt(r540804);
double r540820 = r540819 * r540819;
double r540821 = sqrt(r540820);
double r540822 = cbrt(r540809);
double r540823 = sqrt(r540822);
double r540824 = r540823 * r540798;
double r540825 = r540821 * r540824;
double r540826 = r540818 ? r540825 : r540799;
double r540827 = r540815 ? r540816 : r540826;
double r540828 = r540801 ? r540813 : r540827;
double r540829 = r540785 ? r540799 : r540828;
return r540829;
}



Bits error versus w0



Bits error versus M



Bits error versus D



Bits error versus h



Bits error versus l



Bits error versus d
if (/ (* M D) (* 2.0 d)) < -1.6413070018908769e+106 or 8.33046890233557e+146 < (/ (* M D) (* 2.0 d)) Initial program 57.7
Simplified57.7
rmApplied fma-udef57.7
Simplified57.7
rmApplied add-sqr-sqrt57.7
Applied add-sqr-sqrt59.9
Applied sqr-pow59.9
Applied times-frac51.6
Applied hypot-def38.7
if -1.6413070018908769e+106 < (/ (* M D) (* 2.0 d)) < -2.4004248004346256e-106Initial program 6.3
Simplified6.3
rmApplied fma-udef6.3
Simplified6.2
rmApplied add-cube-cbrt6.3
Applied associate-*l*6.3
Simplified7.4
if -2.4004248004346256e-106 < (/ (* M D) (* 2.0 d)) < 6.742814395308296e-243Initial program 7.0
Simplified7.0
rmApplied fma-udef7.0
Simplified6.3
Taylor expanded around 0 1.0
if 6.742814395308296e-243 < (/ (* M D) (* 2.0 d)) < 8.33046890233557e+146Initial program 5.6
Simplified5.6
rmApplied fma-udef5.6
Simplified5.3
rmApplied add-cube-cbrt5.4
Applied sqrt-prod5.4
Applied associate-*l*5.4
Simplified6.4
Final simplification8.9
herbie shell --seed 2019174 +o rules:numerics
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))