Average Error: 14.6 → 0.0
Time: 9.9s
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 - \log \left(e^{\frac{b}{a} \cdot \frac{b}{a}}\right)\right|}\]
\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}
\sqrt{\left|1 - \log \left(e^{\frac{b}{a} \cdot \frac{b}{a}}\right)\right|}
double f(double a, double b) {
        double r47552 = a;
        double r47553 = r47552 * r47552;
        double r47554 = b;
        double r47555 = r47554 * r47554;
        double r47556 = r47553 - r47555;
        double r47557 = r47556 / r47553;
        double r47558 = fabs(r47557);
        double r47559 = sqrt(r47558);
        return r47559;
}

double f(double a, double b) {
        double r47560 = 1.0;
        double r47561 = b;
        double r47562 = a;
        double r47563 = r47561 / r47562;
        double r47564 = r47563 * r47563;
        double r47565 = exp(r47564);
        double r47566 = log(r47565);
        double r47567 = r47560 - r47566;
        double r47568 = fabs(r47567);
        double r47569 = sqrt(r47568);
        return r47569;
}

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

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

    \[\leadsto \color{blue}{\sqrt{\left|1 - \frac{b \cdot b}{a \cdot a}\right|}}\]
  3. Using strategy rm
  4. Applied times-frac0.0

    \[\leadsto \sqrt{\left|1 - \color{blue}{\frac{b}{a} \cdot \frac{b}{a}}\right|}\]
  5. Using strategy rm
  6. Applied add-log-exp0.0

    \[\leadsto \sqrt{\left|1 - \color{blue}{\log \left(e^{\frac{b}{a} \cdot \frac{b}{a}}\right)}\right|}\]
  7. Final simplification0.0

    \[\leadsto \sqrt{\left|1 - \log \left(e^{\frac{b}{a} \cdot \frac{b}{a}}\right)\right|}\]

Reproduce

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