\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 \frac{-3556974296846607}{1.167984798111281975972139931059274579173 \cdot 10^{195}}:\\
\;\;\;\;\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 - \left(\frac{1}{2} \cdot {\left(\frac{M}{2} \cdot \frac{D}{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({\left(\frac{\sqrt[3]{1}}{\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)\right) \cdot \left(1 - \left(\left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot h\right) \cdot \frac{1}{\ell}\right)\\
\end{array}double f(double d, double h, double l, double M, double D) {
double r325367 = d;
double r325368 = h;
double r325369 = r325367 / r325368;
double r325370 = 1.0;
double r325371 = 2.0;
double r325372 = r325370 / r325371;
double r325373 = pow(r325369, r325372);
double r325374 = l;
double r325375 = r325367 / r325374;
double r325376 = pow(r325375, r325372);
double r325377 = r325373 * r325376;
double r325378 = M;
double r325379 = D;
double r325380 = r325378 * r325379;
double r325381 = r325371 * r325367;
double r325382 = r325380 / r325381;
double r325383 = pow(r325382, r325371);
double r325384 = r325372 * r325383;
double r325385 = r325368 / r325374;
double r325386 = r325384 * r325385;
double r325387 = r325370 - r325386;
double r325388 = r325377 * r325387;
return r325388;
}
double f(double d, double h, double l, double M, double D) {
double r325389 = d;
double r325390 = h;
double r325391 = r325389 / r325390;
double r325392 = 1.0;
double r325393 = 2.0;
double r325394 = r325392 / r325393;
double r325395 = pow(r325391, r325394);
double r325396 = l;
double r325397 = r325389 / r325396;
double r325398 = pow(r325397, r325394);
double r325399 = r325395 * r325398;
double r325400 = M;
double r325401 = D;
double r325402 = r325400 * r325401;
double r325403 = r325393 * r325389;
double r325404 = r325402 / r325403;
double r325405 = pow(r325404, r325393);
double r325406 = r325394 * r325405;
double r325407 = r325390 / r325396;
double r325408 = r325406 * r325407;
double r325409 = r325392 - r325408;
double r325410 = r325399 * r325409;
double r325411 = -3556974296846607.0;
double r325412 = 1.167984798111282e+195;
double r325413 = r325411 / r325412;
bool r325414 = r325410 <= r325413;
double r325415 = cbrt(r325389);
double r325416 = r325415 * r325415;
double r325417 = cbrt(r325390);
double r325418 = r325417 * r325417;
double r325419 = r325416 / r325418;
double r325420 = pow(r325419, r325394);
double r325421 = r325415 / r325417;
double r325422 = pow(r325421, r325394);
double r325423 = r325420 * r325422;
double r325424 = r325423 * r325398;
double r325425 = r325400 / r325393;
double r325426 = r325401 / r325389;
double r325427 = r325425 * r325426;
double r325428 = pow(r325427, r325393);
double r325429 = r325394 * r325428;
double r325430 = r325429 * r325407;
double r325431 = r325392 - r325430;
double r325432 = r325424 * r325431;
double r325433 = 1.0;
double r325434 = r325416 / r325433;
double r325435 = pow(r325434, r325394);
double r325436 = cbrt(r325433);
double r325437 = cbrt(r325396);
double r325438 = r325437 * r325437;
double r325439 = r325436 / r325438;
double r325440 = pow(r325439, r325394);
double r325441 = r325415 / r325437;
double r325442 = pow(r325441, r325394);
double r325443 = r325440 * r325442;
double r325444 = r325435 * r325443;
double r325445 = r325423 * r325444;
double r325446 = r325406 * r325390;
double r325447 = r325433 / r325396;
double r325448 = r325446 * r325447;
double r325449 = r325392 - r325448;
double r325450 = r325445 * r325449;
double r325451 = r325414 ? r325432 : r325450;
return r325451;
}



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)))) < -3.0453943429730406e-180Initial program 28.5
rmApplied add-cube-cbrt28.7
Applied add-cube-cbrt28.8
Applied times-frac28.8
Applied unpow-prod-down28.5
rmApplied times-frac29.8
if -3.0453943429730406e-180 < (* (* (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 27.1
rmApplied add-cube-cbrt27.4
Applied add-cube-cbrt27.5
Applied times-frac27.5
Applied unpow-prod-down21.0
rmApplied *-un-lft-identity21.0
Applied add-cube-cbrt21.2
Applied times-frac21.2
Applied unpow-prod-down17.0
rmApplied div-inv17.0
Applied associate-*r*14.0
rmApplied add-cube-cbrt14.1
Applied *-un-lft-identity14.1
Applied cbrt-prod14.1
Applied times-frac14.1
Applied unpow-prod-down12.5
Final simplification15.6
herbie shell --seed 2019303
(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)))))