\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{4 \cdot \left(a \cdot c\right)}{a \cdot \left(\left(-b\right) - \sqrt{\frac{{b}^{4} - \left(4 \cdot \left(a \cdot c\right)\right) \cdot \left(4 \cdot \left(a \cdot c\right)\right)}{\mathsf{fma}\left(b, b, \left(4 \cdot a\right) \cdot c\right)}}\right)}double f(double a, double b, double c) {
double r35440 = b;
double r35441 = -r35440;
double r35442 = r35440 * r35440;
double r35443 = 4.0;
double r35444 = a;
double r35445 = r35443 * r35444;
double r35446 = c;
double r35447 = r35445 * r35446;
double r35448 = r35442 - r35447;
double r35449 = sqrt(r35448);
double r35450 = r35441 + r35449;
double r35451 = 2.0;
double r35452 = r35451 * r35444;
double r35453 = r35450 / r35452;
return r35453;
}
double f(double a, double b, double c) {
double r35454 = 1.0;
double r35455 = 2.0;
double r35456 = r35454 / r35455;
double r35457 = 4.0;
double r35458 = a;
double r35459 = c;
double r35460 = r35458 * r35459;
double r35461 = r35457 * r35460;
double r35462 = b;
double r35463 = -r35462;
double r35464 = 4.0;
double r35465 = pow(r35462, r35464);
double r35466 = r35461 * r35461;
double r35467 = r35465 - r35466;
double r35468 = r35457 * r35458;
double r35469 = r35468 * r35459;
double r35470 = fma(r35462, r35462, r35469);
double r35471 = r35467 / r35470;
double r35472 = sqrt(r35471);
double r35473 = r35463 - r35472;
double r35474 = r35458 * r35473;
double r35475 = r35461 / r35474;
double r35476 = r35456 * r35475;
return r35476;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 43.6
rmApplied flip-+43.6
Simplified0.4
rmApplied flip--0.4
Simplified0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020035 +o rules:numerics
(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)))