\frac{c0}{2 \cdot w} \cdot \left(\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} + \sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} - M \cdot M}\right)\begin{array}{l}
\mathbf{if}\;d \le 1.028014946374977112793459567345674978253 \cdot 10^{-41}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r106430 = c0;
double r106431 = 2.0;
double r106432 = w;
double r106433 = r106431 * r106432;
double r106434 = r106430 / r106433;
double r106435 = d;
double r106436 = r106435 * r106435;
double r106437 = r106430 * r106436;
double r106438 = h;
double r106439 = r106432 * r106438;
double r106440 = D;
double r106441 = r106440 * r106440;
double r106442 = r106439 * r106441;
double r106443 = r106437 / r106442;
double r106444 = r106443 * r106443;
double r106445 = M;
double r106446 = r106445 * r106445;
double r106447 = r106444 - r106446;
double r106448 = sqrt(r106447);
double r106449 = r106443 + r106448;
double r106450 = r106434 * r106449;
return r106450;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r106451 = d;
double r106452 = 1.0280149463749771e-41;
bool r106453 = r106451 <= r106452;
double r106454 = 0.0;
double r106455 = 1.8791322752630873e+52;
bool r106456 = r106451 <= r106455;
double r106457 = c0;
double r106458 = 2.0;
double r106459 = w;
double r106460 = r106458 * r106459;
double r106461 = r106457 / r106460;
double r106462 = 2.0;
double r106463 = pow(r106451, r106462);
double r106464 = r106463 * r106457;
double r106465 = D;
double r106466 = pow(r106465, r106462);
double r106467 = h;
double r106468 = r106466 * r106467;
double r106469 = r106459 * r106468;
double r106470 = r106464 / r106469;
double r106471 = r106462 * r106470;
double r106472 = r106461 * r106471;
double r106473 = r106456 ? r106472 : r106454;
double r106474 = r106453 ? r106454 : r106473;
return r106474;
}



Bits error versus c0



Bits error versus w



Bits error versus h



Bits error versus D



Bits error versus d



Bits error versus M
Results
if d < 1.0280149463749771e-41 or 1.8791322752630873e+52 < d Initial program 59.9
Taylor expanded around inf 34.6
rmApplied add-cbrt-cube34.6
Applied add-cbrt-cube41.5
Applied add-cbrt-cube41.5
Applied cbrt-unprod41.5
Applied add-cbrt-cube48.4
Applied cbrt-undiv48.8
Applied cbrt-unprod48.8
Simplified32.7
if 1.0280149463749771e-41 < d < 1.8791322752630873e+52Initial program 52.7
rmApplied associate-/l*53.8
Taylor expanded around inf 54.7
Final simplification34.5
herbie shell --seed 2019323
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
:precision binary64
(* (/ c0 (* 2 w)) (+ (/ (* c0 (* d d)) (* (* w h) (* D D))) (sqrt (- (* (/ (* c0 (* d d)) (* (* w h) (* D D))) (/ (* c0 (* d d)) (* (* w h) (* D D)))) (* M M))))))