Average Error: 44.1 → 11.8
Time: 17.9s
Precision: 64
\[1.1102230246251565404236316680908203125 \cdot 10^{-16} \lt a \lt 9007199254740992 \land 1.1102230246251565404236316680908203125 \cdot 10^{-16} \lt b \lt 9007199254740992 \land 1.1102230246251565404236316680908203125 \cdot 10^{-16} \lt c \lt 9007199254740992\]
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\frac{c}{b} \cdot -1\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\frac{c}{b} \cdot -1
double f(double a, double b, double c) {
        double r1823267 = b;
        double r1823268 = -r1823267;
        double r1823269 = r1823267 * r1823267;
        double r1823270 = 4.0;
        double r1823271 = a;
        double r1823272 = r1823270 * r1823271;
        double r1823273 = c;
        double r1823274 = r1823272 * r1823273;
        double r1823275 = r1823269 - r1823274;
        double r1823276 = sqrt(r1823275);
        double r1823277 = r1823268 + r1823276;
        double r1823278 = 2.0;
        double r1823279 = r1823278 * r1823271;
        double r1823280 = r1823277 / r1823279;
        return r1823280;
}

double f(double __attribute__((unused)) a, double b, double c) {
        double r1823281 = c;
        double r1823282 = b;
        double r1823283 = r1823281 / r1823282;
        double r1823284 = -1.0;
        double r1823285 = r1823283 * r1823284;
        return r1823285;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 44.1

    \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
  2. Simplified44.1

    \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - b}{2}}{a}}\]
  3. Taylor expanded around inf 11.8

    \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
  4. Final simplification11.8

    \[\leadsto \frac{c}{b} \cdot -1\]

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, medium range"
  :pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))