\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{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r38442 = b;
double r38443 = -r38442;
double r38444 = r38442 * r38442;
double r38445 = 4.0;
double r38446 = a;
double r38447 = r38445 * r38446;
double r38448 = c;
double r38449 = r38447 * r38448;
double r38450 = r38444 - r38449;
double r38451 = sqrt(r38450);
double r38452 = r38443 + r38451;
double r38453 = 2.0;
double r38454 = r38453 * r38446;
double r38455 = r38452 / r38454;
return r38455;
}
double f(double a, double b, double c) {
double r38456 = 1.0;
double r38457 = 2.0;
double r38458 = 4.0;
double r38459 = r38457 / r38458;
double r38460 = r38456 / r38459;
double r38461 = c;
double r38462 = b;
double r38463 = -r38462;
double r38464 = r38462 * r38462;
double r38465 = a;
double r38466 = r38458 * r38465;
double r38467 = r38466 * r38461;
double r38468 = r38464 - r38467;
double r38469 = sqrt(r38468);
double r38470 = r38463 - r38469;
double r38471 = r38461 / r38470;
double r38472 = r38460 * r38471;
return r38472;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.4
rmApplied flip-+28.5
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.5
rmApplied clear-num0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied times-frac0.5
Simplified0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2019346
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))