Average Error: 57.9 → 33.8
Time: 52.5s
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 r5892308 = c0;
        double r5892309 = 2.0;
        double r5892310 = w;
        double r5892311 = r5892309 * r5892310;
        double r5892312 = r5892308 / r5892311;
        double r5892313 = d;
        double r5892314 = r5892313 * r5892313;
        double r5892315 = r5892308 * r5892314;
        double r5892316 = h;
        double r5892317 = r5892310 * r5892316;
        double r5892318 = D;
        double r5892319 = r5892318 * r5892318;
        double r5892320 = r5892317 * r5892319;
        double r5892321 = r5892315 / r5892320;
        double r5892322 = r5892321 * r5892321;
        double r5892323 = M;
        double r5892324 = r5892323 * r5892323;
        double r5892325 = r5892322 - r5892324;
        double r5892326 = sqrt(r5892325);
        double r5892327 = r5892321 + r5892326;
        double r5892328 = r5892312 * r5892327;
        return r5892328;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r5892329 = d;
        double r5892330 = -1.960688023451719e-143;
        bool r5892331 = r5892329 <= r5892330;
        double r5892332 = 0.0;
        double r5892333 = 3.860215906667738e-266;
        bool r5892334 = r5892329 <= r5892333;
        double r5892335 = c0;
        double r5892336 = w;
        double r5892337 = r5892335 / r5892336;
        double r5892338 = D;
        double r5892339 = r5892329 / r5892338;
        double r5892340 = r5892339 * r5892339;
        double r5892341 = h;
        double r5892342 = r5892340 / r5892341;
        double r5892343 = r5892342 * r5892337;
        double r5892344 = M;
        double r5892345 = r5892343 + r5892344;
        double r5892346 = sqrt(r5892345);
        double r5892347 = r5892343 - r5892344;
        double r5892348 = sqrt(r5892347);
        double r5892349 = fma(r5892346, r5892348, r5892343);
        double r5892350 = 2.0;
        double r5892351 = r5892349 / r5892350;
        double r5892352 = r5892337 * r5892351;
        double r5892353 = r5892334 ? r5892352 : r5892332;
        double r5892354 = r5892331 ? r5892332 : r5892353;
        return r5892354;
}

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))))))