\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{\frac{1}{\frac{{b}^{4} + \left(\left(4 \cdot a\right) \cdot c\right) \cdot \left(\left(4 \cdot a\right) \cdot c + {b}^{2}\right)}{{b}^{6} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}}}}}{2 \cdot a}double f(double a, double b, double c) {
double r41458 = b;
double r41459 = -r41458;
double r41460 = r41458 * r41458;
double r41461 = 4.0;
double r41462 = a;
double r41463 = r41461 * r41462;
double r41464 = c;
double r41465 = r41463 * r41464;
double r41466 = r41460 - r41465;
double r41467 = sqrt(r41466);
double r41468 = r41459 + r41467;
double r41469 = 2.0;
double r41470 = r41469 * r41462;
double r41471 = r41468 / r41470;
return r41471;
}
double f(double a, double b, double c) {
double r41472 = 0.0;
double r41473 = 4.0;
double r41474 = a;
double r41475 = c;
double r41476 = r41474 * r41475;
double r41477 = r41473 * r41476;
double r41478 = r41472 + r41477;
double r41479 = b;
double r41480 = -r41479;
double r41481 = 1.0;
double r41482 = 4.0;
double r41483 = pow(r41479, r41482);
double r41484 = r41473 * r41474;
double r41485 = r41484 * r41475;
double r41486 = 2.0;
double r41487 = pow(r41479, r41486);
double r41488 = r41485 + r41487;
double r41489 = r41485 * r41488;
double r41490 = r41483 + r41489;
double r41491 = 6.0;
double r41492 = pow(r41479, r41491);
double r41493 = 3.0;
double r41494 = pow(r41485, r41493);
double r41495 = r41492 - r41494;
double r41496 = r41490 / r41495;
double r41497 = r41481 / r41496;
double r41498 = sqrt(r41497);
double r41499 = r41480 - r41498;
double r41500 = r41478 / r41499;
double r41501 = 2.0;
double r41502 = r41501 * r41474;
double r41503 = r41500 / r41502;
return r41503;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.2
rmApplied flip-+28.2
Simplified0.4
rmApplied flip3--0.5
Simplified0.5
Simplified0.5
rmApplied clear-num0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019362
(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)))