\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 8.117642060768603289178264207303360420434 \cdot 10^{-277}:\\
\;\;\;\;\frac{c0}{2} \cdot \frac{\sqrt{\left(\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{h \cdot w} + M\right) \cdot \left(\frac{c0 \cdot \frac{d}{D}}{\frac{h \cdot w}{\frac{d}{D}}} - M\right)} + \frac{\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{w}}{h}}{w}\\
\mathbf{elif}\;d \cdot d \le 2.99512029873944103650388031781332289925 \cdot 10^{260}:\\
\;\;\;\;\frac{\frac{2 \cdot c0}{\frac{D \cdot \left(\left(h \cdot w\right) \cdot D\right)}{d \cdot d}}}{w} \cdot \frac{c0}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c0}{2} \cdot \frac{\sqrt{\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{h \cdot w} + \sqrt{\left(\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{h \cdot w} - M\right) \cdot \left(\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{h \cdot w} + M\right)}} \cdot \sqrt{\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{h \cdot w} + \sqrt{\left(\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{h \cdot w} - M\right) \cdot \left(\frac{\frac{d}{D} \cdot \left(c0 \cdot \frac{d}{D}\right)}{h \cdot w} + M\right)}}}{w}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r6098362 = c0;
double r6098363 = 2.0;
double r6098364 = w;
double r6098365 = r6098363 * r6098364;
double r6098366 = r6098362 / r6098365;
double r6098367 = d;
double r6098368 = r6098367 * r6098367;
double r6098369 = r6098362 * r6098368;
double r6098370 = h;
double r6098371 = r6098364 * r6098370;
double r6098372 = D;
double r6098373 = r6098372 * r6098372;
double r6098374 = r6098371 * r6098373;
double r6098375 = r6098369 / r6098374;
double r6098376 = r6098375 * r6098375;
double r6098377 = M;
double r6098378 = r6098377 * r6098377;
double r6098379 = r6098376 - r6098378;
double r6098380 = sqrt(r6098379);
double r6098381 = r6098375 + r6098380;
double r6098382 = r6098366 * r6098381;
return r6098382;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r6098383 = d;
double r6098384 = r6098383 * r6098383;
double r6098385 = 8.117642060768603e-277;
bool r6098386 = r6098384 <= r6098385;
double r6098387 = c0;
double r6098388 = 2.0;
double r6098389 = r6098387 / r6098388;
double r6098390 = D;
double r6098391 = r6098383 / r6098390;
double r6098392 = r6098387 * r6098391;
double r6098393 = r6098391 * r6098392;
double r6098394 = h;
double r6098395 = w;
double r6098396 = r6098394 * r6098395;
double r6098397 = r6098393 / r6098396;
double r6098398 = M;
double r6098399 = r6098397 + r6098398;
double r6098400 = r6098396 / r6098391;
double r6098401 = r6098392 / r6098400;
double r6098402 = r6098401 - r6098398;
double r6098403 = r6098399 * r6098402;
double r6098404 = sqrt(r6098403);
double r6098405 = r6098393 / r6098395;
double r6098406 = r6098405 / r6098394;
double r6098407 = r6098404 + r6098406;
double r6098408 = r6098407 / r6098395;
double r6098409 = r6098389 * r6098408;
double r6098410 = 2.995120298739441e+260;
bool r6098411 = r6098384 <= r6098410;
double r6098412 = 2.0;
double r6098413 = r6098412 * r6098387;
double r6098414 = r6098396 * r6098390;
double r6098415 = r6098390 * r6098414;
double r6098416 = r6098415 / r6098384;
double r6098417 = r6098413 / r6098416;
double r6098418 = r6098417 / r6098395;
double r6098419 = r6098418 * r6098389;
double r6098420 = r6098397 - r6098398;
double r6098421 = r6098420 * r6098399;
double r6098422 = sqrt(r6098421);
double r6098423 = r6098397 + r6098422;
double r6098424 = sqrt(r6098423);
double r6098425 = r6098424 * r6098424;
double r6098426 = r6098425 / r6098395;
double r6098427 = r6098389 * r6098426;
double r6098428 = r6098411 ? r6098419 : r6098427;
double r6098429 = r6098386 ? r6098409 : r6098428;
return r6098429;
}



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 (* d d) < 8.117642060768603e-277Initial program 62.2
Simplified43.5
rmApplied associate-/l*44.3
rmApplied associate-/r*45.6
if 8.117642060768603e-277 < (* d d) < 2.995120298739441e+260Initial program 55.5
Simplified51.8
Taylor expanded around 0 55.4
Simplified52.3
if 2.995120298739441e+260 < (* d d) Initial program 63.2
Simplified56.4
rmApplied add-sqr-sqrt56.6
Final simplification53.3
herbie shell --seed 2019170
(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))))))