Average Error: 58.1 → 34.2
Time: 3.2m
Precision: 64
\[\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}\;c0 \le 4.0744135505134066 \cdot 10^{-238}:\\ \;\;\;\;0\\ \mathbf{elif}\;c0 \le 1.369182672428857 \cdot 10^{-186}:\\ \;\;\;\;\frac{2 \cdot \left(\left(c0 \cdot d\right) \cdot \left(\frac{1}{w \cdot D} \cdot \frac{\frac{c0 \cdot d}{w \cdot D}}{h}\right)\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
\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}\;c0 \le 4.0744135505134066 \cdot 10^{-238}:\\
\;\;\;\;0\\

\mathbf{elif}\;c0 \le 1.369182672428857 \cdot 10^{-186}:\\
\;\;\;\;\frac{2 \cdot \left(\left(c0 \cdot d\right) \cdot \left(\frac{1}{w \cdot D} \cdot \frac{\frac{c0 \cdot d}{w \cdot D}}{h}\right)\right)}{2}\\

\mathbf{else}:\\
\;\;\;\;0\\

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r43899285 = c0;
        double r43899286 = 2.0;
        double r43899287 = w;
        double r43899288 = r43899286 * r43899287;
        double r43899289 = r43899285 / r43899288;
        double r43899290 = d;
        double r43899291 = r43899290 * r43899290;
        double r43899292 = r43899285 * r43899291;
        double r43899293 = h;
        double r43899294 = r43899287 * r43899293;
        double r43899295 = D;
        double r43899296 = r43899295 * r43899295;
        double r43899297 = r43899294 * r43899296;
        double r43899298 = r43899292 / r43899297;
        double r43899299 = r43899298 * r43899298;
        double r43899300 = M;
        double r43899301 = r43899300 * r43899300;
        double r43899302 = r43899299 - r43899301;
        double r43899303 = sqrt(r43899302);
        double r43899304 = r43899298 + r43899303;
        double r43899305 = r43899289 * r43899304;
        return r43899305;
}

double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
        double r43899306 = c0;
        double r43899307 = 4.0744135505134066e-238;
        bool r43899308 = r43899306 <= r43899307;
        double r43899309 = 0.0;
        double r43899310 = 1.369182672428857e-186;
        bool r43899311 = r43899306 <= r43899310;
        double r43899312 = 2.0;
        double r43899313 = d;
        double r43899314 = r43899306 * r43899313;
        double r43899315 = 1.0;
        double r43899316 = w;
        double r43899317 = D;
        double r43899318 = r43899316 * r43899317;
        double r43899319 = r43899315 / r43899318;
        double r43899320 = r43899314 / r43899318;
        double r43899321 = h;
        double r43899322 = r43899320 / r43899321;
        double r43899323 = r43899319 * r43899322;
        double r43899324 = r43899314 * r43899323;
        double r43899325 = r43899312 * r43899324;
        double r43899326 = r43899325 / r43899312;
        double r43899327 = r43899311 ? r43899326 : r43899309;
        double r43899328 = r43899308 ? r43899309 : r43899327;
        return r43899328;
}

Error

Bits error versus c0

Bits error versus w

Bits error versus h

Bits error versus D

Bits error versus d

Bits error versus M

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if c0 < 4.0744135505134066e-238 or 1.369182672428857e-186 < c0

    1. Initial program 58.1

      \[\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)\]
    2. Simplified52.0

      \[\leadsto \color{blue}{\frac{\left(\sqrt{\left(M + \frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h}\right) \cdot \left(\frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h} - M\right)} + \frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h}\right) \cdot \frac{c0}{w}}{2}}\]
    3. Taylor expanded around -inf 34.0

      \[\leadsto \frac{\color{blue}{0}}{2}\]

    if 4.0744135505134066e-238 < c0 < 1.369182672428857e-186

    1. Initial program 57.7

      \[\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)\]
    2. Simplified51.1

      \[\leadsto \color{blue}{\frac{\left(\sqrt{\left(M + \frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h}\right) \cdot \left(\frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h} - M\right)} + \frac{\frac{c0}{w} \cdot \left(\frac{d}{D} \cdot \frac{d}{D}\right)}{h}\right) \cdot \frac{c0}{w}}{2}}\]
    3. Taylor expanded around 0 60.3

      \[\leadsto \frac{\color{blue}{2 \cdot \frac{{c0}^{2} \cdot {d}^{2}}{{w}^{2} \cdot \left({D}^{2} \cdot h\right)}}}{2}\]
    4. Simplified37.2

      \[\leadsto \frac{\color{blue}{\frac{\frac{d \cdot c0}{w \cdot D} \cdot \frac{d \cdot c0}{w \cdot D}}{h} \cdot 2}}{2}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity37.2

      \[\leadsto \frac{\frac{\frac{d \cdot c0}{w \cdot D} \cdot \frac{d \cdot c0}{w \cdot D}}{\color{blue}{1 \cdot h}} \cdot 2}{2}\]
    7. Applied times-frac35.3

      \[\leadsto \frac{\color{blue}{\left(\frac{\frac{d \cdot c0}{w \cdot D}}{1} \cdot \frac{\frac{d \cdot c0}{w \cdot D}}{h}\right)} \cdot 2}{2}\]
    8. Simplified35.3

      \[\leadsto \frac{\left(\color{blue}{\frac{d \cdot c0}{w \cdot D}} \cdot \frac{\frac{d \cdot c0}{w \cdot D}}{h}\right) \cdot 2}{2}\]
    9. Using strategy rm
    10. Applied div-inv35.5

      \[\leadsto \frac{\left(\color{blue}{\left(\left(d \cdot c0\right) \cdot \frac{1}{w \cdot D}\right)} \cdot \frac{\frac{d \cdot c0}{w \cdot D}}{h}\right) \cdot 2}{2}\]
    11. Applied associate-*l*37.7

      \[\leadsto \frac{\color{blue}{\left(\left(d \cdot c0\right) \cdot \left(\frac{1}{w \cdot D} \cdot \frac{\frac{d \cdot c0}{w \cdot D}}{h}\right)\right)} \cdot 2}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification34.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;c0 \le 4.0744135505134066 \cdot 10^{-238}:\\ \;\;\;\;0\\ \mathbf{elif}\;c0 \le 1.369182672428857 \cdot 10^{-186}:\\ \;\;\;\;\frac{2 \cdot \left(\left(c0 \cdot d\right) \cdot \left(\frac{1}{w \cdot D} \cdot \frac{\frac{c0 \cdot d}{w \cdot D}}{h}\right)\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

herbie shell --seed 2019120 
(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))))))