Average Error: 14.7 → 0.0
Time: 21.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|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 r55187 = a;
        double r55188 = r55187 * r55187;
        double r55189 = b;
        double r55190 = r55189 * r55189;
        double r55191 = r55188 - r55190;
        double r55192 = r55191 / r55188;
        double r55193 = fabs(r55192);
        double r55194 = sqrt(r55193);
        return r55194;
}

double f(double a, double b) {
        double r55195 = 1.0;
        double r55196 = b;
        double r55197 = a;
        double r55198 = r55196 / r55197;
        double r55199 = r55196 * r55198;
        double r55200 = r55199 / r55197;
        double r55201 = r55195 - r55200;
        double r55202 = fabs(r55201);
        double r55203 = sqrt(r55202);
        return r55203;
}

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

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

    \[\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. Final simplification0.0

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

Reproduce

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