Average Error: 57.9 → 33.8
Time: 59.6s
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.960688023451719 \cdot 10^{-143}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 3.860215906667738 \cdot 10^{-266}:\\ \;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M}, \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}, \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\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}\;d \le -1.960688023451719 \cdot 10^{-143}:\\
\;\;\;\;0\\

\mathbf{elif}\;d \le 3.860215906667738 \cdot 10^{-266}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M}, \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}, \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right)}{2}\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r4791197 = c0;
        double r4791198 = 2.0;
        double r4791199 = w;
        double r4791200 = r4791198 * r4791199;
        double r4791201 = r4791197 / r4791200;
        double r4791202 = d;
        double r4791203 = r4791202 * r4791202;
        double r4791204 = r4791197 * r4791203;
        double r4791205 = h;
        double r4791206 = r4791199 * r4791205;
        double r4791207 = D;
        double r4791208 = r4791207 * r4791207;
        double r4791209 = r4791206 * r4791208;
        double r4791210 = r4791204 / r4791209;
        double r4791211 = r4791210 * r4791210;
        double r4791212 = M;
        double r4791213 = r4791212 * r4791212;
        double r4791214 = r4791211 - r4791213;
        double r4791215 = sqrt(r4791214);
        double r4791216 = r4791210 + r4791215;
        double r4791217 = r4791201 * r4791216;
        return r4791217;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r4791218 = d;
        double r4791219 = -1.960688023451719e-143;
        bool r4791220 = r4791218 <= r4791219;
        double r4791221 = 0.0;
        double r4791222 = 3.860215906667738e-266;
        bool r4791223 = r4791218 <= r4791222;
        double r4791224 = c0;
        double r4791225 = w;
        double r4791226 = r4791224 / r4791225;
        double r4791227 = D;
        double r4791228 = r4791218 / r4791227;
        double r4791229 = r4791228 * r4791228;
        double r4791230 = h;
        double r4791231 = r4791229 / r4791230;
        double r4791232 = r4791231 * r4791226;
        double r4791233 = M;
        double r4791234 = r4791232 + r4791233;
        double r4791235 = sqrt(r4791234);
        double r4791236 = r4791232 - r4791233;
        double r4791237 = sqrt(r4791236);
        double r4791238 = fma(r4791235, r4791237, r4791232);
        double r4791239 = 2.0;
        double r4791240 = r4791238 / r4791239;
        double r4791241 = r4791226 * r4791240;
        double r4791242 = r4791223 ? r4791241 : r4791221;
        double r4791243 = r4791220 ? r4791221 : r4791242;
        return r4791243;
}

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 d < -1.960688023451719e-143 or 3.860215906667738e-266 < d

    1. Initial program 57.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. Simplified53.1

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

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

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

    if -1.960688023451719e-143 < d < 3.860215906667738e-266

    1. Initial program 60.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. Simplified42.8

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

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

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

      \[\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}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification33.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;d \le -1.960688023451719 \cdot 10^{-143}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 3.860215906667738 \cdot 10^{-266}:\\ \;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M}, \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}, \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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