\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 \cdot D \le 2.166841599644002 \cdot 10^{+302}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M}, \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}, \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right)}{2} \cdot \frac{c0}{w}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r5716522 = c0;
double r5716523 = 2.0;
double r5716524 = w;
double r5716525 = r5716523 * r5716524;
double r5716526 = r5716522 / r5716525;
double r5716527 = d;
double r5716528 = r5716527 * r5716527;
double r5716529 = r5716522 * r5716528;
double r5716530 = h;
double r5716531 = r5716524 * r5716530;
double r5716532 = D;
double r5716533 = r5716532 * r5716532;
double r5716534 = r5716531 * r5716533;
double r5716535 = r5716529 / r5716534;
double r5716536 = r5716535 * r5716535;
double r5716537 = M;
double r5716538 = r5716537 * r5716537;
double r5716539 = r5716536 - r5716538;
double r5716540 = sqrt(r5716539);
double r5716541 = r5716535 + r5716540;
double r5716542 = r5716526 * r5716541;
return r5716542;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r5716543 = D;
double r5716544 = r5716543 * r5716543;
double r5716545 = 2.166841599644002e+302;
bool r5716546 = r5716544 <= r5716545;
double r5716547 = 0.0;
double r5716548 = d;
double r5716549 = r5716548 / r5716543;
double r5716550 = r5716549 * r5716549;
double r5716551 = h;
double r5716552 = r5716550 / r5716551;
double r5716553 = c0;
double r5716554 = w;
double r5716555 = r5716553 / r5716554;
double r5716556 = r5716552 * r5716555;
double r5716557 = M;
double r5716558 = r5716556 + r5716557;
double r5716559 = sqrt(r5716558);
double r5716560 = r5716556 - r5716557;
double r5716561 = sqrt(r5716560);
double r5716562 = fma(r5716559, r5716561, r5716556);
double r5716563 = 2.0;
double r5716564 = r5716562 / r5716563;
double r5716565 = r5716564 * r5716555;
double r5716566 = r5716546 ? r5716547 : r5716565;
return r5716566;
}



Bits error versus c0



Bits error versus w



Bits error versus h



Bits error versus D



Bits error versus d



Bits error versus M
if (* D D) < 2.166841599644002e+302Initial program 57.6
Simplified54.0
Taylor expanded around inf 33.8
Taylor expanded around 0 32.3
if 2.166841599644002e+302 < (* D D) Initial program 61.2
Simplified44.4
rmApplied difference-of-squares44.4
Applied sqrt-prod47.1
Applied fma-def47.1
Final simplification33.9
herbie shell --seed 2019168 +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))))))