Average Error: 58.0 → 34.9
Time: 58.8s
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 -9.210163746526576 \cdot 10^{-130}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 7.672846710951726 \cdot 10^{-196}:\\ \;\;\;\;\left(\mathsf{fma}\left(\left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} + M}\right), \left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}\right), \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right) \cdot \frac{\frac{1}{2}}{w}\right) \cdot c0\\ \mathbf{elif}\;d \le 3.1308943303645432 \cdot 10^{-12}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 1.6897539912803299 \cdot 10^{+78}:\\ \;\;\;\;\left(\mathsf{fma}\left(\left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} + M}\right), \left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}\right), \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right) \cdot \frac{\frac{1}{2}}{w}\right) \cdot c0\\ \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 -9.210163746526576 \cdot 10^{-130}:\\
\;\;\;\;0\\

\mathbf{elif}\;d \le 7.672846710951726 \cdot 10^{-196}:\\
\;\;\;\;\left(\mathsf{fma}\left(\left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} + M}\right), \left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}\right), \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right) \cdot \frac{\frac{1}{2}}{w}\right) \cdot c0\\

\mathbf{elif}\;d \le 3.1308943303645432 \cdot 10^{-12}:\\
\;\;\;\;0\\

\mathbf{elif}\;d \le 1.6897539912803299 \cdot 10^{+78}:\\
\;\;\;\;\left(\mathsf{fma}\left(\left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} + M}\right), \left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}\right), \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right) \cdot \frac{\frac{1}{2}}{w}\right) \cdot c0\\

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

\end{array}
double f(double c0, double w, double h, double D, double d, double M) {
        double r3726339 = c0;
        double r3726340 = 2.0;
        double r3726341 = w;
        double r3726342 = r3726340 * r3726341;
        double r3726343 = r3726339 / r3726342;
        double r3726344 = d;
        double r3726345 = r3726344 * r3726344;
        double r3726346 = r3726339 * r3726345;
        double r3726347 = h;
        double r3726348 = r3726341 * r3726347;
        double r3726349 = D;
        double r3726350 = r3726349 * r3726349;
        double r3726351 = r3726348 * r3726350;
        double r3726352 = r3726346 / r3726351;
        double r3726353 = r3726352 * r3726352;
        double r3726354 = M;
        double r3726355 = r3726354 * r3726354;
        double r3726356 = r3726353 - r3726355;
        double r3726357 = sqrt(r3726356);
        double r3726358 = r3726352 + r3726357;
        double r3726359 = r3726343 * r3726358;
        return r3726359;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r3726360 = d;
        double r3726361 = -9.210163746526576e-130;
        bool r3726362 = r3726360 <= r3726361;
        double r3726363 = 0.0;
        double r3726364 = 7.672846710951726e-196;
        bool r3726365 = r3726360 <= r3726364;
        double r3726366 = D;
        double r3726367 = r3726360 / r3726366;
        double r3726368 = h;
        double r3726369 = r3726367 / r3726368;
        double r3726370 = c0;
        double r3726371 = r3726367 * r3726370;
        double r3726372 = w;
        double r3726373 = r3726371 / r3726372;
        double r3726374 = r3726369 * r3726373;
        double r3726375 = M;
        double r3726376 = r3726374 + r3726375;
        double r3726377 = sqrt(r3726376);
        double r3726378 = r3726374 - r3726375;
        double r3726379 = sqrt(r3726378);
        double r3726380 = fma(r3726377, r3726379, r3726374);
        double r3726381 = 0.5;
        double r3726382 = r3726381 / r3726372;
        double r3726383 = r3726380 * r3726382;
        double r3726384 = r3726383 * r3726370;
        double r3726385 = 3.1308943303645432e-12;
        bool r3726386 = r3726360 <= r3726385;
        double r3726387 = 1.6897539912803299e+78;
        bool r3726388 = r3726360 <= r3726387;
        double r3726389 = r3726388 ? r3726384 : r3726363;
        double r3726390 = r3726386 ? r3726363 : r3726389;
        double r3726391 = r3726365 ? r3726384 : r3726390;
        double r3726392 = r3726362 ? r3726363 : r3726391;
        return r3726392;
}

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

Derivation

  1. Split input into 2 regimes
  2. if d < -9.210163746526576e-130 or 7.672846710951726e-196 < d < 3.1308943303645432e-12 or 1.6897539912803299e+78 < d

    1. Initial program 58.1

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

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

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

    if -9.210163746526576e-130 < d < 7.672846710951726e-196 or 3.1308943303645432e-12 < d < 1.6897539912803299e+78

    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. Simplified47.6

      \[\leadsto \color{blue}{\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} \cdot \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h} - M \cdot M} + \frac{\frac{\left(c0 \cdot \frac{d}{D}\right) \cdot \frac{d}{D}}{w}}{h}\right)}\]
    3. Using strategy rm
    4. Applied div-inv47.6

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

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

      \[\leadsto c0 \cdot \color{blue}{\left(\frac{\frac{1}{2}}{w} \cdot \left(\sqrt{\left(M + \frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right) \cdot \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M\right)} + \frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right)}\]
    7. Using strategy rm
    8. Applied sqrt-prod49.7

      \[\leadsto c0 \cdot \left(\frac{\frac{1}{2}}{w} \cdot \left(\color{blue}{\sqrt{M + \frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}} \cdot \sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}} + \frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right)\]
    9. Applied fma-def49.6

      \[\leadsto c0 \cdot \left(\frac{\frac{1}{2}}{w} \cdot \color{blue}{\mathsf{fma}\left(\left(\sqrt{M + \frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}}\right), \left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}\right), \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right)}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification34.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;d \le -9.210163746526576 \cdot 10^{-130}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 7.672846710951726 \cdot 10^{-196}:\\ \;\;\;\;\left(\mathsf{fma}\left(\left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} + M}\right), \left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}\right), \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right) \cdot \frac{\frac{1}{2}}{w}\right) \cdot c0\\ \mathbf{elif}\;d \le 3.1308943303645432 \cdot 10^{-12}:\\ \;\;\;\;0\\ \mathbf{elif}\;d \le 1.6897539912803299 \cdot 10^{+78}:\\ \;\;\;\;\left(\mathsf{fma}\left(\left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} + M}\right), \left(\sqrt{\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w} - M}\right), \left(\frac{\frac{d}{D}}{h} \cdot \frac{\frac{d}{D} \cdot c0}{w}\right)\right) \cdot \frac{\frac{1}{2}}{w}\right) \cdot c0\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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