Average Error: 13.4 → 7.9
Time: 2.3m
Precision: 64
\[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
\[\sqrt{1 - \left(\left(\frac{M \cdot D}{2 \cdot d} \cdot \frac{1}{\ell}\right) \cdot h\right) \cdot \frac{M \cdot D}{2 \cdot d}} \cdot w0\]
w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}
\sqrt{1 - \left(\left(\frac{M \cdot D}{2 \cdot d} \cdot \frac{1}{\ell}\right) \cdot h\right) \cdot \frac{M \cdot D}{2 \cdot d}} \cdot w0
double f(double w0, double M, double D, double h, double l, double d) {
        double r36803667 = w0;
        double r36803668 = 1.0;
        double r36803669 = M;
        double r36803670 = D;
        double r36803671 = r36803669 * r36803670;
        double r36803672 = 2.0;
        double r36803673 = d;
        double r36803674 = r36803672 * r36803673;
        double r36803675 = r36803671 / r36803674;
        double r36803676 = pow(r36803675, r36803672);
        double r36803677 = h;
        double r36803678 = l;
        double r36803679 = r36803677 / r36803678;
        double r36803680 = r36803676 * r36803679;
        double r36803681 = r36803668 - r36803680;
        double r36803682 = sqrt(r36803681);
        double r36803683 = r36803667 * r36803682;
        return r36803683;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r36803684 = 1.0;
        double r36803685 = M;
        double r36803686 = D;
        double r36803687 = r36803685 * r36803686;
        double r36803688 = 2.0;
        double r36803689 = d;
        double r36803690 = r36803688 * r36803689;
        double r36803691 = r36803687 / r36803690;
        double r36803692 = l;
        double r36803693 = r36803684 / r36803692;
        double r36803694 = r36803691 * r36803693;
        double r36803695 = h;
        double r36803696 = r36803694 * r36803695;
        double r36803697 = r36803696 * r36803691;
        double r36803698 = r36803684 - r36803697;
        double r36803699 = sqrt(r36803698);
        double r36803700 = w0;
        double r36803701 = r36803699 * r36803700;
        return r36803701;
}

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. Initial program 13.4

    \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
  2. Simplified11.9

    \[\leadsto \color{blue}{\sqrt{1 - \left(\frac{h}{\ell} \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot \frac{M \cdot D}{2 \cdot d}} \cdot w0}\]
  3. Using strategy rm
  4. Applied div-inv11.9

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

    \[\leadsto \sqrt{1 - \color{blue}{\left(h \cdot \left(\frac{1}{\ell} \cdot \frac{M \cdot D}{2 \cdot d}\right)\right)} \cdot \frac{M \cdot D}{2 \cdot d}} \cdot w0\]
  6. Final simplification7.9

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

Reproduce

herbie shell --seed 2019107 +o rules:numerics
(FPCore (w0 M D h l d)
  :name "Henrywood and Agarwal, Equation (9a)"
  (* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))