\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{4 \cdot \left(a \cdot c\right)}{a}}{\left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \left(\left(-\sqrt{1}\right) + \sqrt{1}\right) + \left(-b\right)\right) + \left(-\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt{1}\right)}double f(double a, double b, double c) {
double r44375 = b;
double r44376 = -r44375;
double r44377 = r44375 * r44375;
double r44378 = 4.0;
double r44379 = a;
double r44380 = r44378 * r44379;
double r44381 = c;
double r44382 = r44380 * r44381;
double r44383 = r44377 - r44382;
double r44384 = sqrt(r44383);
double r44385 = r44376 + r44384;
double r44386 = 2.0;
double r44387 = r44386 * r44379;
double r44388 = r44385 / r44387;
return r44388;
}
double f(double a, double b, double c) {
double r44389 = 1.0;
double r44390 = 2.0;
double r44391 = r44389 / r44390;
double r44392 = 4.0;
double r44393 = a;
double r44394 = c;
double r44395 = r44393 * r44394;
double r44396 = r44392 * r44395;
double r44397 = r44396 / r44393;
double r44398 = b;
double r44399 = r44398 * r44398;
double r44400 = r44392 * r44393;
double r44401 = r44400 * r44394;
double r44402 = r44399 - r44401;
double r44403 = sqrt(r44402);
double r44404 = sqrt(r44389);
double r44405 = -r44404;
double r44406 = r44405 + r44404;
double r44407 = r44403 * r44406;
double r44408 = -r44398;
double r44409 = r44407 + r44408;
double r44410 = r44403 * r44404;
double r44411 = -r44410;
double r44412 = r44409 + r44411;
double r44413 = r44397 / r44412;
double r44414 = r44391 * r44413;
return r44414;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.5
rmApplied flip-+28.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied sqrt-prod0.4
Applied add-sqr-sqrt0.5
Applied distribute-lft-neg-in0.5
Applied prod-diff0.5
Simplified0.5
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.3
Final simplification0.3
herbie shell --seed 2020059 +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)))