Average Error: 29.6 → 7.5
Time: 12.9s
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 r1589770 = a;
        double r1589771 = r1589770 * r1589770;
        double r1589772 = b;
        double r1589773 = r1589772 * r1589772;
        double r1589774 = r1589771 - r1589773;
        double r1589775 = r1589774 / r1589771;
        double r1589776 = fabs(r1589775);
        double r1589777 = sqrt(r1589776);
        return r1589777;
}

double f(double a, double b) {
        double r1589778 = 1.0;
        double r1589779 = b;
        double r1589780 = a;
        double r1589781 = r1589779 / r1589780;
        double r1589782 = r1589781 * r1589779;
        double r1589783 = r1589782 / r1589780;
        double r1589784 = r1589778 - r1589783;
        double r1589785 = fabs(r1589784);
        double r1589786 = sqrt(r1589785);
        return r1589786;
}

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-*l/7.5

    \[\leadsto \sqrt{\left|1 - \color{blue}{\frac{b \cdot \frac{b}{a}}{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)))))