Average Error: 58.0 → 33.9
Time: 53.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 \cdot D \le 2.166841599644002 \cdot 10^{+302}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;\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} \cdot \frac{c0}{w}\\ \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 \cdot D \le 2.166841599644002 \cdot 10^{+302}:\\
\;\;\;\;0\\

\mathbf{else}:\\
\;\;\;\;\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} \cdot \frac{c0}{w}\\

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r5716522 = c0;
        double r5716523 = 2.0;
        double r5716524 = w;
        double r5716525 = r5716523 * r5716524;
        double r5716526 = r5716522 / r5716525;
        double r5716527 = d;
        double r5716528 = r5716527 * r5716527;
        double r5716529 = r5716522 * r5716528;
        double r5716530 = h;
        double r5716531 = r5716524 * r5716530;
        double r5716532 = D;
        double r5716533 = r5716532 * r5716532;
        double r5716534 = r5716531 * r5716533;
        double r5716535 = r5716529 / r5716534;
        double r5716536 = r5716535 * r5716535;
        double r5716537 = M;
        double r5716538 = r5716537 * r5716537;
        double r5716539 = r5716536 - r5716538;
        double r5716540 = sqrt(r5716539);
        double r5716541 = r5716535 + r5716540;
        double r5716542 = r5716526 * r5716541;
        return r5716542;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r5716543 = D;
        double r5716544 = r5716543 * r5716543;
        double r5716545 = 2.166841599644002e+302;
        bool r5716546 = r5716544 <= r5716545;
        double r5716547 = 0.0;
        double r5716548 = d;
        double r5716549 = r5716548 / r5716543;
        double r5716550 = r5716549 * r5716549;
        double r5716551 = h;
        double r5716552 = r5716550 / r5716551;
        double r5716553 = c0;
        double r5716554 = w;
        double r5716555 = r5716553 / r5716554;
        double r5716556 = r5716552 * r5716555;
        double r5716557 = M;
        double r5716558 = r5716556 + r5716557;
        double r5716559 = sqrt(r5716558);
        double r5716560 = r5716556 - r5716557;
        double r5716561 = sqrt(r5716560);
        double r5716562 = fma(r5716559, r5716561, r5716556);
        double r5716563 = 2.0;
        double r5716564 = r5716562 / r5716563;
        double r5716565 = r5716564 * r5716555;
        double r5716566 = r5716546 ? r5716547 : r5716565;
        return r5716566;
}

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 D) < 2.166841599644002e+302

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

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

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

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

    if 2.166841599644002e+302 < (* D D)

    1. Initial program 61.2

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;D \cdot D \le 2.166841599644002 \cdot 10^{+302}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;\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} \cdot \frac{c0}{w}\\ \end{array}\]

Reproduce

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