Average Error: 58.4 → 37.0
Time: 38.4s
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}\;h \le 1.7724222504113438 \cdot 10^{-190}:\\ \;\;\;\;0\\ \mathbf{elif}\;h \le 1.535976817000598 \cdot 10^{-34}:\\ \;\;\;\;\frac{c0}{w} \cdot \frac{\mathsf{fma}\left(\sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{w} \cdot \frac{c0}{h} + M}, \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{w} \cdot \frac{c0}{h} - M}, \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} \cdot \frac{c0}{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}\;h \le 1.7724222504113438 \cdot 10^{-190}:\\
\;\;\;\;0\\

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

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r1826505 = c0;
        double r1826506 = 2.0;
        double r1826507 = w;
        double r1826508 = r1826506 * r1826507;
        double r1826509 = r1826505 / r1826508;
        double r1826510 = d;
        double r1826511 = r1826510 * r1826510;
        double r1826512 = r1826505 * r1826511;
        double r1826513 = h;
        double r1826514 = r1826507 * r1826513;
        double r1826515 = D;
        double r1826516 = r1826515 * r1826515;
        double r1826517 = r1826514 * r1826516;
        double r1826518 = r1826512 / r1826517;
        double r1826519 = r1826518 * r1826518;
        double r1826520 = M;
        double r1826521 = r1826520 * r1826520;
        double r1826522 = r1826519 - r1826521;
        double r1826523 = sqrt(r1826522);
        double r1826524 = r1826518 + r1826523;
        double r1826525 = r1826509 * r1826524;
        return r1826525;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r1826526 = h;
        double r1826527 = 1.7724222504113438e-190;
        bool r1826528 = r1826526 <= r1826527;
        double r1826529 = 0.0;
        double r1826530 = 1.535976817000598e-34;
        bool r1826531 = r1826526 <= r1826530;
        double r1826532 = c0;
        double r1826533 = w;
        double r1826534 = r1826532 / r1826533;
        double r1826535 = d;
        double r1826536 = D;
        double r1826537 = r1826535 / r1826536;
        double r1826538 = r1826537 * r1826537;
        double r1826539 = r1826538 / r1826533;
        double r1826540 = r1826532 / r1826526;
        double r1826541 = r1826539 * r1826540;
        double r1826542 = M;
        double r1826543 = r1826541 + r1826542;
        double r1826544 = sqrt(r1826543);
        double r1826545 = r1826541 - r1826542;
        double r1826546 = sqrt(r1826545);
        double r1826547 = fma(r1826544, r1826546, r1826541);
        double r1826548 = 2.0;
        double r1826549 = r1826547 / r1826548;
        double r1826550 = r1826534 * r1826549;
        double r1826551 = r1826531 ? r1826550 : r1826529;
        double r1826552 = r1826528 ? r1826529 : r1826551;
        return r1826552;
}

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 h < 1.7724222504113438e-190 or 1.535976817000598e-34 < h

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

      \[\leadsto \color{blue}{\frac{c0}{w} \cdot \frac{\sqrt{\left(\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right) \cdot \left(\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right) - M \cdot M} + \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}}{2}}\]
    3. Taylor expanded around inf 35.9

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

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

    if 1.7724222504113438e-190 < h < 1.535976817000598e-34

    1. Initial program 58.5

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

      \[\leadsto \color{blue}{\frac{c0}{w} \cdot \frac{\sqrt{\left(\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right) \cdot \left(\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right) - M \cdot M} + \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}}{2}}\]
    3. Using strategy rm
    4. Applied difference-of-squares52.9

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

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

      \[\leadsto \frac{c0}{w} \cdot \frac{\color{blue}{\mathsf{fma}\left(\sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M}, \sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M}, \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right)}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification37.0

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

Reproduce

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