Average Error: 58.1 → 33.1
Time: 40.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}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le -1.5985938909858085 \cdot 10^{-110}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M}, \sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M}, \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right)}{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}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le -1.5985938909858085 \cdot 10^{-110}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M}, \sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M}, \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right)}{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 r1759752 = c0;
        double r1759753 = 2.0;
        double r1759754 = w;
        double r1759755 = r1759753 * r1759754;
        double r1759756 = r1759752 / r1759755;
        double r1759757 = d;
        double r1759758 = r1759757 * r1759757;
        double r1759759 = r1759752 * r1759758;
        double r1759760 = h;
        double r1759761 = r1759754 * r1759760;
        double r1759762 = D;
        double r1759763 = r1759762 * r1759762;
        double r1759764 = r1759761 * r1759763;
        double r1759765 = r1759759 / r1759764;
        double r1759766 = r1759765 * r1759765;
        double r1759767 = M;
        double r1759768 = r1759767 * r1759767;
        double r1759769 = r1759766 - r1759768;
        double r1759770 = sqrt(r1759769);
        double r1759771 = r1759765 + r1759770;
        double r1759772 = r1759756 * r1759771;
        return r1759772;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r1759773 = c0;
        double r1759774 = w;
        double r1759775 = 2.0;
        double r1759776 = r1759774 * r1759775;
        double r1759777 = r1759773 / r1759776;
        double r1759778 = d;
        double r1759779 = r1759778 * r1759778;
        double r1759780 = r1759773 * r1759779;
        double r1759781 = D;
        double r1759782 = r1759781 * r1759781;
        double r1759783 = h;
        double r1759784 = r1759774 * r1759783;
        double r1759785 = r1759782 * r1759784;
        double r1759786 = r1759780 / r1759785;
        double r1759787 = r1759786 * r1759786;
        double r1759788 = M;
        double r1759789 = r1759788 * r1759788;
        double r1759790 = r1759787 - r1759789;
        double r1759791 = sqrt(r1759790);
        double r1759792 = r1759791 + r1759786;
        double r1759793 = r1759777 * r1759792;
        double r1759794 = -1.5985938909858085e-110;
        bool r1759795 = r1759793 <= r1759794;
        double r1759796 = r1759773 / r1759783;
        double r1759797 = r1759778 / r1759781;
        double r1759798 = r1759797 * r1759797;
        double r1759799 = r1759798 / r1759774;
        double r1759800 = r1759796 * r1759799;
        double r1759801 = r1759800 + r1759788;
        double r1759802 = sqrt(r1759801);
        double r1759803 = r1759800 - r1759788;
        double r1759804 = sqrt(r1759803);
        double r1759805 = fma(r1759802, r1759804, r1759800);
        double r1759806 = r1759805 / r1759775;
        double r1759807 = r1759773 / r1759774;
        double r1759808 = r1759806 * r1759807;
        double r1759809 = 0.0;
        double r1759810 = r1759795 ? r1759808 : r1759809;
        return r1759810;
}

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 (* (/ 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))))) < -1.5985938909858085e-110

    1. Initial program 47.3

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

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

      \[\leadsto \frac{c0}{w} \cdot \frac{\sqrt{\color{blue}{\left(\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M\right) \cdot \left(\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M\right)}} + \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}}{2}\]
    5. Applied sqrt-prod42.4

      \[\leadsto \frac{c0}{w} \cdot \frac{\color{blue}{\sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M} \cdot \sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M}} + \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}}{2}\]
    6. Applied fma-def42.4

      \[\leadsto \frac{c0}{w} \cdot \frac{\color{blue}{\mathsf{fma}\left(\sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M}, \sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M}, \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right)}}{2}\]

    if -1.5985938909858085e-110 < (* (/ 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)))))

    1. Initial program 58.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. Simplified53.7

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

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

      \[\leadsto \color{blue}{0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification33.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le -1.5985938909858085 \cdot 10^{-110}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} + M}, \sqrt{\frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w} - M}, \frac{c0}{h} \cdot \frac{\frac{d}{D} \cdot \frac{d}{D}}{w}\right)}{2} \cdot \frac{c0}{w}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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