Average Error: 13.6 → 8.2
Time: 2.4m
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}\;\ell \le -1.066168939072587 \cdot 10^{-22}:\\ \;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\ \mathbf{elif}\;\ell \le 1.1961345055262083 \cdot 10^{+26}:\\ \;\;\;\;{\left(1 - \frac{h \cdot \left(\frac{\frac{M}{2}}{\frac{d}{D}} \cdot \frac{\frac{M}{2}}{\frac{d}{D}}\right)}{\ell}\right)}^{\frac{1}{2}} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\ \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}\;\ell \le -1.066168939072587 \cdot 10^{-22}:\\
\;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\

\mathbf{elif}\;\ell \le 1.1961345055262083 \cdot 10^{+26}:\\
\;\;\;\;{\left(1 - \frac{h \cdot \left(\frac{\frac{M}{2}}{\frac{d}{D}} \cdot \frac{\frac{M}{2}}{\frac{d}{D}}\right)}{\ell}\right)}^{\frac{1}{2}} \cdot w0\\

\mathbf{else}:\\
\;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r36658953 = w0;
        double r36658954 = 1.0;
        double r36658955 = M;
        double r36658956 = D;
        double r36658957 = r36658955 * r36658956;
        double r36658958 = 2.0;
        double r36658959 = d;
        double r36658960 = r36658958 * r36658959;
        double r36658961 = r36658957 / r36658960;
        double r36658962 = pow(r36658961, r36658958);
        double r36658963 = h;
        double r36658964 = l;
        double r36658965 = r36658963 / r36658964;
        double r36658966 = r36658962 * r36658965;
        double r36658967 = r36658954 - r36658966;
        double r36658968 = sqrt(r36658967);
        double r36658969 = r36658953 * r36658968;
        return r36658969;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r36658970 = l;
        double r36658971 = -1.066168939072587e-22;
        bool r36658972 = r36658970 <= r36658971;
        double r36658973 = 1.0;
        double r36658974 = M;
        double r36658975 = D;
        double r36658976 = r36658974 * r36658975;
        double r36658977 = d;
        double r36658978 = 2.0;
        double r36658979 = r36658977 * r36658978;
        double r36658980 = r36658976 / r36658979;
        double r36658981 = h;
        double r36658982 = r36658980 * r36658981;
        double r36658983 = r36658982 / r36658970;
        double r36658984 = r36658980 * r36658983;
        double r36658985 = r36658973 - r36658984;
        double r36658986 = sqrt(r36658985);
        double r36658987 = w0;
        double r36658988 = r36658986 * r36658987;
        double r36658989 = 1.1961345055262083e+26;
        bool r36658990 = r36658970 <= r36658989;
        double r36658991 = r36658974 / r36658978;
        double r36658992 = r36658977 / r36658975;
        double r36658993 = r36658991 / r36658992;
        double r36658994 = r36658993 * r36658993;
        double r36658995 = r36658981 * r36658994;
        double r36658996 = r36658995 / r36658970;
        double r36658997 = r36658973 - r36658996;
        double r36658998 = 0.5;
        double r36658999 = pow(r36658997, r36658998);
        double r36659000 = r36658999 * r36658987;
        double r36659001 = r36658990 ? r36659000 : r36658988;
        double r36659002 = r36658972 ? r36658988 : r36659001;
        return r36659002;
}

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 l < -1.066168939072587e-22 or 1.1961345055262083e+26 < l

    1. Initial program 9.6

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

      \[\leadsto \color{blue}{\sqrt{1 - \left(\frac{h}{\ell} \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot \frac{M \cdot D}{2 \cdot d}} \cdot w0}\]
    3. Using strategy rm
    4. Applied associate-*l/6.8

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

    if -1.066168939072587e-22 < l < 1.1961345055262083e+26

    1. Initial program 18.2

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
    2. Simplified17.8

      \[\leadsto \color{blue}{\sqrt{1 - \left(\frac{h}{\ell} \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot \frac{M \cdot D}{2 \cdot d}} \cdot w0}\]
    3. Using strategy rm
    4. Applied times-frac18.3

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\ell \le -1.066168939072587 \cdot 10^{-22}:\\ \;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\ \mathbf{elif}\;\ell \le 1.1961345055262083 \cdot 10^{+26}:\\ \;\;\;\;{\left(1 - \frac{h \cdot \left(\frac{\frac{M}{2}}{\frac{d}{D}} \cdot \frac{\frac{M}{2}}{\frac{d}{D}}\right)}{\ell}\right)}^{\frac{1}{2}} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;\sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \frac{\frac{M \cdot D}{d \cdot 2} \cdot h}{\ell}} \cdot w0\\ \end{array}\]

Reproduce

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