\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{\frac{2}{4} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{c}}double f(double a, double b, double c) {
double r41354 = b;
double r41355 = -r41354;
double r41356 = r41354 * r41354;
double r41357 = 4.0;
double r41358 = a;
double r41359 = r41357 * r41358;
double r41360 = c;
double r41361 = r41359 * r41360;
double r41362 = r41356 - r41361;
double r41363 = sqrt(r41362);
double r41364 = r41355 + r41363;
double r41365 = 2.0;
double r41366 = r41365 * r41358;
double r41367 = r41364 / r41366;
return r41367;
}
double f(double a, double b, double c) {
double r41368 = 1.0;
double r41369 = 2.0;
double r41370 = 4.0;
double r41371 = r41369 / r41370;
double r41372 = b;
double r41373 = -r41372;
double r41374 = r41372 * r41372;
double r41375 = a;
double r41376 = r41370 * r41375;
double r41377 = c;
double r41378 = r41376 * r41377;
double r41379 = r41374 - r41378;
double r41380 = sqrt(r41379);
double r41381 = r41373 - r41380;
double r41382 = r41381 / r41377;
double r41383 = r41371 * r41382;
double r41384 = r41368 / r41383;
return r41384;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
Simplified0.4
rmApplied clear-num0.5
Simplified0.5
rmApplied times-frac0.5
Applied associate-*l*0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2020036
(FPCore (a b c)
:name "Quadratic roots, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))