Average Error: 14.2 → 8.4
Time: 12.1s
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 r270216 = w0;
        double r270217 = 1.0;
        double r270218 = M;
        double r270219 = D;
        double r270220 = r270218 * r270219;
        double r270221 = 2.0;
        double r270222 = d;
        double r270223 = r270221 * r270222;
        double r270224 = r270220 / r270223;
        double r270225 = pow(r270224, r270221);
        double r270226 = h;
        double r270227 = l;
        double r270228 = r270226 / r270227;
        double r270229 = r270225 * r270228;
        double r270230 = r270217 - r270229;
        double r270231 = sqrt(r270230);
        double r270232 = r270216 * r270231;
        return r270232;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r270233 = 1.0;
        double r270234 = M;
        double r270235 = D;
        double r270236 = r270234 * r270235;
        double r270237 = 2.0;
        double r270238 = d;
        double r270239 = r270237 * r270238;
        double r270240 = r270236 / r270239;
        double r270241 = pow(r270240, r270237);
        double r270242 = h;
        double r270243 = l;
        double r270244 = r270242 / r270243;
        double r270245 = r270241 * r270244;
        double r270246 = r270233 - r270245;
        double r270247 = 1.0356903168183679e+292;
        bool r270248 = r270246 <= r270247;
        double r270249 = w0;
        double r270250 = 2.0;
        double r270251 = r270237 / r270250;
        double r270252 = pow(r270240, r270251);
        double r270253 = r270252 * r270244;
        double r270254 = r270252 * r270253;
        double r270255 = r270233 - r270254;
        double r270256 = sqrt(r270255);
        double r270257 = r270249 * r270256;
        double r270258 = r270234 / r270237;
        double r270259 = r270235 / r270238;
        double r270260 = r270258 * r270259;
        double r270261 = pow(r270260, r270251);
        double r270262 = r270261 * r270242;
        double r270263 = r270261 * r270262;
        double r270264 = r270263 / r270243;
        double r270265 = r270233 - r270264;
        double r270266 = sqrt(r270265);
        double r270267 = r270249 * r270266;
        double r270268 = r270248 ? r270257 : r270267;
        return r270268;
}

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 +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))))))