Average Error: 13.6 → 8.5
Time: 30.0s
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 3.4319858655868117 \cdot 10^{+19}:\\ \;\;\;\;\sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d}}{\frac{1}{h}} \cdot \frac{\frac{M \cdot D}{2 \cdot d}}{\ell}} \cdot w0\\ \mathbf{elif}\;\ell \le 1.6103340374846473 \cdot 10^{+298}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{\frac{\frac{M}{d} \cdot \frac{D}{2}}{\sqrt[3]{\frac{\ell}{h}}} \cdot \frac{\frac{M}{d} \cdot \frac{D}{2}}{\sqrt[3]{\frac{\ell}{h}}}}{\sqrt[3]{\frac{\ell}{h}}}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d}}{\frac{1}{h}} \cdot \frac{\frac{M \cdot D}{2 \cdot d}}{\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 3.4319858655868117 \cdot 10^{+19}:\\
\;\;\;\;\sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d}}{\frac{1}{h}} \cdot \frac{\frac{M \cdot D}{2 \cdot d}}{\ell}} \cdot w0\\

\mathbf{elif}\;\ell \le 1.6103340374846473 \cdot 10^{+298}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{\frac{\frac{M}{d} \cdot \frac{D}{2}}{\sqrt[3]{\frac{\ell}{h}}} \cdot \frac{\frac{M}{d} \cdot \frac{D}{2}}{\sqrt[3]{\frac{\ell}{h}}}}{\sqrt[3]{\frac{\ell}{h}}}}\\

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

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r3277857 = w0;
        double r3277858 = 1.0;
        double r3277859 = M;
        double r3277860 = D;
        double r3277861 = r3277859 * r3277860;
        double r3277862 = 2.0;
        double r3277863 = d;
        double r3277864 = r3277862 * r3277863;
        double r3277865 = r3277861 / r3277864;
        double r3277866 = pow(r3277865, r3277862);
        double r3277867 = h;
        double r3277868 = l;
        double r3277869 = r3277867 / r3277868;
        double r3277870 = r3277866 * r3277869;
        double r3277871 = r3277858 - r3277870;
        double r3277872 = sqrt(r3277871);
        double r3277873 = r3277857 * r3277872;
        return r3277873;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r3277874 = l;
        double r3277875 = 3.4319858655868117e+19;
        bool r3277876 = r3277874 <= r3277875;
        double r3277877 = 1.0;
        double r3277878 = M;
        double r3277879 = D;
        double r3277880 = r3277878 * r3277879;
        double r3277881 = 2.0;
        double r3277882 = d;
        double r3277883 = r3277881 * r3277882;
        double r3277884 = r3277880 / r3277883;
        double r3277885 = h;
        double r3277886 = r3277877 / r3277885;
        double r3277887 = r3277884 / r3277886;
        double r3277888 = r3277884 / r3277874;
        double r3277889 = r3277887 * r3277888;
        double r3277890 = r3277877 - r3277889;
        double r3277891 = sqrt(r3277890);
        double r3277892 = w0;
        double r3277893 = r3277891 * r3277892;
        double r3277894 = 1.6103340374846473e+298;
        bool r3277895 = r3277874 <= r3277894;
        double r3277896 = r3277878 / r3277882;
        double r3277897 = r3277879 / r3277881;
        double r3277898 = r3277896 * r3277897;
        double r3277899 = r3277874 / r3277885;
        double r3277900 = cbrt(r3277899);
        double r3277901 = r3277898 / r3277900;
        double r3277902 = r3277901 * r3277901;
        double r3277903 = r3277902 / r3277900;
        double r3277904 = r3277877 - r3277903;
        double r3277905 = sqrt(r3277904);
        double r3277906 = r3277892 * r3277905;
        double r3277907 = r3277895 ? r3277906 : r3277893;
        double r3277908 = r3277876 ? r3277893 : r3277907;
        return r3277908;
}

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 < 3.4319858655868117e+19 or 1.6103340374846473e+298 < l

    1. Initial program 15.0

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

      \[\leadsto \color{blue}{\sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d} \cdot \frac{M \cdot D}{2 \cdot d}}{\frac{\ell}{h}}} \cdot w0}\]
    3. Using strategy rm
    4. Applied div-inv14.4

      \[\leadsto \sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d} \cdot \frac{M \cdot D}{2 \cdot d}}{\color{blue}{\ell \cdot \frac{1}{h}}}} \cdot w0\]
    5. Applied times-frac8.8

      \[\leadsto \sqrt{1 - \color{blue}{\frac{\frac{M \cdot D}{2 \cdot d}}{\ell} \cdot \frac{\frac{M \cdot D}{2 \cdot d}}{\frac{1}{h}}}} \cdot w0\]
    6. Using strategy rm
    7. Applied *-un-lft-identity8.8

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

    if 3.4319858655868117e+19 < l < 1.6103340374846473e+298

    1. Initial program 9.5

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

      \[\leadsto \color{blue}{\sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d} \cdot \frac{M \cdot D}{2 \cdot d}}{\frac{\ell}{h}}} \cdot w0}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt9.5

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\ell \le 3.4319858655868117 \cdot 10^{+19}:\\ \;\;\;\;\sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d}}{\frac{1}{h}} \cdot \frac{\frac{M \cdot D}{2 \cdot d}}{\ell}} \cdot w0\\ \mathbf{elif}\;\ell \le 1.6103340374846473 \cdot 10^{+298}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{\frac{\frac{M}{d} \cdot \frac{D}{2}}{\sqrt[3]{\frac{\ell}{h}}} \cdot \frac{\frac{M}{d} \cdot \frac{D}{2}}{\sqrt[3]{\frac{\ell}{h}}}}{\sqrt[3]{\frac{\ell}{h}}}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{1 - \frac{\frac{M \cdot D}{2 \cdot d}}{\frac{1}{h}} \cdot \frac{\frac{M \cdot D}{2 \cdot d}}{\ell}} \cdot w0\\ \end{array}\]

Reproduce

herbie shell --seed 2019134 +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))))))