Average Error: 14.2 → 8.4
Time: 11.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}\;1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell} \le 1.03569031681836787 \cdot 10^{292}:\\ \;\;\;\;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 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)}{\ell}}\\ \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}\;1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell} \le 1.03569031681836787 \cdot 10^{292}:\\
\;\;\;\;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 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)}{\ell}}\\

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r228614 = w0;
        double r228615 = 1.0;
        double r228616 = M;
        double r228617 = D;
        double r228618 = r228616 * r228617;
        double r228619 = 2.0;
        double r228620 = d;
        double r228621 = r228619 * r228620;
        double r228622 = r228618 / r228621;
        double r228623 = pow(r228622, r228619);
        double r228624 = h;
        double r228625 = l;
        double r228626 = r228624 / r228625;
        double r228627 = r228623 * r228626;
        double r228628 = r228615 - r228627;
        double r228629 = sqrt(r228628);
        double r228630 = r228614 * r228629;
        return r228630;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r228631 = 1.0;
        double r228632 = M;
        double r228633 = D;
        double r228634 = r228632 * r228633;
        double r228635 = 2.0;
        double r228636 = d;
        double r228637 = r228635 * r228636;
        double r228638 = r228634 / r228637;
        double r228639 = pow(r228638, r228635);
        double r228640 = h;
        double r228641 = l;
        double r228642 = r228640 / r228641;
        double r228643 = r228639 * r228642;
        double r228644 = r228631 - r228643;
        double r228645 = 1.0356903168183679e+292;
        bool r228646 = r228644 <= r228645;
        double r228647 = w0;
        double r228648 = 2.0;
        double r228649 = r228635 / r228648;
        double r228650 = pow(r228638, r228649);
        double r228651 = r228650 * r228642;
        double r228652 = r228650 * r228651;
        double r228653 = r228631 - r228652;
        double r228654 = sqrt(r228653);
        double r228655 = r228647 * r228654;
        double r228656 = r228632 / r228635;
        double r228657 = r228633 / r228636;
        double r228658 = r228656 * r228657;
        double r228659 = pow(r228658, r228649);
        double r228660 = r228659 * r228640;
        double r228661 = r228659 * r228660;
        double r228662 = r228661 / r228641;
        double r228663 = r228631 - r228662;
        double r228664 = sqrt(r228663);
        double r228665 = r228647 * r228664;
        double r228666 = r228646 ? r228655 : r228665;
        return r228666;
}

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 (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))) < 1.0356903168183679e+292

    1. Initial program 0.2

      \[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-pow0.2

      \[\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*0.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 1.0356903168183679e+292 < (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l)))

    1. Initial program 63.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 associate-*r/45.7

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell} \le 1.03569031681836787 \cdot 10^{292}:\\ \;\;\;\;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 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)}{\ell}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020083 
(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))))))