\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 -9.077028250794222246358594438109021424414 \cdot 10^{-34}:\\
\;\;\;\;\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{1}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}\right)}^{\left(\frac{1}{2}\right)} \cdot \left({\left(\frac{1}{\sqrt[3]{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\sqrt[3]{\sqrt[3]{\ell}}}\right)}^{\left(\frac{1}{2}\right)}\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{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{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 - \frac{\left(\sqrt[3]{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h} \cdot \sqrt[3]{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}\right) \cdot \sqrt[3]{\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h}}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r191201 = d;
double r191202 = h;
double r191203 = r191201 / r191202;
double r191204 = 1.0;
double r191205 = 2.0;
double r191206 = r191204 / r191205;
double r191207 = pow(r191203, r191206);
double r191208 = l;
double r191209 = r191201 / r191208;
double r191210 = pow(r191209, r191206);
double r191211 = r191207 * r191210;
double r191212 = M;
double r191213 = D;
double r191214 = r191212 * r191213;
double r191215 = r191205 * r191201;
double r191216 = r191214 / r191215;
double r191217 = pow(r191216, r191205);
double r191218 = r191206 * r191217;
double r191219 = r191202 / r191208;
double r191220 = r191218 * r191219;
double r191221 = r191204 - r191220;
double r191222 = r191211 * r191221;
return r191222;
}
double f(double d, double h, double l, double M, double D) {
double r191223 = l;
double r191224 = -9.077028250794222e-34;
bool r191225 = r191223 <= r191224;
double r191226 = 1.0;
double r191227 = h;
double r191228 = cbrt(r191227);
double r191229 = r191228 * r191228;
double r191230 = r191226 / r191229;
double r191231 = 1.0;
double r191232 = 2.0;
double r191233 = r191231 / r191232;
double r191234 = pow(r191230, r191233);
double r191235 = d;
double r191236 = r191235 / r191228;
double r191237 = pow(r191236, r191233);
double r191238 = r191234 * r191237;
double r191239 = cbrt(r191223);
double r191240 = r191239 * r191239;
double r191241 = r191226 / r191240;
double r191242 = pow(r191241, r191233);
double r191243 = cbrt(r191240);
double r191244 = r191226 / r191243;
double r191245 = pow(r191244, r191233);
double r191246 = cbrt(r191239);
double r191247 = r191235 / r191246;
double r191248 = pow(r191247, r191233);
double r191249 = r191245 * r191248;
double r191250 = r191242 * r191249;
double r191251 = r191238 * r191250;
double r191252 = M;
double r191253 = D;
double r191254 = r191252 * r191253;
double r191255 = r191232 * r191235;
double r191256 = r191254 / r191255;
double r191257 = pow(r191256, r191232);
double r191258 = r191233 * r191257;
double r191259 = r191227 / r191223;
double r191260 = r191258 * r191259;
double r191261 = r191231 - r191260;
double r191262 = r191251 * r191261;
double r191263 = r191235 / r191239;
double r191264 = pow(r191263, r191233);
double r191265 = r191242 * r191264;
double r191266 = r191238 * r191265;
double r191267 = r191258 * r191227;
double r191268 = cbrt(r191267);
double r191269 = r191268 * r191268;
double r191270 = r191269 * r191268;
double r191271 = r191270 / r191223;
double r191272 = r191231 - r191271;
double r191273 = r191266 * r191272;
double r191274 = r191225 ? r191262 : r191273;
return r191274;
}



Bits error versus d



Bits error versus h



Bits error versus l



Bits error versus M



Bits error versus D
Results
if l < -9.077028250794222e-34Initial program 24.8
rmApplied add-cube-cbrt25.0
Applied *-un-lft-identity25.0
Applied times-frac25.0
Applied unpow-prod-down19.2
rmApplied add-cube-cbrt19.3
Applied *-un-lft-identity19.3
Applied times-frac19.3
Applied unpow-prod-down16.1
rmApplied add-cube-cbrt16.1
Applied cbrt-prod16.1
Applied *-un-lft-identity16.1
Applied times-frac16.1
Applied unpow-prod-down15.8
if -9.077028250794222e-34 < l Initial program 27.5
rmApplied add-cube-cbrt27.8
Applied *-un-lft-identity27.8
Applied times-frac27.8
Applied unpow-prod-down23.5
rmApplied add-cube-cbrt23.7
Applied *-un-lft-identity23.7
Applied times-frac23.7
Applied unpow-prod-down19.7
rmApplied associate-*r/15.0
rmApplied add-cube-cbrt15.0
Final simplification15.3
herbie shell --seed 2019305
(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)))))