Average Error: 13.9 → 0.0
Time: 18.8s
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 r63953 = a;
        double r63954 = r63953 * r63953;
        double r63955 = b;
        double r63956 = r63955 * r63955;
        double r63957 = r63954 - r63956;
        double r63958 = r63957 / r63954;
        double r63959 = fabs(r63958);
        double r63960 = sqrt(r63959);
        return r63960;
}

double f(double a, double b) {
        double r63961 = 1.0;
        double r63962 = b;
        double r63963 = a;
        double r63964 = r63962 / r63963;
        double r63965 = r63964 * r63964;
        double r63966 = exp(r63965);
        double r63967 = log(r63966);
        double r63968 = r63961 - r63967;
        double r63969 = fabs(r63968);
        double r63970 = sqrt(r63969);
        return r63970;
}

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 13.9

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

    \[\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 2019199 +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)))))