Average Error: 58.3 → 31.9
Time: 1.1m
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.2061505284876777 \cdot 10^{+297}:\\ \;\;\;\;\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.2061505284876777 \cdot 10^{+297}:\\
\;\;\;\;\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 r3496274 = c0;
        double r3496275 = 2.0;
        double r3496276 = w;
        double r3496277 = r3496275 * r3496276;
        double r3496278 = r3496274 / r3496277;
        double r3496279 = d;
        double r3496280 = r3496279 * r3496279;
        double r3496281 = r3496274 * r3496280;
        double r3496282 = h;
        double r3496283 = r3496276 * r3496282;
        double r3496284 = D;
        double r3496285 = r3496284 * r3496284;
        double r3496286 = r3496283 * r3496285;
        double r3496287 = r3496281 / r3496286;
        double r3496288 = r3496287 * r3496287;
        double r3496289 = M;
        double r3496290 = r3496289 * r3496289;
        double r3496291 = r3496288 - r3496290;
        double r3496292 = sqrt(r3496291);
        double r3496293 = r3496287 + r3496292;
        double r3496294 = r3496278 * r3496293;
        return r3496294;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r3496295 = c0;
        double r3496296 = w;
        double r3496297 = 2.0;
        double r3496298 = r3496296 * r3496297;
        double r3496299 = r3496295 / r3496298;
        double r3496300 = d;
        double r3496301 = r3496300 * r3496300;
        double r3496302 = r3496295 * r3496301;
        double r3496303 = D;
        double r3496304 = r3496303 * r3496303;
        double r3496305 = h;
        double r3496306 = r3496296 * r3496305;
        double r3496307 = r3496304 * r3496306;
        double r3496308 = r3496302 / r3496307;
        double r3496309 = r3496308 * r3496308;
        double r3496310 = M;
        double r3496311 = r3496310 * r3496310;
        double r3496312 = r3496309 - r3496311;
        double r3496313 = sqrt(r3496312);
        double r3496314 = r3496313 + r3496308;
        double r3496315 = r3496299 * r3496314;
        double r3496316 = 2.2061505284876777e+297;
        bool r3496317 = r3496315 <= r3496316;
        double r3496318 = 0.0;
        double r3496319 = /* ERROR: no posit support in C */;
        double r3496320 = /* ERROR: no posit support in C */;
        double r3496321 = r3496317 ? r3496315 : r3496320;
        return r3496321;
}

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.2061505284876777e+297

    1. Initial program 35.0

      \[\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.2061505284876777e+297 < (* (/ 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.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. Simplified55.9

      \[\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 33.3

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

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

      \[\leadsto \color{blue}{\left(0\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.9

    \[\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.2061505284876777 \cdot 10^{+297}:\\ \;\;\;\;\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 2019138 +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))))))