Average Error: 59.5 → 32.4
Time: 14.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}\;\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) \le 8.0090591400529175 \cdot 10^{217}:\\ \;\;\;\;\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)\\ \mathbf{else}:\\ \;\;\;\;e^{\log 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}\;\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) \le 8.0090591400529175 \cdot 10^{217}:\\
\;\;\;\;\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)\\

\mathbf{else}:\\
\;\;\;\;e^{\log 0}\\

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r167184 = c0;
        double r167185 = 2.0;
        double r167186 = w;
        double r167187 = r167185 * r167186;
        double r167188 = r167184 / r167187;
        double r167189 = d;
        double r167190 = r167189 * r167189;
        double r167191 = r167184 * r167190;
        double r167192 = h;
        double r167193 = r167186 * r167192;
        double r167194 = D;
        double r167195 = r167194 * r167194;
        double r167196 = r167193 * r167195;
        double r167197 = r167191 / r167196;
        double r167198 = r167197 * r167197;
        double r167199 = M;
        double r167200 = r167199 * r167199;
        double r167201 = r167198 - r167200;
        double r167202 = sqrt(r167201);
        double r167203 = r167197 + r167202;
        double r167204 = r167188 * r167203;
        return r167204;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r167205 = c0;
        double r167206 = 2.0;
        double r167207 = w;
        double r167208 = r167206 * r167207;
        double r167209 = r167205 / r167208;
        double r167210 = d;
        double r167211 = r167210 * r167210;
        double r167212 = r167205 * r167211;
        double r167213 = h;
        double r167214 = r167207 * r167213;
        double r167215 = D;
        double r167216 = r167215 * r167215;
        double r167217 = r167214 * r167216;
        double r167218 = r167212 / r167217;
        double r167219 = r167218 * r167218;
        double r167220 = M;
        double r167221 = r167220 * r167220;
        double r167222 = r167219 - r167221;
        double r167223 = sqrt(r167222);
        double r167224 = r167218 + r167223;
        double r167225 = r167209 * r167224;
        double r167226 = 8.009059140052918e+217;
        bool r167227 = r167225 <= r167226;
        double r167228 = 0.0;
        double r167229 = log(r167228);
        double r167230 = exp(r167229);
        double r167231 = r167227 ? r167225 : r167230;
        return r167231;
}

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 (* (/ c0 (* 2.0 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))))) < 8.009059140052918e+217

    1. Initial program 35.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)\]

    if 8.009059140052918e+217 < (* (/ c0 (* 2.0 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)))))

    1. Initial program 63.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.0

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

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

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

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

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

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

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

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

      \[\leadsto e^{\color{blue}{\log 0}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification32.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\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) \le 8.0090591400529175 \cdot 10^{217}:\\ \;\;\;\;\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)\\ \mathbf{else}:\\ \;\;\;\;e^{\log 0}\\ \end{array}\]

Reproduce

herbie shell --seed 2020042 
(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))))))