Average Error: 14.6 → 0.0
Time: 18.9s
Precision: 64
\[0.0 \le b \le a \le 1\]
\[\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}\]
\[\log \left(e^{\sqrt{\left|\frac{a - b \cdot \frac{b}{a}}{a}\right|}}\right)\]
\sqrt{\left|\frac{a \cdot a - b \cdot b}{a \cdot a}\right|}
\log \left(e^{\sqrt{\left|\frac{a - b \cdot \frac{b}{a}}{a}\right|}}\right)
double f(double a, double b) {
        double r75961 = a;
        double r75962 = r75961 * r75961;
        double r75963 = b;
        double r75964 = r75963 * r75963;
        double r75965 = r75962 - r75964;
        double r75966 = r75965 / r75962;
        double r75967 = fabs(r75966);
        double r75968 = sqrt(r75967);
        return r75968;
}

double f(double a, double b) {
        double r75969 = a;
        double r75970 = b;
        double r75971 = r75970 / r75969;
        double r75972 = r75970 * r75971;
        double r75973 = r75969 - r75972;
        double r75974 = r75973 / r75969;
        double r75975 = fabs(r75974);
        double r75976 = sqrt(r75975);
        double r75977 = exp(r75976);
        double r75978 = log(r75977);
        return r75978;
}

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. Using strategy rm
  3. Applied associate-/r*14.9

    \[\leadsto \sqrt{\left|\color{blue}{\frac{\frac{a \cdot a - b \cdot b}{a}}{a}}\right|}\]
  4. Simplified0.0

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

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

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

Reproduce

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