\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{4 \cdot \left(a \cdot c\right)}{2 \cdot a}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r44349 = b;
double r44350 = -r44349;
double r44351 = r44349 * r44349;
double r44352 = 4.0;
double r44353 = a;
double r44354 = r44352 * r44353;
double r44355 = c;
double r44356 = r44354 * r44355;
double r44357 = r44351 - r44356;
double r44358 = sqrt(r44357);
double r44359 = r44350 + r44358;
double r44360 = 2.0;
double r44361 = r44360 * r44353;
double r44362 = r44359 / r44361;
return r44362;
}
double f(double a, double b, double c) {
double r44363 = 4.0;
double r44364 = a;
double r44365 = c;
double r44366 = r44364 * r44365;
double r44367 = r44363 * r44366;
double r44368 = 2.0;
double r44369 = r44368 * r44364;
double r44370 = r44367 / r44369;
double r44371 = b;
double r44372 = -r44371;
double r44373 = r44371 * r44371;
double r44374 = r44363 * r44364;
double r44375 = r44374 * r44365;
double r44376 = r44373 - r44375;
double r44377 = sqrt(r44376);
double r44378 = r44372 - r44377;
double r44379 = r44370 / r44378;
return r44379;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.5
rmApplied div-inv0.5
rmApplied pow10.5
Applied pow10.5
Applied pow-prod-down0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2019344 +o rules:numerics
(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)))