Average Error: 58.0 → 32.4
Time: 44.7s
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 2.5920228479822924 \cdot 10^{+232}:\\ \;\;\;\;\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}:\\ \;\;\;\;\left(0\right)\\ \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 2.5920228479822924 \cdot 10^{+232}:\\
\;\;\;\;\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}:\\
\;\;\;\;\left(0\right)\\

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r3575529 = c0;
        double r3575530 = 2.0;
        double r3575531 = w;
        double r3575532 = r3575530 * r3575531;
        double r3575533 = r3575529 / r3575532;
        double r3575534 = d;
        double r3575535 = r3575534 * r3575534;
        double r3575536 = r3575529 * r3575535;
        double r3575537 = h;
        double r3575538 = r3575531 * r3575537;
        double r3575539 = D;
        double r3575540 = r3575539 * r3575539;
        double r3575541 = r3575538 * r3575540;
        double r3575542 = r3575536 / r3575541;
        double r3575543 = r3575542 * r3575542;
        double r3575544 = M;
        double r3575545 = r3575544 * r3575544;
        double r3575546 = r3575543 - r3575545;
        double r3575547 = sqrt(r3575546);
        double r3575548 = r3575542 + r3575547;
        double r3575549 = r3575533 * r3575548;
        return r3575549;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r3575550 = c0;
        double r3575551 = w;
        double r3575552 = 2.0;
        double r3575553 = r3575551 * r3575552;
        double r3575554 = r3575550 / r3575553;
        double r3575555 = d;
        double r3575556 = r3575555 * r3575555;
        double r3575557 = r3575550 * r3575556;
        double r3575558 = D;
        double r3575559 = r3575558 * r3575558;
        double r3575560 = h;
        double r3575561 = r3575551 * r3575560;
        double r3575562 = r3575559 * r3575561;
        double r3575563 = r3575557 / r3575562;
        double r3575564 = r3575563 * r3575563;
        double r3575565 = M;
        double r3575566 = r3575565 * r3575565;
        double r3575567 = r3575564 - r3575566;
        double r3575568 = sqrt(r3575567);
        double r3575569 = r3575568 + r3575563;
        double r3575570 = r3575554 * r3575569;
        double r3575571 = 2.5920228479822924e+232;
        bool r3575572 = r3575570 <= r3575571;
        double r3575573 = 0.0;
        double r3575574 = /* ERROR: no posit support in C */;
        double r3575575 = /* ERROR: no posit support in C */;
        double r3575576 = r3575572 ? r3575570 : r3575575;
        return r3575576;
}

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

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))))) < 2.5920228479822924e+232

    1. Initial program 34.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)\]

    if 2.5920228479822924e+232 < (* (/ 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.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)\]
    2. Simplified55.5

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

      \[\leadsto \frac{c0}{w} \cdot \frac{\color{blue}{0}}{2}\]
    4. Using strategy rm
    5. Applied insert-posit1634.2

      \[\leadsto \color{blue}{\left(\left(\frac{c0}{w} \cdot \frac{0}{2}\right)\right)}\]
    6. Simplified32.0

      \[\leadsto \color{blue}{\left(0\right)}\]
  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 2.5920228479822924 \cdot 10^{+232}:\\ \;\;\;\;\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}:\\ \;\;\;\;\left(0\right)\\ \end{array}\]

Reproduce

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