\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\left(c \cdot a\right) \cdot -2}{\left(\sqrt{\mathsf{fma}\left(b, b, \left(\left(-4 \cdot a\right) \cdot c\right)\right)} + b\right) \cdot a}double f(double a, double b, double c) {
double r7099370 = b;
double r7099371 = -r7099370;
double r7099372 = r7099370 * r7099370;
double r7099373 = 4.0;
double r7099374 = a;
double r7099375 = r7099373 * r7099374;
double r7099376 = c;
double r7099377 = r7099375 * r7099376;
double r7099378 = r7099372 - r7099377;
double r7099379 = sqrt(r7099378);
double r7099380 = r7099371 + r7099379;
double r7099381 = 2.0;
double r7099382 = r7099381 * r7099374;
double r7099383 = r7099380 / r7099382;
return r7099383;
}
double f(double a, double b, double c) {
double r7099384 = c;
double r7099385 = a;
double r7099386 = r7099384 * r7099385;
double r7099387 = -2.0;
double r7099388 = r7099386 * r7099387;
double r7099389 = b;
double r7099390 = -4.0;
double r7099391 = r7099390 * r7099385;
double r7099392 = r7099391 * r7099384;
double r7099393 = fma(r7099389, r7099389, r7099392);
double r7099394 = sqrt(r7099393);
double r7099395 = r7099394 + r7099389;
double r7099396 = r7099395 * r7099385;
double r7099397 = r7099388 / r7099396;
return r7099397;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 28.4
Simplified28.4
rmApplied *-un-lft-identity28.4
Applied div-inv28.4
Applied times-frac28.4
Simplified28.4
Simplified28.4
rmApplied flip--28.5
Applied frac-times28.5
Simplified0.4
rmApplied +-commutative0.4
Final simplification0.4
herbie shell --seed 2019120 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
: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)))