Average Error: 59.3 → 34.5
Time: 31.2s
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} \lor \neg \left(d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}\right):\\ \;\;\;\;e^{\log 0}\\ \mathbf{else}:\\ \;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\ \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} \lor \neg \left(d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}\right):\\
\;\;\;\;e^{\log 0}\\

\mathbf{else}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r109071 = c0;
        double r109072 = 2.0;
        double r109073 = w;
        double r109074 = r109072 * r109073;
        double r109075 = r109071 / r109074;
        double r109076 = d;
        double r109077 = r109076 * r109076;
        double r109078 = r109071 * r109077;
        double r109079 = h;
        double r109080 = r109073 * r109079;
        double r109081 = D;
        double r109082 = r109081 * r109081;
        double r109083 = r109080 * r109082;
        double r109084 = r109078 / r109083;
        double r109085 = r109084 * r109084;
        double r109086 = M;
        double r109087 = r109086 * r109086;
        double r109088 = r109085 - r109087;
        double r109089 = sqrt(r109088);
        double r109090 = r109084 + r109089;
        double r109091 = r109075 * r109090;
        return r109091;
}

double f(double c0, double w, double h, double D, double d, double __attribute__((unused)) M) {
        double r109092 = d;
        double r109093 = 1.0280149463749771e-41;
        bool r109094 = r109092 <= r109093;
        double r109095 = 1.8791322752630873e+52;
        bool r109096 = r109092 <= r109095;
        double r109097 = !r109096;
        bool r109098 = r109094 || r109097;
        double r109099 = 0.0;
        double r109100 = log(r109099);
        double r109101 = exp(r109100);
        double r109102 = c0;
        double r109103 = 2.0;
        double r109104 = w;
        double r109105 = r109103 * r109104;
        double r109106 = r109102 / r109105;
        double r109107 = 2.0;
        double r109108 = pow(r109092, r109107);
        double r109109 = r109108 * r109102;
        double r109110 = D;
        double r109111 = pow(r109110, r109107);
        double r109112 = h;
        double r109113 = r109111 * r109112;
        double r109114 = r109104 * r109113;
        double r109115 = r109109 / r109114;
        double r109116 = r109107 * r109115;
        double r109117 = r109106 * r109116;
        double r109118 = r109098 ? r109101 : r109117;
        return r109118;
}

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-exp-log34.6

      \[\leadsto \frac{c0}{2 \cdot w} \cdot \color{blue}{e^{\log 0}}\]
    5. Applied add-exp-log48.9

      \[\leadsto \frac{c0}{2 \cdot \color{blue}{e^{\log w}}} \cdot e^{\log 0}\]
    6. Applied add-exp-log48.9

      \[\leadsto \frac{c0}{\color{blue}{e^{\log 2}} \cdot e^{\log w}} \cdot e^{\log 0}\]
    7. Applied prod-exp48.9

      \[\leadsto \frac{c0}{\color{blue}{e^{\log 2 + \log w}}} \cdot e^{\log 0}\]
    8. Applied add-exp-log56.5

      \[\leadsto \frac{\color{blue}{e^{\log c0}}}{e^{\log 2 + \log w}} \cdot e^{\log 0}\]
    9. Applied div-exp56.5

      \[\leadsto \color{blue}{e^{\log c0 - \left(\log 2 + \log w\right)}} \cdot e^{\log 0}\]
    10. Applied prod-exp56.0

      \[\leadsto \color{blue}{e^{\left(\log c0 - \left(\log 2 + \log w\right)\right) + \log 0}}\]
    11. Simplified32.7

      \[\leadsto e^{\color{blue}{\log 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} \lor \neg \left(d \le 1.879132275263087348510262122271649682884 \cdot 10^{52}\right):\\ \;\;\;\;e^{\log 0}\\ \mathbf{else}:\\ \;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \frac{{d}^{2} \cdot c0}{w \cdot \left({D}^{2} \cdot h\right)}\right)\\ \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))))))