\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{c \cdot \left(4 \cdot a\right)}{\left(a \cdot 2\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r42320 = b;
double r42321 = -r42320;
double r42322 = r42320 * r42320;
double r42323 = 4.0;
double r42324 = a;
double r42325 = r42323 * r42324;
double r42326 = c;
double r42327 = r42325 * r42326;
double r42328 = r42322 - r42327;
double r42329 = sqrt(r42328);
double r42330 = r42321 + r42329;
double r42331 = 2.0;
double r42332 = r42331 * r42324;
double r42333 = r42330 / r42332;
return r42333;
}
double f(double a, double b, double c) {
double r42334 = c;
double r42335 = 4.0;
double r42336 = a;
double r42337 = r42335 * r42336;
double r42338 = r42334 * r42337;
double r42339 = 2.0;
double r42340 = r42336 * r42339;
double r42341 = b;
double r42342 = -r42341;
double r42343 = r42341 * r42341;
double r42344 = r42337 * r42334;
double r42345 = r42343 - r42344;
double r42346 = sqrt(r42345);
double r42347 = r42342 - r42346;
double r42348 = r42340 * r42347;
double r42349 = r42338 / r42348;
return r42349;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.1
rmApplied flip-+28.1
Simplified0.5
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019235
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))