Average Error: 14.1 → 9.5
Time: 9.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}\;{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \le 3.714656130753052848700417977007998008265 \cdot 10^{271}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot h\right) \cdot \frac{1}{\ell}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{1} \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}\;{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \le 3.714656130753052848700417977007998008265 \cdot 10^{271}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot h\right) \cdot \frac{1}{\ell}}\\

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

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r255102 = w0;
        double r255103 = 1.0;
        double r255104 = M;
        double r255105 = D;
        double r255106 = r255104 * r255105;
        double r255107 = 2.0;
        double r255108 = d;
        double r255109 = r255107 * r255108;
        double r255110 = r255106 / r255109;
        double r255111 = pow(r255110, r255107);
        double r255112 = h;
        double r255113 = l;
        double r255114 = r255112 / r255113;
        double r255115 = r255111 * r255114;
        double r255116 = r255103 - r255115;
        double r255117 = sqrt(r255116);
        double r255118 = r255102 * r255117;
        return r255118;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r255119 = M;
        double r255120 = D;
        double r255121 = r255119 * r255120;
        double r255122 = 2.0;
        double r255123 = d;
        double r255124 = r255122 * r255123;
        double r255125 = r255121 / r255124;
        double r255126 = pow(r255125, r255122);
        double r255127 = 3.714656130753053e+271;
        bool r255128 = r255126 <= r255127;
        double r255129 = w0;
        double r255130 = 1.0;
        double r255131 = h;
        double r255132 = r255126 * r255131;
        double r255133 = 1.0;
        double r255134 = l;
        double r255135 = r255133 / r255134;
        double r255136 = r255132 * r255135;
        double r255137 = r255130 - r255136;
        double r255138 = sqrt(r255137);
        double r255139 = r255129 * r255138;
        double r255140 = sqrt(r255130);
        double r255141 = r255140 * r255129;
        double r255142 = r255128 ? r255139 : r255141;
        return r255142;
}

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 (pow (/ (* M D) (* 2.0 d)) 2.0) < 3.714656130753053e+271

    1. Initial program 6.7

      \[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-inv6.7

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

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

    if 3.714656130753053e+271 < (pow (/ (* M D) (* 2.0 d)) 2.0)

    1. Initial program 59.9

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

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

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

Reproduce

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