Average Error: 14.1 → 8.6
Time: 25.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 -1.137897252452376107719566610395472751847 \cdot 10^{-223}\right):\\ \;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\left(M \cdot D\right) \cdot \frac{1}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)\right) \cdot \frac{1}{\ell}}\\ \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 -1.137897252452376107719566610395472751847 \cdot 10^{-223}\right):\\
\;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\left(M \cdot D\right) \cdot \frac{1}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)\right) \cdot \frac{1}{\ell}}\\

\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 r177088 = w0;
        double r177089 = 1.0;
        double r177090 = M;
        double r177091 = D;
        double r177092 = r177090 * r177091;
        double r177093 = 2.0;
        double r177094 = d;
        double r177095 = r177093 * r177094;
        double r177096 = r177092 / r177095;
        double r177097 = pow(r177096, r177093);
        double r177098 = h;
        double r177099 = l;
        double r177100 = r177098 / r177099;
        double r177101 = r177097 * r177100;
        double r177102 = r177089 - r177101;
        double r177103 = sqrt(r177102);
        double r177104 = r177088 * r177103;
        return r177104;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r177105 = h;
        double r177106 = l;
        double r177107 = r177105 / r177106;
        double r177108 = -inf.0;
        bool r177109 = r177107 <= r177108;
        double r177110 = -1.1378972524523761e-223;
        bool r177111 = r177107 <= r177110;
        double r177112 = !r177111;
        bool r177113 = r177109 || r177112;
        double r177114 = w0;
        double r177115 = 1.0;
        double r177116 = M;
        double r177117 = D;
        double r177118 = r177116 * r177117;
        double r177119 = 2.0;
        double r177120 = d;
        double r177121 = r177119 * r177120;
        double r177122 = r177118 / r177121;
        double r177123 = 2.0;
        double r177124 = r177119 / r177123;
        double r177125 = pow(r177122, r177124);
        double r177126 = 1.0;
        double r177127 = r177126 / r177121;
        double r177128 = r177118 * r177127;
        double r177129 = pow(r177128, r177124);
        double r177130 = r177129 * r177105;
        double r177131 = r177125 * r177130;
        double r177132 = r177126 / r177106;
        double r177133 = r177131 * r177132;
        double r177134 = r177115 - r177133;
        double r177135 = sqrt(r177134);
        double r177136 = r177114 * r177135;
        double r177137 = r177125 * r177107;
        double r177138 = r177125 * r177137;
        double r177139 = r177115 - r177138;
        double r177140 = sqrt(r177139);
        double r177141 = r177114 * r177140;
        double r177142 = r177113 ? r177136 : r177141;
        return r177142;
}

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 -1.1378972524523761e-223 < (/ h l)

    1. Initial program 13.9

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

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

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot h\right) \cdot \frac{1}{\ell}}}\]
    5. Using strategy rm
    6. Applied sqr-pow7.5

      \[\leadsto w0 \cdot \sqrt{1 - \left(\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 h\right) \cdot \frac{1}{\ell}}\]
    7. Applied associate-*l*5.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({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)\right)} \cdot \frac{1}{\ell}}\]
    8. Using strategy rm
    9. Applied div-inv5.4

      \[\leadsto w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\color{blue}{\left(\left(M \cdot D\right) \cdot \frac{1}{2 \cdot d}\right)}}^{\left(\frac{2}{2}\right)} \cdot h\right)\right) \cdot \frac{1}{\ell}}\]

    if -inf.0 < (/ h l) < -1.1378972524523761e-223

    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*13.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} = -\infty \lor \neg \left(\frac{h}{\ell} \le -1.137897252452376107719566610395472751847 \cdot 10^{-223}\right):\\ \;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\left(M \cdot D\right) \cdot \frac{1}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)\right) \cdot \frac{1}{\ell}}\\ \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 2019326 +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))))))