Average Error: 57.7 → 34.8
Time: 2.1m
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 -2.17828202020906 \cdot 10^{-139}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 2.141857615600652 \cdot 10^{-118}:\\ \;\;\;\;\frac{c0}{w} \cdot \frac{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M} \cdot \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}}{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 -2.17828202020906 \cdot 10^{-139}:\\
\;\;\;\;0\\

\mathbf{elif}\;d \le 2.141857615600652 \cdot 10^{-118}:\\
\;\;\;\;\frac{c0}{w} \cdot \frac{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M} \cdot \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}}{2}\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r27828856 = c0;
        double r27828857 = 2.0;
        double r27828858 = w;
        double r27828859 = r27828857 * r27828858;
        double r27828860 = r27828856 / r27828859;
        double r27828861 = d;
        double r27828862 = r27828861 * r27828861;
        double r27828863 = r27828856 * r27828862;
        double r27828864 = h;
        double r27828865 = r27828858 * r27828864;
        double r27828866 = D;
        double r27828867 = r27828866 * r27828866;
        double r27828868 = r27828865 * r27828867;
        double r27828869 = r27828863 / r27828868;
        double r27828870 = r27828869 * r27828869;
        double r27828871 = M;
        double r27828872 = r27828871 * r27828871;
        double r27828873 = r27828870 - r27828872;
        double r27828874 = sqrt(r27828873);
        double r27828875 = r27828869 + r27828874;
        double r27828876 = r27828860 * r27828875;
        return r27828876;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r27828877 = d;
        double r27828878 = -2.17828202020906e-139;
        bool r27828879 = r27828877 <= r27828878;
        double r27828880 = 0.0;
        double r27828881 = 2.141857615600652e-118;
        bool r27828882 = r27828877 <= r27828881;
        double r27828883 = c0;
        double r27828884 = w;
        double r27828885 = r27828883 / r27828884;
        double r27828886 = D;
        double r27828887 = r27828877 / r27828886;
        double r27828888 = r27828887 * r27828887;
        double r27828889 = h;
        double r27828890 = r27828888 / r27828889;
        double r27828891 = r27828890 * r27828885;
        double r27828892 = M;
        double r27828893 = r27828891 + r27828892;
        double r27828894 = sqrt(r27828893);
        double r27828895 = r27828891 - r27828892;
        double r27828896 = sqrt(r27828895);
        double r27828897 = r27828894 * r27828896;
        double r27828898 = r27828891 + r27828897;
        double r27828899 = 2.0;
        double r27828900 = r27828898 / r27828899;
        double r27828901 = r27828885 * r27828900;
        double r27828902 = r27828882 ? r27828901 : r27828880;
        double r27828903 = r27828879 ? r27828880 : r27828902;
        return r27828903;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if d < -2.17828202020906e-139 or 2.141857615600652e-118 < d

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

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

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

    if -2.17828202020906e-139 < d < 2.141857615600652e-118

    1. Initial program 60.3

      \[\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 2} \cdot \left(\sqrt{\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w} \cdot \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w} - M \cdot M} + \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w}\right)}\]
    3. Using strategy rm
    4. Applied pow144.4

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

      \[\leadsto \color{blue}{{\left(\frac{c0}{w \cdot 2}\right)}^{1}} \cdot {\left(\sqrt{\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w} \cdot \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w} - M \cdot M} + \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w}\right)}^{1}\]
    6. Applied pow-prod-down44.4

      \[\leadsto \color{blue}{{\left(\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w} \cdot \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w} - M \cdot M} + \frac{\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0}{h}}{w}\right)\right)}^{1}}\]
    7. Simplified43.1

      \[\leadsto {\color{blue}{\left(\frac{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{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}\right)}}^{1}\]
    8. Using strategy rm
    9. Applied difference-of-squares43.1

      \[\leadsto {\left(\frac{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} + \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)}}}{2} \cdot \frac{c0}{w}\right)}^{1}\]
    10. Applied sqrt-prod47.4

      \[\leadsto {\left(\frac{\frac{c0}{w} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{h} + \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}}}{2} \cdot \frac{c0}{w}\right)}^{1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification34.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;d \le -2.17828202020906 \cdot 10^{-139}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 2.141857615600652 \cdot 10^{-118}:\\ \;\;\;\;\frac{c0}{w} \cdot \frac{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} + M} \cdot \sqrt{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w} - M}}{2}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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