\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 c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r55485 = b;
double r55486 = -r55485;
double r55487 = r55485 * r55485;
double r55488 = 4.0;
double r55489 = a;
double r55490 = r55488 * r55489;
double r55491 = c;
double r55492 = r55490 * r55491;
double r55493 = r55487 - r55492;
double r55494 = sqrt(r55493);
double r55495 = r55486 + r55494;
double r55496 = 2.0;
double r55497 = r55496 * r55489;
double r55498 = r55495 / r55497;
return r55498;
}
double f(double a, double b, double c) {
double r55499 = 1.0;
double r55500 = 2.0;
double r55501 = r55499 / r55500;
double r55502 = 4.0;
double r55503 = c;
double r55504 = r55502 * r55503;
double r55505 = b;
double r55506 = -r55505;
double r55507 = r55505 * r55505;
double r55508 = a;
double r55509 = r55502 * r55508;
double r55510 = r55509 * r55503;
double r55511 = r55507 - r55510;
double r55512 = sqrt(r55511);
double r55513 = r55506 - r55512;
double r55514 = r55504 / r55513;
double r55515 = r55501 * r55514;
return r55515;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.6
rmApplied flip-+43.6
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied times-frac0.4
Simplified0.4
Simplified0.4
rmApplied associate-/r*0.2
Taylor expanded around 0 0.2
Final simplification0.2
herbie shell --seed 2019323 +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)))