Average Error: 59.3 → 34.5
Time: 32.1s
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.028014946374977112793459567345674978253 \cdot 10^{-41}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}:\\ \;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\ \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.028014946374977112793459567345674978253 \cdot 10^{-41}:\\
\;\;\;\;0\\

\mathbf{elif}\;d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r113812 = c0;
        double r113813 = 2.0;
        double r113814 = w;
        double r113815 = r113813 * r113814;
        double r113816 = r113812 / r113815;
        double r113817 = d;
        double r113818 = r113817 * r113817;
        double r113819 = r113812 * r113818;
        double r113820 = h;
        double r113821 = r113814 * r113820;
        double r113822 = D;
        double r113823 = r113822 * r113822;
        double r113824 = r113821 * r113823;
        double r113825 = r113819 / r113824;
        double r113826 = r113825 * r113825;
        double r113827 = M;
        double r113828 = r113827 * r113827;
        double r113829 = r113826 - r113828;
        double r113830 = sqrt(r113829);
        double r113831 = r113825 + r113830;
        double r113832 = r113816 * r113831;
        return r113832;
}

double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
        double r113833 = d;
        double r113834 = 1.0280149463749771e-41;
        bool r113835 = r113833 <= r113834;
        double r113836 = 0.0;
        double r113837 = 1.8791322752630873e+52;
        bool r113838 = r113833 <= r113837;
        double r113839 = c0;
        double r113840 = 2.0;
        double r113841 = w;
        double r113842 = r113840 * r113841;
        double r113843 = r113839 / r113842;
        double r113844 = 2.0;
        double r113845 = pow(r113833, r113844);
        double r113846 = r113845 * r113839;
        double r113847 = D;
        double r113848 = pow(r113847, r113844);
        double r113849 = h;
        double r113850 = r113848 * r113849;
        double r113851 = r113841 * r113850;
        double r113852 = r113846 / r113851;
        double r113853 = r113844 * r113852;
        double r113854 = r113843 * r113853;
        double r113855 = r113838 ? r113854 : r113836;
        double r113856 = r113835 ? r113836 : r113855;
        return r113856;
}

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 < 1.0280149463749771e-41 or 1.8791322752630873e+52 < d

    1. Initial program 59.9

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

      \[\leadsto \frac{c0}{2 \cdot w} \cdot \color{blue}{0}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt34.6

      \[\leadsto \frac{c0}{2 \cdot w} \cdot \color{blue}{\left(\left(\sqrt[3]{0} \cdot \sqrt[3]{0}\right) \cdot \sqrt[3]{0}\right)}\]
    5. Applied associate-*r*34.6

      \[\leadsto \color{blue}{\left(\frac{c0}{2 \cdot w} \cdot \left(\sqrt[3]{0} \cdot \sqrt[3]{0}\right)\right) \cdot \sqrt[3]{0}}\]
    6. Simplified32.7

      \[\leadsto \color{blue}{0} \cdot \sqrt[3]{0}\]

    if 1.0280149463749771e-41 < d < 1.8791322752630873e+52

    1. Initial program 52.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. Using strategy rm
    3. Applied associate-/l*53.8

      \[\leadsto \frac{c0}{2 \cdot w} \cdot \left(\color{blue}{\frac{c0}{\frac{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}{d \cdot d}}} + \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)\]
    4. Taylor expanded around inf 54.7

      \[\leadsto \frac{c0}{2 \cdot w} \cdot \color{blue}{\left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification34.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;d \le 1.028014946374977112793459567345674978253 \cdot 10^{-41}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}:\\ \;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

herbie shell --seed 2019323 
(FPCore (c0 w h D d M)
  :name "Henrywood and Agarwal, Equation (13)"
  :precision binary64
  (* (/ 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))))))