\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.960688023451719 \cdot 10^{-143}:\\
\;\;\;\;0\\
\mathbf{elif}\;d \le 3.860215906667738 \cdot 10^{-266}:\\
\;\;\;\;\frac{c0}{w} \cdot \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}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r5892308 = c0;
double r5892309 = 2.0;
double r5892310 = w;
double r5892311 = r5892309 * r5892310;
double r5892312 = r5892308 / r5892311;
double r5892313 = d;
double r5892314 = r5892313 * r5892313;
double r5892315 = r5892308 * r5892314;
double r5892316 = h;
double r5892317 = r5892310 * r5892316;
double r5892318 = D;
double r5892319 = r5892318 * r5892318;
double r5892320 = r5892317 * r5892319;
double r5892321 = r5892315 / r5892320;
double r5892322 = r5892321 * r5892321;
double r5892323 = M;
double r5892324 = r5892323 * r5892323;
double r5892325 = r5892322 - r5892324;
double r5892326 = sqrt(r5892325);
double r5892327 = r5892321 + r5892326;
double r5892328 = r5892312 * r5892327;
return r5892328;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r5892329 = d;
double r5892330 = -1.960688023451719e-143;
bool r5892331 = r5892329 <= r5892330;
double r5892332 = 0.0;
double r5892333 = 3.860215906667738e-266;
bool r5892334 = r5892329 <= r5892333;
double r5892335 = c0;
double r5892336 = w;
double r5892337 = r5892335 / r5892336;
double r5892338 = D;
double r5892339 = r5892329 / r5892338;
double r5892340 = r5892339 * r5892339;
double r5892341 = h;
double r5892342 = r5892340 / r5892341;
double r5892343 = r5892342 * r5892337;
double r5892344 = M;
double r5892345 = r5892343 + r5892344;
double r5892346 = sqrt(r5892345);
double r5892347 = r5892343 - r5892344;
double r5892348 = sqrt(r5892347);
double r5892349 = fma(r5892346, r5892348, r5892343);
double r5892350 = 2.0;
double r5892351 = r5892349 / r5892350;
double r5892352 = r5892337 * r5892351;
double r5892353 = r5892334 ? r5892352 : r5892332;
double r5892354 = r5892331 ? r5892332 : r5892353;
return r5892354;
}



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 < -1.960688023451719e-143 or 3.860215906667738e-266 < d Initial program 57.7
Simplified53.1
Taylor expanded around inf 34.3
Taylor expanded around 0 32.9
if -1.960688023451719e-143 < d < 3.860215906667738e-266Initial program 60.6
Simplified42.8
rmApplied difference-of-squares42.8
Applied sqrt-prod46.8
Applied fma-def46.8
Final simplification33.8
herbie shell --seed 2019162 +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))))))