Average Error: 58.0 → 34.3
Time: 57.1s
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}\;d \le 1.5355029348918996 \cdot 10^{+59}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 1.6307146242092196 \cdot 10^{+109}:\\ \;\;\;\;c0 \cdot \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot d}{D \cdot \left(w \cdot h\right)} + \sqrt{\left(\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w \cdot h} + M\right) \cdot \left(\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w \cdot h} - M\right)}}{w \cdot 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}\;d \le 1.5355029348918996 \cdot 10^{+59}:\\
\;\;\;\;0\\

\mathbf{elif}\;d \le 1.6307146242092196 \cdot 10^{+109}:\\
\;\;\;\;c0 \cdot \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot d}{D \cdot \left(w \cdot h\right)} + \sqrt{\left(\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w \cdot h} + M\right) \cdot \left(\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w \cdot h} - M\right)}}{w \cdot 2}\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r4147523 = c0;
        double r4147524 = 2.0;
        double r4147525 = w;
        double r4147526 = r4147524 * r4147525;
        double r4147527 = r4147523 / r4147526;
        double r4147528 = d;
        double r4147529 = r4147528 * r4147528;
        double r4147530 = r4147523 * r4147529;
        double r4147531 = h;
        double r4147532 = r4147525 * r4147531;
        double r4147533 = D;
        double r4147534 = r4147533 * r4147533;
        double r4147535 = r4147532 * r4147534;
        double r4147536 = r4147530 / r4147535;
        double r4147537 = r4147536 * r4147536;
        double r4147538 = M;
        double r4147539 = r4147538 * r4147538;
        double r4147540 = r4147537 - r4147539;
        double r4147541 = sqrt(r4147540);
        double r4147542 = r4147536 + r4147541;
        double r4147543 = r4147527 * r4147542;
        return r4147543;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r4147544 = d;
        double r4147545 = 1.5355029348918996e+59;
        bool r4147546 = r4147544 <= r4147545;
        double r4147547 = 0.0;
        double r4147548 = 1.6307146242092196e+109;
        bool r4147549 = r4147544 <= r4147548;
        double r4147550 = c0;
        double r4147551 = D;
        double r4147552 = r4147544 / r4147551;
        double r4147553 = r4147550 * r4147552;
        double r4147554 = r4147553 * r4147544;
        double r4147555 = w;
        double r4147556 = h;
        double r4147557 = r4147555 * r4147556;
        double r4147558 = r4147551 * r4147557;
        double r4147559 = r4147554 / r4147558;
        double r4147560 = r4147553 * r4147552;
        double r4147561 = r4147560 / r4147557;
        double r4147562 = M;
        double r4147563 = r4147561 + r4147562;
        double r4147564 = r4147561 - r4147562;
        double r4147565 = r4147563 * r4147564;
        double r4147566 = sqrt(r4147565);
        double r4147567 = r4147559 + r4147566;
        double r4147568 = 2.0;
        double r4147569 = r4147555 * r4147568;
        double r4147570 = r4147567 / r4147569;
        double r4147571 = r4147550 * r4147570;
        double r4147572 = r4147549 ? r4147571 : r4147547;
        double r4147573 = r4147546 ? r4147547 : r4147572;
        return r4147573;
}

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 d < 1.5355029348918996e+59 or 1.6307146242092196e+109 < d

    1. Initial program 58.2

      \[\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.9

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

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

    if 1.5355029348918996e+59 < d < 1.6307146242092196e+109

    1. Initial program 54.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. Simplified52.2

      \[\leadsto \color{blue}{\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} \cdot \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} - M \cdot M} + \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h}\right)}\]
    3. Using strategy rm
    4. Applied div-inv52.2

      \[\leadsto \color{blue}{\left(c0 \cdot \frac{1}{w \cdot 2}\right)} \cdot \left(\sqrt{\frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} \cdot \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} - M \cdot M} + \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h}\right)\]
    5. Applied associate-*l*52.2

      \[\leadsto \color{blue}{c0 \cdot \left(\frac{1}{w \cdot 2} \cdot \left(\sqrt{\frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} \cdot \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} - M \cdot M} + \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h}\right)\right)}\]
    6. Simplified52.2

      \[\leadsto c0 \cdot \color{blue}{\frac{\frac{\left(\frac{d}{D} \cdot c0\right) \cdot \frac{d}{D}}{w \cdot h} + \sqrt{\left(\frac{\left(\frac{d}{D} \cdot c0\right) \cdot \frac{d}{D}}{w \cdot h} + M\right) \cdot \left(\frac{\left(\frac{d}{D} \cdot c0\right) \cdot \frac{d}{D}}{w \cdot h} - M\right)}}{2 \cdot w}}\]
    7. Using strategy rm
    8. Applied associate-*r/53.1

      \[\leadsto c0 \cdot \frac{\frac{\color{blue}{\frac{\left(\frac{d}{D} \cdot c0\right) \cdot d}{D}}}{w \cdot h} + \sqrt{\left(\frac{\left(\frac{d}{D} \cdot c0\right) \cdot \frac{d}{D}}{w \cdot h} + M\right) \cdot \left(\frac{\left(\frac{d}{D} \cdot c0\right) \cdot \frac{d}{D}}{w \cdot h} - M\right)}}{2 \cdot w}\]
    9. Applied associate-/l/53.3

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

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

Reproduce

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