Average Error: 13.3 → 9.6
Time: 33.8s
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 -1.7711340644202013 \cdot 10^{+308}:\\ \;\;\;\;w0\\ \mathbf{elif}\;\frac{h}{\ell} \le -1.3952779318537435 \cdot 10^{-239}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{\left(\left(M \cdot D\right) \cdot \frac{M \cdot D}{d \cdot 2}\right) \cdot \frac{h}{\ell}}{d \cdot 2}}\\ \mathbf{else}:\\ \;\;\;\;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}\;\frac{h}{\ell} \le -1.7711340644202013 \cdot 10^{+308}:\\
\;\;\;\;w0\\

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

\mathbf{else}:\\
\;\;\;\;w0\\

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r3828620 = w0;
        double r3828621 = 1.0;
        double r3828622 = M;
        double r3828623 = D;
        double r3828624 = r3828622 * r3828623;
        double r3828625 = 2.0;
        double r3828626 = d;
        double r3828627 = r3828625 * r3828626;
        double r3828628 = r3828624 / r3828627;
        double r3828629 = pow(r3828628, r3828625);
        double r3828630 = h;
        double r3828631 = l;
        double r3828632 = r3828630 / r3828631;
        double r3828633 = r3828629 * r3828632;
        double r3828634 = r3828621 - r3828633;
        double r3828635 = sqrt(r3828634);
        double r3828636 = r3828620 * r3828635;
        return r3828636;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r3828637 = h;
        double r3828638 = l;
        double r3828639 = r3828637 / r3828638;
        double r3828640 = -1.7711340644202013e+308;
        bool r3828641 = r3828639 <= r3828640;
        double r3828642 = w0;
        double r3828643 = -1.3952779318537435e-239;
        bool r3828644 = r3828639 <= r3828643;
        double r3828645 = 1.0;
        double r3828646 = M;
        double r3828647 = D;
        double r3828648 = r3828646 * r3828647;
        double r3828649 = d;
        double r3828650 = 2.0;
        double r3828651 = r3828649 * r3828650;
        double r3828652 = r3828648 / r3828651;
        double r3828653 = r3828648 * r3828652;
        double r3828654 = r3828653 * r3828639;
        double r3828655 = r3828654 / r3828651;
        double r3828656 = r3828645 - r3828655;
        double r3828657 = sqrt(r3828656);
        double r3828658 = r3828642 * r3828657;
        double r3828659 = r3828644 ? r3828658 : r3828642;
        double r3828660 = r3828641 ? r3828642 : r3828659;
        return r3828660;
}

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) < -1.7711340644202013e+308 or -1.3952779318537435e-239 < (/ 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. Simplified13.6

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

      \[\leadsto \sqrt{1 - \left(\frac{M \cdot D}{2 \cdot d} \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot \frac{h}{\color{blue}{1 \cdot \ell}}} \cdot w0\]
    5. Applied add-cube-cbrt13.6

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

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

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

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

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

    if -1.7711340644202013e+308 < (/ h l) < -1.3952779318537435e-239

    1. Initial program 12.9

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

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

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

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

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

Reproduce

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