Average Error: 13.9 → 8.5
Time: 29.9s
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.772760482564671173426908542606429127075 \cdot 10^{276}:\\ \;\;\;\;w0 \cdot \left(\left|\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}\right| \cdot \sqrt{\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}}\right)\\ \mathbf{elif}\;\frac{h}{\ell} \le -7.435657658983388129381875100171289188713 \cdot 10^{-315}:\\ \;\;\;\;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)}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1}\\ \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.772760482564671173426908542606429127075 \cdot 10^{276}:\\
\;\;\;\;w0 \cdot \left(\left|\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}\right| \cdot \sqrt{\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}}\right)\\

\mathbf{elif}\;\frac{h}{\ell} \le -7.435657658983388129381875100171289188713 \cdot 10^{-315}:\\
\;\;\;\;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)}\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1}\\

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r165733 = w0;
        double r165734 = 1.0;
        double r165735 = M;
        double r165736 = D;
        double r165737 = r165735 * r165736;
        double r165738 = 2.0;
        double r165739 = d;
        double r165740 = r165738 * r165739;
        double r165741 = r165737 / r165740;
        double r165742 = pow(r165741, r165738);
        double r165743 = h;
        double r165744 = l;
        double r165745 = r165743 / r165744;
        double r165746 = r165742 * r165745;
        double r165747 = r165734 - r165746;
        double r165748 = sqrt(r165747);
        double r165749 = r165733 * r165748;
        return r165749;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r165750 = h;
        double r165751 = l;
        double r165752 = r165750 / r165751;
        double r165753 = -4.772760482564671e+276;
        bool r165754 = r165752 <= r165753;
        double r165755 = w0;
        double r165756 = 1.0;
        double r165757 = M;
        double r165758 = 2.0;
        double r165759 = r165757 / r165758;
        double r165760 = D;
        double r165761 = d;
        double r165762 = r165760 / r165761;
        double r165763 = r165759 * r165762;
        double r165764 = pow(r165763, r165758);
        double r165765 = r165764 * r165750;
        double r165766 = r165765 / r165751;
        double r165767 = r165756 - r165766;
        double r165768 = cbrt(r165767);
        double r165769 = fabs(r165768);
        double r165770 = sqrt(r165768);
        double r165771 = r165769 * r165770;
        double r165772 = r165755 * r165771;
        double r165773 = -7.4356576589834e-315;
        bool r165774 = r165752 <= r165773;
        double r165775 = r165757 * r165760;
        double r165776 = r165758 * r165761;
        double r165777 = r165775 / r165776;
        double r165778 = 2.0;
        double r165779 = r165758 / r165778;
        double r165780 = pow(r165777, r165779);
        double r165781 = r165780 * r165752;
        double r165782 = r165780 * r165781;
        double r165783 = r165756 - r165782;
        double r165784 = sqrt(r165783);
        double r165785 = r165755 * r165784;
        double r165786 = sqrt(r165756);
        double r165787 = r165755 * r165786;
        double r165788 = r165774 ? r165785 : r165787;
        double r165789 = r165754 ? r165772 : r165788;
        return r165789;
}

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 3 regimes
  2. if (/ h l) < -4.772760482564671e+276

    1. Initial program 54.5

      \[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-inv54.5

      \[\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*24.9

      \[\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 times-frac24.7

      \[\leadsto w0 \cdot \sqrt{1 - \left({\color{blue}{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}}^{2} \cdot h\right) \cdot \frac{1}{\ell}}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt24.8

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

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

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

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

    if -4.772760482564671e+276 < (/ h l) < -7.4356576589834e-315

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

      \[\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)}}\]

    if -7.4356576589834e-315 < (/ h l)

    1. Initial program 7.5

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

      \[\leadsto w0 \cdot \color{blue}{\sqrt{1}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification8.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \le -4.772760482564671173426908542606429127075 \cdot 10^{276}:\\ \;\;\;\;w0 \cdot \left(\left|\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}\right| \cdot \sqrt{\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}}\right)\\ \mathbf{elif}\;\frac{h}{\ell} \le -7.435657658983388129381875100171289188713 \cdot 10^{-315}:\\ \;\;\;\;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)}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1}\\ \end{array}\]

Reproduce

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