\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}\;w \le -3.703832811596682002705890140507852421431 \cdot 10^{-173}:\\
\;\;\;\;\frac{\frac{\frac{2 \cdot \left(c0 \cdot d\right)}{D} \cdot \frac{c0 \cdot d}{w}}{h \cdot \left(w \cdot D\right)}}{2}\\
\mathbf{elif}\;w \le 643228046619691738325706931699712:\\
\;\;\;\;\frac{\frac{\frac{2}{w \cdot D} \cdot \frac{c0 \cdot d}{\frac{h}{c0 \cdot d}}}{D} \cdot \frac{1}{w}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{2 \cdot \left(c0 \cdot d\right)}{D} \cdot \frac{c0 \cdot d}{w}}{h \cdot \left(w \cdot D\right)}}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r8359431 = c0;
double r8359432 = 2.0;
double r8359433 = w;
double r8359434 = r8359432 * r8359433;
double r8359435 = r8359431 / r8359434;
double r8359436 = d;
double r8359437 = r8359436 * r8359436;
double r8359438 = r8359431 * r8359437;
double r8359439 = h;
double r8359440 = r8359433 * r8359439;
double r8359441 = D;
double r8359442 = r8359441 * r8359441;
double r8359443 = r8359440 * r8359442;
double r8359444 = r8359438 / r8359443;
double r8359445 = r8359444 * r8359444;
double r8359446 = M;
double r8359447 = r8359446 * r8359446;
double r8359448 = r8359445 - r8359447;
double r8359449 = sqrt(r8359448);
double r8359450 = r8359444 + r8359449;
double r8359451 = r8359435 * r8359450;
return r8359451;
}
double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
double r8359452 = w;
double r8359453 = -3.703832811596682e-173;
bool r8359454 = r8359452 <= r8359453;
double r8359455 = 2.0;
double r8359456 = c0;
double r8359457 = d;
double r8359458 = r8359456 * r8359457;
double r8359459 = r8359455 * r8359458;
double r8359460 = D;
double r8359461 = r8359459 / r8359460;
double r8359462 = r8359458 / r8359452;
double r8359463 = r8359461 * r8359462;
double r8359464 = h;
double r8359465 = r8359452 * r8359460;
double r8359466 = r8359464 * r8359465;
double r8359467 = r8359463 / r8359466;
double r8359468 = 2.0;
double r8359469 = r8359467 / r8359468;
double r8359470 = 6.4322804661969174e+32;
bool r8359471 = r8359452 <= r8359470;
double r8359472 = r8359455 / r8359465;
double r8359473 = r8359464 / r8359458;
double r8359474 = r8359458 / r8359473;
double r8359475 = r8359472 * r8359474;
double r8359476 = r8359475 / r8359460;
double r8359477 = 1.0;
double r8359478 = r8359477 / r8359452;
double r8359479 = r8359476 * r8359478;
double r8359480 = r8359479 / r8359468;
double r8359481 = r8359471 ? r8359480 : r8359469;
double r8359482 = r8359454 ? r8359469 : r8359481;
return r8359482;
}



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 w < -3.703832811596682e-173 or 6.4322804661969174e+32 < w Initial program 58.7
Simplified53.1
Taylor expanded around 0 59.2
Simplified54.6
Taylor expanded around 0 60.5
Simplified51.5
rmApplied *-un-lft-identity51.5
Applied times-frac51.4
Applied associate-*l*49.2
rmApplied associate-*r/48.1
Applied frac-times48.8
Simplified47.2
if -3.703832811596682e-173 < w < 6.4322804661969174e+32Initial program 60.1
Simplified55.1
Taylor expanded around 0 60.0
Simplified59.6
Taylor expanded around 0 61.9
Simplified58.7
rmApplied *-un-lft-identity58.7
Applied times-frac58.7
Applied associate-*l*56.1
rmApplied *-un-lft-identity56.1
Applied times-frac56.1
Applied associate-*l*56.1
Simplified55.3
Final simplification50.3
herbie shell --seed 2019174
(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))))))