Average Error: 58.1 → 34.3
Time: 55.0s
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.428069600682858 \cdot 10^{-115}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 2.3691491374921303 \cdot 10^{-177}:\\ \;\;\;\;\frac{\left(\left(\sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}\right) \cdot \frac{c0}{w}\right) \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} + \sqrt{\left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) \cdot \left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) - M \cdot M}}{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.428069600682858 \cdot 10^{-115}:\\
\;\;\;\;0\\

\mathbf{elif}\;d \le 2.3691491374921303 \cdot 10^{-177}:\\
\;\;\;\;\frac{\left(\left(\sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}\right) \cdot \frac{c0}{w}\right) \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} + \sqrt{\left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) \cdot \left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) - M \cdot M}}{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 r5283206 = c0;
        double r5283207 = 2.0;
        double r5283208 = w;
        double r5283209 = r5283207 * r5283208;
        double r5283210 = r5283206 / r5283209;
        double r5283211 = d;
        double r5283212 = r5283211 * r5283211;
        double r5283213 = r5283206 * r5283212;
        double r5283214 = h;
        double r5283215 = r5283208 * r5283214;
        double r5283216 = D;
        double r5283217 = r5283216 * r5283216;
        double r5283218 = r5283215 * r5283217;
        double r5283219 = r5283213 / r5283218;
        double r5283220 = r5283219 * r5283219;
        double r5283221 = M;
        double r5283222 = r5283221 * r5283221;
        double r5283223 = r5283220 - r5283222;
        double r5283224 = sqrt(r5283223);
        double r5283225 = r5283219 + r5283224;
        double r5283226 = r5283210 * r5283225;
        return r5283226;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r5283227 = d;
        double r5283228 = -1.428069600682858e-115;
        bool r5283229 = r5283227 <= r5283228;
        double r5283230 = 0.0;
        double r5283231 = 2.3691491374921303e-177;
        bool r5283232 = r5283227 <= r5283231;
        double r5283233 = D;
        double r5283234 = r5283227 / r5283233;
        double r5283235 = r5283234 * r5283234;
        double r5283236 = h;
        double r5283237 = r5283235 / r5283236;
        double r5283238 = cbrt(r5283237);
        double r5283239 = r5283238 * r5283238;
        double r5283240 = c0;
        double r5283241 = w;
        double r5283242 = r5283240 / r5283241;
        double r5283243 = r5283239 * r5283242;
        double r5283244 = r5283243 * r5283238;
        double r5283245 = r5283237 * r5283242;
        double r5283246 = r5283245 * r5283245;
        double r5283247 = M;
        double r5283248 = r5283247 * r5283247;
        double r5283249 = r5283246 - r5283248;
        double r5283250 = sqrt(r5283249);
        double r5283251 = r5283244 + r5283250;
        double r5283252 = 2.0;
        double r5283253 = r5283251 / r5283252;
        double r5283254 = r5283253 * r5283242;
        double r5283255 = r5283232 ? r5283254 : r5283230;
        double r5283256 = r5283229 ? r5283230 : r5283255;
        return r5283256;
}

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.428069600682858e-115 or 2.3691491374921303e-177 < d

    1. Initial program 57.8

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

      \[\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.2

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

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

    if -1.428069600682858e-115 < d < 2.3691491374921303e-177

    1. Initial program 61.0

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

      \[\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 add-cube-cbrt48.1

      \[\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} + \frac{c0}{w} \cdot \color{blue}{\left(\left(\sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}\right) \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}\right)}}{2}\]
    5. Applied associate-*r*48.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}{\left(\frac{c0}{w} \cdot \left(\sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}\right)\right) \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification34.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;d \le -1.428069600682858 \cdot 10^{-115}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 2.3691491374921303 \cdot 10^{-177}:\\ \;\;\;\;\frac{\left(\left(\sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}}\right) \cdot \frac{c0}{w}\right) \cdot \sqrt[3]{\frac{\frac{d}{D} \cdot \frac{d}{D}}{h}} + \sqrt{\left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) \cdot \left(\frac{\frac{d}{D} \cdot \frac{d}{D}}{h} \cdot \frac{c0}{w}\right) - M \cdot M}}{2} \cdot \frac{c0}{w}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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