Average Error: 29.6 → 7.5
Time: 16.6s
Precision: 64
\[0 \le b \le a \le 1\]
\[\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}\]
\[\sqrt{\left|1 - \frac{\frac{b}{a} \cdot b}{a}\right|}\]
\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}
\sqrt{\left|1 - \frac{\frac{b}{a} \cdot b}{a}\right|}
double f(double a, double b) {
        double r1830226 = a;
        double r1830227 = r1830226 * r1830226;
        double r1830228 = b;
        double r1830229 = r1830228 * r1830228;
        double r1830230 = r1830227 - r1830229;
        double r1830231 = r1830230 / r1830227;
        double r1830232 = fabs(r1830231);
        double r1830233 = sqrt(r1830232);
        return r1830233;
}

double f(double a, double b) {
        double r1830234 = 1.0;
        double r1830235 = b;
        double r1830236 = a;
        double r1830237 = r1830235 / r1830236;
        double r1830238 = r1830237 * r1830235;
        double r1830239 = r1830238 / r1830236;
        double r1830240 = r1830234 - r1830239;
        double r1830241 = fabs(r1830240);
        double r1830242 = sqrt(r1830241);
        return r1830242;
}

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 29.6

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

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

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

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

Reproduce

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