Average Error: 58.1 → 33.1
Time: 43.7s
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 r3251829 = c0;
        double r3251830 = 2.0;
        double r3251831 = w;
        double r3251832 = r3251830 * r3251831;
        double r3251833 = r3251829 / r3251832;
        double r3251834 = d;
        double r3251835 = r3251834 * r3251834;
        double r3251836 = r3251829 * r3251835;
        double r3251837 = h;
        double r3251838 = r3251831 * r3251837;
        double r3251839 = D;
        double r3251840 = r3251839 * r3251839;
        double r3251841 = r3251838 * r3251840;
        double r3251842 = r3251836 / r3251841;
        double r3251843 = r3251842 * r3251842;
        double r3251844 = M;
        double r3251845 = r3251844 * r3251844;
        double r3251846 = r3251843 - r3251845;
        double r3251847 = sqrt(r3251846);
        double r3251848 = r3251842 + r3251847;
        double r3251849 = r3251833 * r3251848;
        return r3251849;
}

double f(double c0, double w, double h, double D, double d, double M) {
        double r3251850 = c0;
        double r3251851 = w;
        double r3251852 = 2.0;
        double r3251853 = r3251851 * r3251852;
        double r3251854 = r3251850 / r3251853;
        double r3251855 = d;
        double r3251856 = r3251855 * r3251855;
        double r3251857 = r3251850 * r3251856;
        double r3251858 = D;
        double r3251859 = r3251858 * r3251858;
        double r3251860 = h;
        double r3251861 = r3251851 * r3251860;
        double r3251862 = r3251859 * r3251861;
        double r3251863 = r3251857 / r3251862;
        double r3251864 = r3251863 * r3251863;
        double r3251865 = M;
        double r3251866 = r3251865 * r3251865;
        double r3251867 = r3251864 - r3251866;
        double r3251868 = sqrt(r3251867);
        double r3251869 = r3251868 + r3251863;
        double r3251870 = r3251854 * r3251869;
        double r3251871 = -1.5985938909858085e-110;
        bool r3251872 = r3251870 <= r3251871;
        double r3251873 = r3251850 / r3251860;
        double r3251874 = r3251855 / r3251858;
        double r3251875 = r3251874 * r3251874;
        double r3251876 = r3251875 / r3251851;
        double r3251877 = r3251873 * r3251876;
        double r3251878 = r3251877 + r3251865;
        double r3251879 = sqrt(r3251878);
        double r3251880 = r3251877 - r3251865;
        double r3251881 = sqrt(r3251880);
        double r3251882 = fma(r3251879, r3251881, r3251877);
        double r3251883 = r3251882 / r3251852;
        double r3251884 = r3251850 / r3251851;
        double r3251885 = r3251883 * r3251884;
        double r3251886 = 0.0;
        double r3251887 = r3251872 ? r3251885 : r3251886;
        return r3251887;
}

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 -inf 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))))))