\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{c}{b} \cdot -2}{2}double f(double a, double b, double c) {
double r836341 = b;
double r836342 = -r836341;
double r836343 = r836341 * r836341;
double r836344 = 4.0;
double r836345 = a;
double r836346 = r836344 * r836345;
double r836347 = c;
double r836348 = r836346 * r836347;
double r836349 = r836343 - r836348;
double r836350 = sqrt(r836349);
double r836351 = r836342 + r836350;
double r836352 = 2.0;
double r836353 = r836352 * r836345;
double r836354 = r836351 / r836353;
return r836354;
}
double f(double __attribute__((unused)) a, double b, double c) {
double r836355 = c;
double r836356 = b;
double r836357 = r836355 / r836356;
double r836358 = -2.0;
double r836359 = r836357 * r836358;
double r836360 = 2.0;
double r836361 = r836359 / r836360;
return r836361;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.3
Simplified52.3
Taylor expanded around inf 6.4
Final simplification6.4
herbie shell --seed 2019169
(FPCore (a b c)
:name "Quadratic roots, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))