\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.20026132731181218 \cdot 10^{-19}:\\
\;\;\;\;\left(\left({\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(\left({\left(\frac{\sqrt[3]{d}}{\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) \cdot {\left(\frac{\sqrt[3]{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{elif}\;\ell \le 2.3801564825230497 \cdot 10^{193}:\\
\;\;\;\;\left(\left({\left(\frac{1}{\sqrt[3]{h} \cdot \sqrt[3]{h}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{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}{\frac{2 \cdot d}{D}}\right)}^{2}\right) \cdot h}{\ell}\right)\\
\mathbf{else}:\\
\;\;\;\;\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)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r244161 = d;
double r244162 = h;
double r244163 = r244161 / r244162;
double r244164 = 1.0;
double r244165 = 2.0;
double r244166 = r244164 / r244165;
double r244167 = pow(r244163, r244166);
double r244168 = l;
double r244169 = r244161 / r244168;
double r244170 = pow(r244169, r244166);
double r244171 = r244167 * r244170;
double r244172 = M;
double r244173 = D;
double r244174 = r244172 * r244173;
double r244175 = r244165 * r244161;
double r244176 = r244174 / r244175;
double r244177 = pow(r244176, r244165);
double r244178 = r244166 * r244177;
double r244179 = r244162 / r244168;
double r244180 = r244178 * r244179;
double r244181 = r244164 - r244180;
double r244182 = r244171 * r244181;
return r244182;
}
double f(double d, double h, double l, double M, double D) {
double r244183 = l;
double r244184 = -2.200261327311812e-19;
bool r244185 = r244183 <= r244184;
double r244186 = 1.0;
double r244187 = h;
double r244188 = cbrt(r244187);
double r244189 = r244188 * r244188;
double r244190 = r244186 / r244189;
double r244191 = 1.0;
double r244192 = 2.0;
double r244193 = r244191 / r244192;
double r244194 = pow(r244190, r244193);
double r244195 = d;
double r244196 = r244195 / r244188;
double r244197 = pow(r244196, r244193);
double r244198 = r244194 * r244197;
double r244199 = cbrt(r244195);
double r244200 = cbrt(r244183);
double r244201 = r244199 / r244200;
double r244202 = pow(r244201, r244193);
double r244203 = r244202 * r244202;
double r244204 = r244203 * r244202;
double r244205 = r244198 * r244204;
double r244206 = M;
double r244207 = D;
double r244208 = r244206 * r244207;
double r244209 = r244192 * r244195;
double r244210 = r244208 / r244209;
double r244211 = pow(r244210, r244192);
double r244212 = r244193 * r244211;
double r244213 = r244187 / r244183;
double r244214 = r244212 * r244213;
double r244215 = r244191 - r244214;
double r244216 = r244205 * r244215;
double r244217 = 2.3801564825230497e+193;
bool r244218 = r244183 <= r244217;
double r244219 = r244199 * r244199;
double r244220 = r244200 * r244200;
double r244221 = r244219 / r244220;
double r244222 = pow(r244221, r244193);
double r244223 = r244222 * r244202;
double r244224 = r244198 * r244223;
double r244225 = r244209 / r244207;
double r244226 = r244206 / r244225;
double r244227 = pow(r244226, r244192);
double r244228 = r244193 * r244227;
double r244229 = r244228 * r244187;
double r244230 = r244229 / r244183;
double r244231 = r244191 - r244230;
double r244232 = r244224 * r244231;
double r244233 = pow(r244195, r244193);
double r244234 = r244186 / r244187;
double r244235 = pow(r244234, r244193);
double r244236 = r244233 * r244235;
double r244237 = r244195 / r244183;
double r244238 = pow(r244237, r244193);
double r244239 = r244236 * r244238;
double r244240 = r244239 * r244215;
double r244241 = r244218 ? r244232 : r244240;
double r244242 = r244185 ? r244216 : r244241;
return r244242;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -2.200261327311812e-19Initial program 26.1
rmApplied add-cube-cbrt26.3
Applied *-un-lft-identity26.3
Applied times-frac26.3
Applied unpow-prod-down20.1
rmApplied add-cube-cbrt20.2
Applied add-cube-cbrt20.3
Applied times-frac20.3
Applied unpow-prod-down16.7
rmApplied times-frac16.8
Applied unpow-prod-down16.5
if -2.200261327311812e-19 < l < 2.3801564825230497e+193Initial program 25.5
rmApplied add-cube-cbrt25.8
Applied *-un-lft-identity25.8
Applied times-frac25.8
Applied unpow-prod-down21.6
rmApplied add-cube-cbrt21.7
Applied add-cube-cbrt21.8
Applied times-frac21.8
Applied unpow-prod-down17.8
rmApplied associate-*r/11.9
rmApplied associate-/l*12.5
if 2.3801564825230497e+193 < l Initial program 30.1
rmApplied div-inv30.1
Applied unpow-prod-down22.0
Final simplification15.1
herbie shell --seed 2020081
(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)))))