Average Error: 14.6 → 9.7
Time: 14.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} \le -4.434769257142831 \cdot 10^{294} \lor \neg \left(\frac{h}{\ell} \le -3.0353158251 \cdot 10^{-314}\right):\\ \;\;\;\;\sqrt{1} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M}{2 \cdot \frac{d}{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} \le -4.434769257142831 \cdot 10^{294} \lor \neg \left(\frac{h}{\ell} \le -3.0353158251 \cdot 10^{-314}\right):\\
\;\;\;\;\sqrt{1} \cdot w0\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M}{2 \cdot \frac{d}{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 r199692 = w0;
        double r199693 = 1.0;
        double r199694 = M;
        double r199695 = D;
        double r199696 = r199694 * r199695;
        double r199697 = 2.0;
        double r199698 = d;
        double r199699 = r199697 * r199698;
        double r199700 = r199696 / r199699;
        double r199701 = pow(r199700, r199697);
        double r199702 = h;
        double r199703 = l;
        double r199704 = r199702 / r199703;
        double r199705 = r199701 * r199704;
        double r199706 = r199693 - r199705;
        double r199707 = sqrt(r199706);
        double r199708 = r199692 * r199707;
        return r199708;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r199709 = h;
        double r199710 = l;
        double r199711 = r199709 / r199710;
        double r199712 = -4.434769257142831e+294;
        bool r199713 = r199711 <= r199712;
        double r199714 = -3.0353158251021e-314;
        bool r199715 = r199711 <= r199714;
        double r199716 = !r199715;
        bool r199717 = r199713 || r199716;
        double r199718 = 1.0;
        double r199719 = sqrt(r199718);
        double r199720 = w0;
        double r199721 = r199719 * r199720;
        double r199722 = M;
        double r199723 = 2.0;
        double r199724 = d;
        double r199725 = D;
        double r199726 = r199724 / r199725;
        double r199727 = r199723 * r199726;
        double r199728 = r199722 / r199727;
        double r199729 = 2.0;
        double r199730 = r199723 / r199729;
        double r199731 = pow(r199728, r199730);
        double r199732 = r199722 * r199725;
        double r199733 = r199723 * r199724;
        double r199734 = r199732 / r199733;
        double r199735 = pow(r199734, r199730);
        double r199736 = r199735 * r199711;
        double r199737 = r199731 * r199736;
        double r199738 = r199718 - r199737;
        double r199739 = sqrt(r199738);
        double r199740 = r199720 * r199739;
        double r199741 = r199717 ? r199721 : r199740;
        return r199741;
}

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) < -4.434769257142831e+294 or -3.0353158251021e-314 < (/ h l)

    1. Initial program 14.5

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

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

    if -4.434769257142831e+294 < (/ h l) < -3.0353158251021e-314

    1. Initial program 14.6

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

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

      \[\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)}}\]
    5. Using strategy rm
    6. Applied associate-/l*13.5

      \[\leadsto w0 \cdot \sqrt{1 - {\color{blue}{\left(\frac{M}{\frac{2 \cdot d}{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)}\]
    7. Simplified13.5

      \[\leadsto w0 \cdot \sqrt{1 - {\left(\frac{M}{\color{blue}{2 \cdot \frac{d}{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 simplification9.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \le -4.434769257142831 \cdot 10^{294} \lor \neg \left(\frac{h}{\ell} \le -3.0353158251 \cdot 10^{-314}\right):\\ \;\;\;\;\sqrt{1} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M}{2 \cdot \frac{d}{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 2020047 +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))))))