Average Error: 14.0 → 8.9
Time: 27.6s
Precision: 64
\[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
\[\begin{array}{l} \mathbf{if}\;\frac{h}{\ell} = -\infty \lor \neg \left(\frac{h}{\ell} \le -6.051505276988730809064682225880124571638 \cdot 10^{-311}\right):\\ \;\;\;\;w0 \cdot \sqrt{1}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \frac{h}{\ell}\right)}\\ \end{array}\]
w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}
\begin{array}{l}
\mathbf{if}\;\frac{h}{\ell} = -\infty \lor \neg \left(\frac{h}{\ell} \le -6.051505276988730809064682225880124571638 \cdot 10^{-311}\right):\\
\;\;\;\;w0 \cdot \sqrt{1}\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \frac{h}{\ell}\right)}\\

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r169820 = w0;
        double r169821 = 1.0;
        double r169822 = M;
        double r169823 = D;
        double r169824 = r169822 * r169823;
        double r169825 = 2.0;
        double r169826 = d;
        double r169827 = r169825 * r169826;
        double r169828 = r169824 / r169827;
        double r169829 = pow(r169828, r169825);
        double r169830 = h;
        double r169831 = l;
        double r169832 = r169830 / r169831;
        double r169833 = r169829 * r169832;
        double r169834 = r169821 - r169833;
        double r169835 = sqrt(r169834);
        double r169836 = r169820 * r169835;
        return r169836;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r169837 = h;
        double r169838 = l;
        double r169839 = r169837 / r169838;
        double r169840 = -inf.0;
        bool r169841 = r169839 <= r169840;
        double r169842 = -6.0515052769887e-311;
        bool r169843 = r169839 <= r169842;
        double r169844 = !r169843;
        bool r169845 = r169841 || r169844;
        double r169846 = w0;
        double r169847 = 1.0;
        double r169848 = sqrt(r169847);
        double r169849 = r169846 * r169848;
        double r169850 = M;
        double r169851 = D;
        double r169852 = r169850 * r169851;
        double r169853 = 2.0;
        double r169854 = d;
        double r169855 = r169853 * r169854;
        double r169856 = r169852 / r169855;
        double r169857 = 2.0;
        double r169858 = r169853 / r169857;
        double r169859 = pow(r169856, r169858);
        double r169860 = r169859 * r169839;
        double r169861 = r169859 * r169860;
        double r169862 = r169847 - r169861;
        double r169863 = sqrt(r169862);
        double r169864 = r169846 * r169863;
        double r169865 = r169845 ? r169849 : r169864;
        return r169865;
}

Error

Bits error versus w0

Bits error versus M

Bits error versus D

Bits error versus h

Bits error versus l

Bits error versus d

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (/ h l) < -inf.0 or -6.0515052769887e-311 < (/ h l)

    1. Initial program 13.6

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
    2. Taylor expanded around 0 5.8

      \[\leadsto w0 \cdot \color{blue}{\sqrt{1}}\]

    if -inf.0 < (/ h l) < -6.0515052769887e-311

    1. Initial program 14.4

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
    2. Using strategy rm
    3. Applied sqr-pow14.4

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}\right)} \cdot \frac{h}{\ell}}\]
    4. Applied associate-*l*12.4

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \frac{h}{\ell}\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification8.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} = -\infty \lor \neg \left(\frac{h}{\ell} \le -6.051505276988730809064682225880124571638 \cdot 10^{-311}\right):\\ \;\;\;\;w0 \cdot \sqrt{1}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \frac{h}{\ell}\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019323 +o rules:numerics
(FPCore (w0 M D h l d)
  :name "Henrywood and Agarwal, Equation (9a)"
  :precision binary64
  (* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))