\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{\left(a \cdot 4\right) \cdot c}{a}}{-\left(\sqrt{\mathsf{fma}\left(-c, a \cdot 4, b \cdot b\right)} + b\right)}double f(double a, double b, double c) {
double r65385 = b;
double r65386 = -r65385;
double r65387 = r65385 * r65385;
double r65388 = 4.0;
double r65389 = a;
double r65390 = r65388 * r65389;
double r65391 = c;
double r65392 = r65390 * r65391;
double r65393 = r65387 - r65392;
double r65394 = sqrt(r65393);
double r65395 = r65386 + r65394;
double r65396 = 2.0;
double r65397 = r65396 * r65389;
double r65398 = r65395 / r65397;
return r65398;
}
double f(double a, double b, double c) {
double r65399 = 1.0;
double r65400 = 2.0;
double r65401 = r65399 / r65400;
double r65402 = a;
double r65403 = 4.0;
double r65404 = r65402 * r65403;
double r65405 = c;
double r65406 = r65404 * r65405;
double r65407 = r65406 / r65402;
double r65408 = -r65405;
double r65409 = b;
double r65410 = r65409 * r65409;
double r65411 = fma(r65408, r65404, r65410);
double r65412 = sqrt(r65411);
double r65413 = r65412 + r65409;
double r65414 = -r65413;
double r65415 = r65407 / r65414;
double r65416 = r65401 * r65415;
return r65416;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 43.9
rmApplied flip-+43.9
Simplified0.4
Simplified0.4
rmApplied clear-num0.5
Simplified0.3
rmApplied associate-/r/0.2
Final simplification0.2
herbie shell --seed 2019196 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))