\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{\frac{1}{1}}{\frac{0.5}{c} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}double f(double a, double b, double c) {
double r40254 = b;
double r40255 = -r40254;
double r40256 = r40254 * r40254;
double r40257 = 4.0;
double r40258 = a;
double r40259 = r40257 * r40258;
double r40260 = c;
double r40261 = r40259 * r40260;
double r40262 = r40256 - r40261;
double r40263 = sqrt(r40262);
double r40264 = r40255 + r40263;
double r40265 = 2.0;
double r40266 = r40265 * r40258;
double r40267 = r40264 / r40266;
return r40267;
}
double f(double a, double b, double c) {
double r40268 = 1.0;
double r40269 = r40268 / r40268;
double r40270 = 0.5;
double r40271 = c;
double r40272 = r40270 / r40271;
double r40273 = b;
double r40274 = -r40273;
double r40275 = r40273 * r40273;
double r40276 = 4.0;
double r40277 = a;
double r40278 = r40276 * r40277;
double r40279 = r40278 * r40271;
double r40280 = r40275 - r40279;
double r40281 = sqrt(r40280);
double r40282 = r40274 - r40281;
double r40283 = r40272 * r40282;
double r40284 = r40269 / r40283;
return r40284;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.8
rmApplied flip-+43.8
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-/l*0.5
Simplified0.5
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2019356 +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)))