Average Error: 58.2 → 32.4
Time: 2.0m
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}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le 3.551871884992187 \cdot 10^{+116}:\\ \;\;\;\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right)\\ \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}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le 3.551871884992187 \cdot 10^{+116}:\\
\;\;\;\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right)\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r96809426 = c0;
        double r96809427 = 2.0;
        double r96809428 = w;
        double r96809429 = r96809427 * r96809428;
        double r96809430 = r96809426 / r96809429;
        double r96809431 = d;
        double r96809432 = r96809431 * r96809431;
        double r96809433 = r96809426 * r96809432;
        double r96809434 = h;
        double r96809435 = r96809428 * r96809434;
        double r96809436 = D;
        double r96809437 = r96809436 * r96809436;
        double r96809438 = r96809435 * r96809437;
        double r96809439 = r96809433 / r96809438;
        double r96809440 = r96809439 * r96809439;
        double r96809441 = M;
        double r96809442 = r96809441 * r96809441;
        double r96809443 = r96809440 - r96809442;
        double r96809444 = sqrt(r96809443);
        double r96809445 = r96809439 + r96809444;
        double r96809446 = r96809430 * r96809445;
        return r96809446;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r96809447 = c0;
        double r96809448 = w;
        double r96809449 = 2.0;
        double r96809450 = r96809448 * r96809449;
        double r96809451 = r96809447 / r96809450;
        double r96809452 = d;
        double r96809453 = r96809452 * r96809452;
        double r96809454 = r96809447 * r96809453;
        double r96809455 = D;
        double r96809456 = r96809455 * r96809455;
        double r96809457 = h;
        double r96809458 = r96809448 * r96809457;
        double r96809459 = r96809456 * r96809458;
        double r96809460 = r96809454 / r96809459;
        double r96809461 = r96809460 * r96809460;
        double r96809462 = M;
        double r96809463 = r96809462 * r96809462;
        double r96809464 = r96809461 - r96809463;
        double r96809465 = sqrt(r96809464);
        double r96809466 = r96809465 + r96809460;
        double r96809467 = r96809451 * r96809466;
        double r96809468 = 3.551871884992187e+116;
        bool r96809469 = r96809467 <= r96809468;
        double r96809470 = 0.0;
        double r96809471 = r96809469 ? r96809467 : r96809470;
        return r96809471;
}

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 (* 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))))) < 3.551871884992187e+116

    1. Initial program 35.6

      \[\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)\]

    if 3.551871884992187e+116 < (* (/ 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)))))

    1. Initial program 62.3

      \[\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. Simplified55.8

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

      \[\leadsto \frac{c0}{w \cdot 2} \cdot \color{blue}{0}\]
    4. Taylor expanded around -inf 31.8

      \[\leadsto \color{blue}{0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification32.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le 3.551871884992187 \cdot 10^{+116}:\\ \;\;\;\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

herbie shell --seed 2019125 +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))))))