Average Error: 14.1 → 0.0
Time: 4.1s
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|\frac{a + b}{a} \cdot \frac{1}{\frac{a}{a - b}}\right|}\]
\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}
\sqrt{\left|\frac{a + b}{a} \cdot \frac{1}{\frac{a}{a - b}}\right|}
double f(double a, double b) {
        double r65409 = a;
        double r65410 = r65409 * r65409;
        double r65411 = b;
        double r65412 = r65411 * r65411;
        double r65413 = r65410 - r65412;
        double r65414 = r65413 / r65410;
        double r65415 = fabs(r65414);
        double r65416 = sqrt(r65415);
        return r65416;
}

double f(double a, double b) {
        double r65417 = a;
        double r65418 = b;
        double r65419 = r65417 + r65418;
        double r65420 = r65419 / r65417;
        double r65421 = 1.0;
        double r65422 = r65417 - r65418;
        double r65423 = r65417 / r65422;
        double r65424 = r65421 / r65423;
        double r65425 = r65420 * r65424;
        double r65426 = fabs(r65425);
        double r65427 = sqrt(r65426);
        return r65427;
}

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.1

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

    \[\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. Using strategy rm
  6. Applied clear-num0.0

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

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

Reproduce

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