Average Error: 13.9 → 9.4
Time: 12.2s
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 1.855277338734028038380413031509408290214 \cdot 10^{-289} \lor \neg \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \le 1.933159505335491079472504373058255984824 \cdot 10^{291}\right):\\ \;\;\;\;\sqrt{1} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \left(\sqrt[3]{\frac{h}{\ell}} \cdot \sqrt[3]{\frac{h}{\ell}}\right)\right) \cdot \sqrt[3]{\frac{h}{\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}\;{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \le 1.855277338734028038380413031509408290214 \cdot 10^{-289} \lor \neg \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \le 1.933159505335491079472504373058255984824 \cdot 10^{291}\right):\\
\;\;\;\;\sqrt{1} \cdot w0\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \left(\sqrt[3]{\frac{h}{\ell}} \cdot \sqrt[3]{\frac{h}{\ell}}\right)\right) \cdot \sqrt[3]{\frac{h}{\ell}}}\\

\end{array}
double f(double w0, double M, double D, double h, double l, double d) {
        double r211359 = w0;
        double r211360 = 1.0;
        double r211361 = M;
        double r211362 = D;
        double r211363 = r211361 * r211362;
        double r211364 = 2.0;
        double r211365 = d;
        double r211366 = r211364 * r211365;
        double r211367 = r211363 / r211366;
        double r211368 = pow(r211367, r211364);
        double r211369 = h;
        double r211370 = l;
        double r211371 = r211369 / r211370;
        double r211372 = r211368 * r211371;
        double r211373 = r211360 - r211372;
        double r211374 = sqrt(r211373);
        double r211375 = r211359 * r211374;
        return r211375;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r211376 = M;
        double r211377 = D;
        double r211378 = r211376 * r211377;
        double r211379 = 2.0;
        double r211380 = d;
        double r211381 = r211379 * r211380;
        double r211382 = r211378 / r211381;
        double r211383 = pow(r211382, r211379);
        double r211384 = 1.855277338734028e-289;
        bool r211385 = r211383 <= r211384;
        double r211386 = 1.933159505335491e+291;
        bool r211387 = r211383 <= r211386;
        double r211388 = !r211387;
        bool r211389 = r211385 || r211388;
        double r211390 = 1.0;
        double r211391 = sqrt(r211390);
        double r211392 = w0;
        double r211393 = r211391 * r211392;
        double r211394 = h;
        double r211395 = l;
        double r211396 = r211394 / r211395;
        double r211397 = cbrt(r211396);
        double r211398 = r211397 * r211397;
        double r211399 = r211383 * r211398;
        double r211400 = r211399 * r211397;
        double r211401 = r211390 - r211400;
        double r211402 = sqrt(r211401);
        double r211403 = r211392 * r211402;
        double r211404 = r211389 ? r211393 : r211403;
        return r211404;
}

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) < 1.855277338734028e-289 or 1.933159505335491e+291 < (pow (/ (* M D) (* 2.0 d)) 2.0)

    1. Initial program 18.2

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

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

    if 1.855277338734028e-289 < (pow (/ (* M D) (* 2.0 d)) 2.0) < 1.933159505335491e+291

    1. Initial program 6.0

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt6.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \le 1.855277338734028038380413031509408290214 \cdot 10^{-289} \lor \neg \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \le 1.933159505335491079472504373058255984824 \cdot 10^{291}\right):\\ \;\;\;\;\sqrt{1} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \left(\sqrt[3]{\frac{h}{\ell}} \cdot \sqrt[3]{\frac{h}{\ell}}\right)\right) \cdot \sqrt[3]{\frac{h}{\ell}}}\\ \end{array}\]

Reproduce

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