\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}\;\left(\frac{\left(d \cdot d\right) \cdot c0}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} + \sqrt{\frac{\left(d \cdot d\right) \cdot c0}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{\left(d \cdot d\right) \cdot c0}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M}\right) \cdot \frac{c0}{w \cdot 2} \le 5.227488411028050344845658730793831779279 \cdot 10^{210}:\\
\;\;\;\;\frac{e^{\log \left(\sqrt{\frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h} \cdot \frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h} - M \cdot M} + \frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h}\right)}}{2} \cdot \frac{c0}{w}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r5649434 = c0;
double r5649435 = 2.0;
double r5649436 = w;
double r5649437 = r5649435 * r5649436;
double r5649438 = r5649434 / r5649437;
double r5649439 = d;
double r5649440 = r5649439 * r5649439;
double r5649441 = r5649434 * r5649440;
double r5649442 = h;
double r5649443 = r5649436 * r5649442;
double r5649444 = D;
double r5649445 = r5649444 * r5649444;
double r5649446 = r5649443 * r5649445;
double r5649447 = r5649441 / r5649446;
double r5649448 = r5649447 * r5649447;
double r5649449 = M;
double r5649450 = r5649449 * r5649449;
double r5649451 = r5649448 - r5649450;
double r5649452 = sqrt(r5649451);
double r5649453 = r5649447 + r5649452;
double r5649454 = r5649438 * r5649453;
return r5649454;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r5649455 = d;
double r5649456 = r5649455 * r5649455;
double r5649457 = c0;
double r5649458 = r5649456 * r5649457;
double r5649459 = D;
double r5649460 = r5649459 * r5649459;
double r5649461 = w;
double r5649462 = h;
double r5649463 = r5649461 * r5649462;
double r5649464 = r5649460 * r5649463;
double r5649465 = r5649458 / r5649464;
double r5649466 = r5649465 * r5649465;
double r5649467 = M;
double r5649468 = r5649467 * r5649467;
double r5649469 = r5649466 - r5649468;
double r5649470 = sqrt(r5649469);
double r5649471 = r5649465 + r5649470;
double r5649472 = 2.0;
double r5649473 = r5649461 * r5649472;
double r5649474 = r5649457 / r5649473;
double r5649475 = r5649471 * r5649474;
double r5649476 = 5.2274884110280503e+210;
bool r5649477 = r5649475 <= r5649476;
double r5649478 = r5649457 / r5649461;
double r5649479 = r5649455 / r5649459;
double r5649480 = r5649479 * r5649479;
double r5649481 = r5649478 * r5649480;
double r5649482 = r5649481 / r5649462;
double r5649483 = r5649482 * r5649482;
double r5649484 = r5649483 - r5649468;
double r5649485 = sqrt(r5649484);
double r5649486 = r5649485 + r5649482;
double r5649487 = log(r5649486);
double r5649488 = exp(r5649487);
double r5649489 = r5649488 / r5649472;
double r5649490 = r5649489 * r5649478;
double r5649491 = 0.0;
double r5649492 = r5649477 ? r5649490 : r5649491;
return r5649492;
}



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 (* (/ c0 (* 2.0 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))))) < 5.2274884110280503e+210Initial program 36.2
Simplified35.2
rmApplied add-exp-log37.2
if 5.2274884110280503e+210 < (* (/ c0 (* 2.0 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))))) Initial program 63.9
Simplified56.5
Taylor expanded around inf 33.4
Taylor expanded around 0 31.4
Final simplification32.3
herbie shell --seed 2019200
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
(* (/ c0 (* 2.0 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))))))