Average Error: 14.0 → 0.0
Time: 30.2s
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|1 - \frac{b \cdot \frac{b}{a}}{a}\right|}\]
\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}
\sqrt{\left|1 - \frac{b \cdot \frac{b}{a}}{a}\right|}
double f(double a, double b) {
        double r54007 = a;
        double r54008 = r54007 * r54007;
        double r54009 = b;
        double r54010 = r54009 * r54009;
        double r54011 = r54008 - r54010;
        double r54012 = r54011 / r54008;
        double r54013 = fabs(r54012);
        double r54014 = sqrt(r54013);
        return r54014;
}

double f(double a, double b) {
        double r54015 = 1.0;
        double r54016 = b;
        double r54017 = a;
        double r54018 = r54016 / r54017;
        double r54019 = r54016 * r54018;
        double r54020 = r54019 / r54017;
        double r54021 = r54015 - r54020;
        double r54022 = fabs(r54021);
        double r54023 = sqrt(r54022);
        return r54023;
}

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

    \[\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}\]
  2. Simplified14.0

    \[\leadsto \color{blue}{\sqrt{\left|1 - \frac{b \cdot b}{a \cdot a}\right|}}\]
  3. Using strategy rm
  4. Applied associate-/r*0.7

    \[\leadsto \sqrt{\left|1 - \color{blue}{\frac{\frac{b \cdot b}{a}}{a}}\right|}\]
  5. Simplified0.0

    \[\leadsto \sqrt{\left|1 - \frac{\color{blue}{b \cdot \frac{b}{a}}}{a}\right|}\]
  6. Using strategy rm
  7. Applied *-un-lft-identity0.0

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

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

Reproduce

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