\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{\frac{c \cdot 4}{1}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}double f(double a, double b, double c) {
double r34313 = b;
double r34314 = -r34313;
double r34315 = r34313 * r34313;
double r34316 = 4.0;
double r34317 = a;
double r34318 = r34316 * r34317;
double r34319 = c;
double r34320 = r34318 * r34319;
double r34321 = r34315 - r34320;
double r34322 = sqrt(r34321);
double r34323 = r34314 + r34322;
double r34324 = 2.0;
double r34325 = r34324 * r34317;
double r34326 = r34323 / r34325;
return r34326;
}
double f(double a, double b, double c) {
double r34327 = 1.0;
double r34328 = 2.0;
double r34329 = r34327 / r34328;
double r34330 = c;
double r34331 = 4.0;
double r34332 = r34330 * r34331;
double r34333 = r34332 / r34327;
double r34334 = b;
double r34335 = -r34334;
double r34336 = r34334 * r34334;
double r34337 = a;
double r34338 = r34331 * r34337;
double r34339 = r34338 * r34330;
double r34340 = r34336 - r34339;
double r34341 = sqrt(r34340);
double r34342 = r34335 - r34341;
double r34343 = r34333 / r34342;
double r34344 = r34329 * r34343;
return r34344;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 44.3
rmApplied flip-+44.3
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
Simplified0.2
Final simplification0.2
herbie shell --seed 2020065 +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)))