Average Error: 58.0 → 34.2
Time: 58.8s
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.1564613338875407 \cdot 10^{+184}:\\ \;\;\;\;\frac{\frac{\frac{\frac{c0}{\frac{D}{d} \cdot \frac{D}{d}}}{w}}{h} + \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}}{2} \cdot \frac{c0}{w}\\ \mathbf{elif}\;D \le 9.618603368031972 \cdot 10^{+60}:\\ \;\;\;\;0\\ \mathbf{elif}\;D \le 2.4030601747568853 \cdot 10^{+137}:\\ \;\;\;\;\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} \cdot \frac{c0}{w}\\ \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.1564613338875407 \cdot 10^{+184}:\\
\;\;\;\;\frac{\frac{\frac{\frac{c0}{\frac{D}{d} \cdot \frac{D}{d}}}{w}}{h} + \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}}{2} \cdot \frac{c0}{w}\\

\mathbf{elif}\;D \le 9.618603368031972 \cdot 10^{+60}:\\
\;\;\;\;0\\

\mathbf{elif}\;D \le 2.4030601747568853 \cdot 10^{+137}:\\
\;\;\;\;\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} \cdot \frac{c0}{w}\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r4778747 = c0;
        double r4778748 = 2.0;
        double r4778749 = w;
        double r4778750 = r4778748 * r4778749;
        double r4778751 = r4778747 / r4778750;
        double r4778752 = d;
        double r4778753 = r4778752 * r4778752;
        double r4778754 = r4778747 * r4778753;
        double r4778755 = h;
        double r4778756 = r4778749 * r4778755;
        double r4778757 = D;
        double r4778758 = r4778757 * r4778757;
        double r4778759 = r4778756 * r4778758;
        double r4778760 = r4778754 / r4778759;
        double r4778761 = r4778760 * r4778760;
        double r4778762 = M;
        double r4778763 = r4778762 * r4778762;
        double r4778764 = r4778761 - r4778763;
        double r4778765 = sqrt(r4778764);
        double r4778766 = r4778760 + r4778765;
        double r4778767 = r4778751 * r4778766;
        return r4778767;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r4778768 = D;
        double r4778769 = -1.1564613338875407e+184;
        bool r4778770 = r4778768 <= r4778769;
        double r4778771 = c0;
        double r4778772 = d;
        double r4778773 = r4778768 / r4778772;
        double r4778774 = r4778773 * r4778773;
        double r4778775 = r4778771 / r4778774;
        double r4778776 = w;
        double r4778777 = r4778775 / r4778776;
        double r4778778 = h;
        double r4778779 = r4778777 / r4778778;
        double r4778780 = r4778771 / r4778776;
        double r4778781 = r4778772 / r4778768;
        double r4778782 = r4778781 * r4778781;
        double r4778783 = r4778782 / r4778778;
        double r4778784 = r4778780 * r4778783;
        double r4778785 = r4778784 * r4778784;
        double r4778786 = M;
        double r4778787 = r4778786 * r4778786;
        double r4778788 = r4778785 - r4778787;
        double r4778789 = sqrt(r4778788);
        double r4778790 = r4778779 + r4778789;
        double r4778791 = 2.0;
        double r4778792 = r4778790 / r4778791;
        double r4778793 = r4778792 * r4778780;
        double r4778794 = 9.618603368031972e+60;
        bool r4778795 = r4778768 <= r4778794;
        double r4778796 = 0.0;
        double r4778797 = 2.4030601747568853e+137;
        bool r4778798 = r4778768 <= r4778797;
        double r4778799 = r4778786 + r4778784;
        double r4778800 = sqrt(r4778799);
        double r4778801 = r4778784 - r4778786;
        double r4778802 = sqrt(r4778801);
        double r4778803 = fma(r4778800, r4778802, r4778784);
        double r4778804 = r4778803 / r4778791;
        double r4778805 = r4778804 * r4778780;
        double r4778806 = r4778798 ? r4778805 : r4778796;
        double r4778807 = r4778795 ? r4778796 : r4778806;
        double r4778808 = r4778770 ? r4778793 : r4778807;
        return r4778808;
}

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 3 regimes
  2. if D < -1.1564613338875407e+184

    1. Initial program 61.1

      \[\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.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. Taylor expanded around 0 60.2

      \[\leadsto \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} + \color{blue}{\frac{c0 \cdot {d}^{2}}{w \cdot \left({D}^{2} \cdot h\right)}}}{2}\]
    4. Simplified46.5

      \[\leadsto \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} + \color{blue}{\frac{\frac{\frac{c0}{\frac{D}{d} \cdot \frac{D}{d}}}{w}}{h}}}{2}\]

    if -1.1564613338875407e+184 < D < 9.618603368031972e+60 or 2.4030601747568853e+137 < D

    1. Initial program 58.1

      \[\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.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. Taylor expanded around inf 34.4

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

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

    if 9.618603368031972e+60 < D < 2.4030601747568853e+137

    1. Initial program 54.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. Simplified48.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-squares48.2

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

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

      \[\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 3 regimes into one program.
  4. Final simplification34.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;D \le -1.1564613338875407 \cdot 10^{+184}:\\ \;\;\;\;\frac{\frac{\frac{\frac{c0}{\frac{D}{d} \cdot \frac{D}{d}}}{w}}{h} + \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}}{2} \cdot \frac{c0}{w}\\ \mathbf{elif}\;D \le 9.618603368031972 \cdot 10^{+60}:\\ \;\;\;\;0\\ \mathbf{elif}\;D \le 2.4030601747568853 \cdot 10^{+137}:\\ \;\;\;\;\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} \cdot \frac{c0}{w}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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