\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}\;h \le 1.7724222504113438 \cdot 10^{-190}:\\
\;\;\;\;0\\
\mathbf{elif}\;h \le 1.535976817000598 \cdot 10^{-34}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{w} \cdot \frac{c0}{h} + M}, \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{w} \cdot \frac{c0}{h} - M}, \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} \cdot \frac{c0}{h}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r1826505 = c0;
double r1826506 = 2.0;
double r1826507 = w;
double r1826508 = r1826506 * r1826507;
double r1826509 = r1826505 / r1826508;
double r1826510 = d;
double r1826511 = r1826510 * r1826510;
double r1826512 = r1826505 * r1826511;
double r1826513 = h;
double r1826514 = r1826507 * r1826513;
double r1826515 = D;
double r1826516 = r1826515 * r1826515;
double r1826517 = r1826514 * r1826516;
double r1826518 = r1826512 / r1826517;
double r1826519 = r1826518 * r1826518;
double r1826520 = M;
double r1826521 = r1826520 * r1826520;
double r1826522 = r1826519 - r1826521;
double r1826523 = sqrt(r1826522);
double r1826524 = r1826518 + r1826523;
double r1826525 = r1826509 * r1826524;
return r1826525;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r1826526 = h;
double r1826527 = 1.7724222504113438e-190;
bool r1826528 = r1826526 <= r1826527;
double r1826529 = 0.0;
double r1826530 = 1.535976817000598e-34;
bool r1826531 = r1826526 <= r1826530;
double r1826532 = c0;
double r1826533 = w;
double r1826534 = r1826532 / r1826533;
double r1826535 = d;
double r1826536 = D;
double r1826537 = r1826535 / r1826536;
double r1826538 = r1826537 * r1826537;
double r1826539 = r1826538 / r1826533;
double r1826540 = r1826532 / r1826526;
double r1826541 = r1826539 * r1826540;
double r1826542 = M;
double r1826543 = r1826541 + r1826542;
double r1826544 = sqrt(r1826543);
double r1826545 = r1826541 - r1826542;
double r1826546 = sqrt(r1826545);
double r1826547 = fma(r1826544, r1826546, r1826541);
double r1826548 = 2.0;
double r1826549 = r1826547 / r1826548;
double r1826550 = r1826534 * r1826549;
double r1826551 = r1826531 ? r1826550 : r1826529;
double r1826552 = r1826528 ? r1826529 : r1826551;
return r1826552;
}



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 h < 1.7724222504113438e-190 or 1.535976817000598e-34 < h Initial program 58.4
Simplified53.6
Taylor expanded around inf 35.9
Taylor expanded around 0 34.1
if 1.7724222504113438e-190 < h < 1.535976817000598e-34Initial program 58.5
Simplified52.9
rmApplied difference-of-squares52.9
Applied sqrt-prod54.4
Applied fma-def54.3
Final simplification37.0
herbie shell --seed 2019154 +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))))))