\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}\;M \le 3.34750491238746575446583831459992275621 \cdot 10^{-281}:\\
\;\;\;\;\frac{\left(\frac{d}{\sqrt[3]{w}} \cdot \left(\frac{0}{h \cdot D} \cdot \frac{2}{D}\right)\right) \cdot \frac{c0}{w}}{2}\\
\mathbf{elif}\;M \le 1.03379078061023875438654714236971941009 \cdot 10^{-184}:\\
\;\;\;\;\frac{\left(\left(\sqrt[3]{c0} \cdot \sqrt[3]{c0}\right) \cdot \left(\left(\left(\frac{\frac{c0}{\sqrt[3]{w}}}{D} \cdot \frac{\frac{d}{\sqrt[3]{w}}}{h}\right) \cdot \frac{d}{\sqrt[3]{w}}\right) \cdot \frac{2}{D}\right)\right) \cdot \frac{\sqrt[3]{c0}}{w}}{2}\\
\mathbf{elif}\;M \le 2.289096923733291240007388617918193953003 \cdot 10^{-126}:\\
\;\;\;\;\frac{\left(\frac{d}{\sqrt[3]{w}} \cdot \left(\frac{0}{h \cdot D} \cdot \frac{2}{D}\right)\right) \cdot \frac{c0}{w}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c0}{w} \cdot \left(\left(\frac{2}{D} \cdot \frac{\left(\sqrt[3]{c0} \cdot \sqrt[3]{c0}\right) \cdot \left(\frac{\sqrt[3]{c0}}{\sqrt[3]{w}} \cdot \frac{d}{\sqrt[3]{w}}\right)}{h \cdot D}\right) \cdot \frac{d}{\sqrt[3]{w}}\right)}{2}\\
\end{array}double f(double c0, double w, double h, double D, double d, double M) {
double r7023475 = c0;
double r7023476 = 2.0;
double r7023477 = w;
double r7023478 = r7023476 * r7023477;
double r7023479 = r7023475 / r7023478;
double r7023480 = d;
double r7023481 = r7023480 * r7023480;
double r7023482 = r7023475 * r7023481;
double r7023483 = h;
double r7023484 = r7023477 * r7023483;
double r7023485 = D;
double r7023486 = r7023485 * r7023485;
double r7023487 = r7023484 * r7023486;
double r7023488 = r7023482 / r7023487;
double r7023489 = r7023488 * r7023488;
double r7023490 = M;
double r7023491 = r7023490 * r7023490;
double r7023492 = r7023489 - r7023491;
double r7023493 = sqrt(r7023492);
double r7023494 = r7023488 + r7023493;
double r7023495 = r7023479 * r7023494;
return r7023495;
}
double f(double c0, double w, double h, double D, double d, double M) {
double r7023496 = M;
double r7023497 = 3.347504912387466e-281;
bool r7023498 = r7023496 <= r7023497;
double r7023499 = d;
double r7023500 = w;
double r7023501 = cbrt(r7023500);
double r7023502 = r7023499 / r7023501;
double r7023503 = 0.0;
double r7023504 = h;
double r7023505 = D;
double r7023506 = r7023504 * r7023505;
double r7023507 = r7023503 / r7023506;
double r7023508 = 2.0;
double r7023509 = r7023508 / r7023505;
double r7023510 = r7023507 * r7023509;
double r7023511 = r7023502 * r7023510;
double r7023512 = c0;
double r7023513 = r7023512 / r7023500;
double r7023514 = r7023511 * r7023513;
double r7023515 = 2.0;
double r7023516 = r7023514 / r7023515;
double r7023517 = 1.0337907806102388e-184;
bool r7023518 = r7023496 <= r7023517;
double r7023519 = cbrt(r7023512);
double r7023520 = r7023519 * r7023519;
double r7023521 = r7023512 / r7023501;
double r7023522 = r7023521 / r7023505;
double r7023523 = r7023502 / r7023504;
double r7023524 = r7023522 * r7023523;
double r7023525 = r7023524 * r7023502;
double r7023526 = r7023525 * r7023509;
double r7023527 = r7023520 * r7023526;
double r7023528 = r7023519 / r7023500;
double r7023529 = r7023527 * r7023528;
double r7023530 = r7023529 / r7023515;
double r7023531 = 2.2890969237332912e-126;
bool r7023532 = r7023496 <= r7023531;
double r7023533 = r7023519 / r7023501;
double r7023534 = r7023533 * r7023502;
double r7023535 = r7023520 * r7023534;
double r7023536 = r7023535 / r7023506;
double r7023537 = r7023509 * r7023536;
double r7023538 = r7023537 * r7023502;
double r7023539 = r7023513 * r7023538;
double r7023540 = r7023539 / r7023515;
double r7023541 = r7023532 ? r7023516 : r7023540;
double r7023542 = r7023518 ? r7023530 : r7023541;
double r7023543 = r7023498 ? r7023516 : r7023542;
return r7023543;
}



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 M < 3.347504912387466e-281 or 1.0337907806102388e-184 < M < 2.2890969237332912e-126Initial program 58.6
Simplified52.9
Taylor expanded around 0 59.2
Simplified56.7
rmApplied add-cube-cbrt56.7
Applied times-frac55.0
Applied associate-*r*54.0
Simplified50.8
Taylor expanded around 0 42.6
if 3.347504912387466e-281 < M < 1.0337907806102388e-184Initial program 55.0
Simplified44.7
Taylor expanded around 0 57.3
Simplified53.5
rmApplied add-cube-cbrt53.5
Applied times-frac52.3
Applied associate-*r*50.8
Simplified45.5
rmApplied *-un-lft-identity45.5
Applied add-cube-cbrt45.5
Applied times-frac45.5
Applied associate-*r*45.8
Simplified44.6
if 2.2890969237332912e-126 < M Initial program 61.8
Simplified59.1
Taylor expanded around 0 61.3
Simplified59.0
rmApplied add-cube-cbrt59.1
Applied times-frac58.1
Applied associate-*r*57.2
Simplified54.3
rmApplied *-un-lft-identity54.3
Applied add-cube-cbrt54.4
Applied times-frac54.4
Applied associate-*l*54.6
Final simplification46.2
herbie shell --seed 2019192
(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))))))