Average Error: 14.2 → 0.0
Time: 17.7s
Precision: 64
\[0.0 \le b \le a \le 1\]
\[\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}\]
\[\sqrt{\left|\left(1 + \frac{b}{a}\right) \cdot \frac{a - b}{a}\right|}\]
\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}
\sqrt{\left|\left(1 + \frac{b}{a}\right) \cdot \frac{a - b}{a}\right|}
double f(double a, double b) {
        double r48025 = a;
        double r48026 = r48025 * r48025;
        double r48027 = b;
        double r48028 = r48027 * r48027;
        double r48029 = r48026 - r48028;
        double r48030 = r48029 / r48026;
        double r48031 = fabs(r48030);
        double r48032 = sqrt(r48031);
        return r48032;
}

double f(double a, double b) {
        double r48033 = 1.0;
        double r48034 = b;
        double r48035 = a;
        double r48036 = r48034 / r48035;
        double r48037 = r48033 + r48036;
        double r48038 = r48035 - r48034;
        double r48039 = r48038 / r48035;
        double r48040 = r48037 * r48039;
        double r48041 = fabs(r48040);
        double r48042 = sqrt(r48041);
        return r48042;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 14.2

    \[\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}\]
  2. Using strategy rm
  3. Applied difference-of-squares14.2

    \[\leadsto \sqrt{\left|\frac{\color{blue}{\left(a + b\right) \cdot \left(a - b\right)}}{a \cdot a}\right|}\]
  4. Applied times-frac0.0

    \[\leadsto \sqrt{\left|\color{blue}{\frac{a + b}{a} \cdot \frac{a - b}{a}}\right|}\]
  5. Taylor expanded around 0 0.0

    \[\leadsto \sqrt{\left|\color{blue}{\left(1 + \frac{b}{a}\right)} \cdot \frac{a - b}{a}\right|}\]
  6. Final simplification0.0

    \[\leadsto \sqrt{\left|\left(1 + \frac{b}{a}\right) \cdot \frac{a - b}{a}\right|}\]

Reproduce

herbie shell --seed 2019323 
(FPCore (a b)
  :name "Eccentricity of an ellipse"
  :precision binary64
  :pre (<= 0.0 b a 1)
  (sqrt (fabs (/ (- (* a a) (* b b)) (* a a)))))