Average Error: 58.2 → 33.6
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 5.369910802110264 \cdot 10^{+103}:\\ \;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{M + \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}, \sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} - M}, \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}\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}\;\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 5.369910802110264 \cdot 10^{+103}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{M + \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}, \sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} - M}, \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}\right)}{2}\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r4182007 = c0;
        double r4182008 = 2.0;
        double r4182009 = w;
        double r4182010 = r4182008 * r4182009;
        double r4182011 = r4182007 / r4182010;
        double r4182012 = d;
        double r4182013 = r4182012 * r4182012;
        double r4182014 = r4182007 * r4182013;
        double r4182015 = h;
        double r4182016 = r4182009 * r4182015;
        double r4182017 = D;
        double r4182018 = r4182017 * r4182017;
        double r4182019 = r4182016 * r4182018;
        double r4182020 = r4182014 / r4182019;
        double r4182021 = r4182020 * r4182020;
        double r4182022 = M;
        double r4182023 = r4182022 * r4182022;
        double r4182024 = r4182021 - r4182023;
        double r4182025 = sqrt(r4182024);
        double r4182026 = r4182020 + r4182025;
        double r4182027 = r4182011 * r4182026;
        return r4182027;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r4182028 = c0;
        double r4182029 = w;
        double r4182030 = 2.0;
        double r4182031 = r4182029 * r4182030;
        double r4182032 = r4182028 / r4182031;
        double r4182033 = d;
        double r4182034 = r4182033 * r4182033;
        double r4182035 = r4182028 * r4182034;
        double r4182036 = D;
        double r4182037 = r4182036 * r4182036;
        double r4182038 = h;
        double r4182039 = r4182029 * r4182038;
        double r4182040 = r4182037 * r4182039;
        double r4182041 = r4182035 / r4182040;
        double r4182042 = r4182041 * r4182041;
        double r4182043 = M;
        double r4182044 = r4182043 * r4182043;
        double r4182045 = r4182042 - r4182044;
        double r4182046 = sqrt(r4182045);
        double r4182047 = r4182046 + r4182041;
        double r4182048 = r4182032 * r4182047;
        double r4182049 = 5.369910802110264e+103;
        bool r4182050 = r4182048 <= r4182049;
        double r4182051 = r4182028 / r4182029;
        double r4182052 = r4182033 / r4182036;
        double r4182053 = r4182052 * r4182052;
        double r4182054 = r4182053 / r4182038;
        double r4182055 = r4182051 * r4182054;
        double r4182056 = r4182043 + r4182055;
        double r4182057 = sqrt(r4182056);
        double r4182058 = r4182055 - r4182043;
        double r4182059 = sqrt(r4182058);
        double r4182060 = fma(r4182057, r4182059, r4182055);
        double r4182061 = r4182060 / r4182030;
        double r4182062 = r4182051 * r4182061;
        double r4182063 = 0.0;
        double r4182064 = r4182050 ? r4182062 : r4182063;
        return r4182064;
}

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))))) < 5.369910802110264e+103

    1. Initial program 35.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. Simplified37.3

      \[\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. Using strategy rm
    4. Applied difference-of-squares37.3

      \[\leadsto \frac{c0}{w} \cdot \frac{\sqrt{\color{blue}{\left(\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} + M\right) \cdot \left(\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} - M\right)}} + \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}{2}\]
    5. Applied sqrt-prod43.4

      \[\leadsto \frac{c0}{w} \cdot \frac{\color{blue}{\sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} + M} \cdot \sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} - M}} + \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}{2}\]
    6. Applied fma-def43.4

      \[\leadsto \frac{c0}{w} \cdot \frac{\color{blue}{\mathsf{fma}\left(\sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} + M}, \sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} - M}, \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}\right)}}{2}\]

    if 5.369910802110264e+103 < (* (/ 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.4

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

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

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

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

    \[\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 5.369910802110264 \cdot 10^{+103}:\\ \;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{M + \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}, \sqrt{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} - M}, \frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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