Average Error: 14.0 → 8.5
Time: 2.4m
Precision: 64
\[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
\[w0 \cdot \sqrt{1 - \frac{M \cdot D}{2 \cdot d} \cdot \left(h \cdot \left(\frac{1}{\ell} \cdot \left(\frac{1}{2 \cdot d} \cdot \left(M \cdot D\right)\right)\right)\right)}\]
double f(double w0, double M, double D, double h, double l, double d) {
        double r30047913 = w0;
        double r30047914 = 1.0;
        double r30047915 = M;
        double r30047916 = D;
        double r30047917 = r30047915 * r30047916;
        double r30047918 = 2.0;
        double r30047919 = d;
        double r30047920 = r30047918 * r30047919;
        double r30047921 = r30047917 / r30047920;
        double r30047922 = pow(r30047921, r30047918);
        double r30047923 = h;
        double r30047924 = l;
        double r30047925 = r30047923 / r30047924;
        double r30047926 = r30047922 * r30047925;
        double r30047927 = r30047914 - r30047926;
        double r30047928 = sqrt(r30047927);
        double r30047929 = r30047913 * r30047928;
        return r30047929;
}

double f(double w0, double M, double D, double h, double l, double d) {
        double r30047930 = w0;
        double r30047931 = 1.0;
        double r30047932 = M;
        double r30047933 = D;
        double r30047934 = r30047932 * r30047933;
        double r30047935 = 2.0;
        double r30047936 = d;
        double r30047937 = r30047935 * r30047936;
        double r30047938 = r30047934 / r30047937;
        double r30047939 = h;
        double r30047940 = l;
        double r30047941 = r30047931 / r30047940;
        double r30047942 = r30047931 / r30047937;
        double r30047943 = r30047942 * r30047934;
        double r30047944 = r30047941 * r30047943;
        double r30047945 = r30047939 * r30047944;
        double r30047946 = r30047938 * r30047945;
        double r30047947 = r30047931 - r30047946;
        double r30047948 = sqrt(r30047947);
        double r30047949 = r30047930 * r30047948;
        return r30047949;
}

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

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

Derivation

  1. Initial program 14.0

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

    \[\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-inv12.5

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

    \[\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. Using strategy rm
  7. Applied div-inv8.5

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

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

Reproduce

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