\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.5355029348918996 \cdot 10^{+59}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 1.6307146242092196 \cdot 10^{+109}:\\
\;\;\;\;c0 \cdot \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot d}{D \cdot \left(w \cdot h\right)} + \sqrt{\left(\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w \cdot h} + M\right) \cdot \left(\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w \cdot h} - M\right)}}{w \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r4147523 = c0;
double r4147524 = 2.0;
double r4147525 = w;
double r4147526 = r4147524 * r4147525;
double r4147527 = r4147523 / r4147526;
double r4147528 = d;
double r4147529 = r4147528 * r4147528;
double r4147530 = r4147523 * r4147529;
double r4147531 = h;
double r4147532 = r4147525 * r4147531;
double r4147533 = D;
double r4147534 = r4147533 * r4147533;
double r4147535 = r4147532 * r4147534;
double r4147536 = r4147530 / r4147535;
double r4147537 = r4147536 * r4147536;
double r4147538 = M;
double r4147539 = r4147538 * r4147538;
double r4147540 = r4147537 - r4147539;
double r4147541 = sqrt(r4147540);
double r4147542 = r4147536 + r4147541;
double r4147543 = r4147527 * r4147542;
return r4147543;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r4147544 = d;
double r4147545 = 1.5355029348918996e+59;
bool r4147546 = r4147544 <= r4147545;
double r4147547 = 0.0;
double r4147548 = 1.6307146242092196e+109;
bool r4147549 = r4147544 <= r4147548;
double r4147550 = c0;
double r4147551 = D;
double r4147552 = r4147544 / r4147551;
double r4147553 = r4147550 * r4147552;
double r4147554 = r4147553 * r4147544;
double r4147555 = w;
double r4147556 = h;
double r4147557 = r4147555 * r4147556;
double r4147558 = r4147551 * r4147557;
double r4147559 = r4147554 / r4147558;
double r4147560 = r4147553 * r4147552;
double r4147561 = r4147560 / r4147557;
double r4147562 = M;
double r4147563 = r4147561 + r4147562;
double r4147564 = r4147561 - r4147562;
double r4147565 = r4147563 * r4147564;
double r4147566 = sqrt(r4147565);
double r4147567 = r4147559 + r4147566;
double r4147568 = 2.0;
double r4147569 = r4147555 * r4147568;
double r4147570 = r4147567 / r4147569;
double r4147571 = r4147550 * r4147570;
double r4147572 = r4147549 ? r4147571 : r4147547;
double r4147573 = r4147546 ? r4147547 : r4147572;
return r4147573;
}



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.5355029348918996e+59 or 1.6307146242092196e+109 < d Initial program 58.2
Simplified51.9
Taylor expanded around -inf 33.2
if 1.5355029348918996e+59 < d < 1.6307146242092196e+109Initial program 54.7
Simplified52.2
rmApplied div-inv52.2
Applied associate-*l*52.2
Simplified52.2
rmApplied associate-*r/53.1
Applied associate-/l/53.3
Final simplification34.3
herbie shell --seed 2019134 +o rules:numerics
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
(* (/ 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))))))