\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{{b}^{4} - \left(4 \cdot \left(a \cdot c\right)\right) \cdot \left(4 \cdot \left(a \cdot c\right)\right)}{b \cdot b + \left(4 \cdot a\right) \cdot c}}}}{2 \cdot a}double f(double a, double b, double c) {
double r36495 = b;
double r36496 = -r36495;
double r36497 = r36495 * r36495;
double r36498 = 4.0;
double r36499 = a;
double r36500 = r36498 * r36499;
double r36501 = c;
double r36502 = r36500 * r36501;
double r36503 = r36497 - r36502;
double r36504 = sqrt(r36503);
double r36505 = r36496 + r36504;
double r36506 = 2.0;
double r36507 = r36506 * r36499;
double r36508 = r36505 / r36507;
return r36508;
}
double f(double a, double b, double c) {
double r36509 = 0.0;
double r36510 = 4.0;
double r36511 = a;
double r36512 = c;
double r36513 = r36511 * r36512;
double r36514 = r36510 * r36513;
double r36515 = r36509 + r36514;
double r36516 = b;
double r36517 = -r36516;
double r36518 = 4.0;
double r36519 = pow(r36516, r36518);
double r36520 = r36514 * r36514;
double r36521 = r36519 - r36520;
double r36522 = r36516 * r36516;
double r36523 = r36510 * r36511;
double r36524 = r36523 * r36512;
double r36525 = r36522 + r36524;
double r36526 = r36521 / r36525;
double r36527 = sqrt(r36526);
double r36528 = r36517 - r36527;
double r36529 = r36515 / r36528;
double r36530 = 2.0;
double r36531 = r36530 * r36511;
double r36532 = r36529 / r36531;
return r36532;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.3
rmApplied flip-+52.3
Simplified0.4
rmApplied flip--0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020060
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))