\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 r44657 = b;
double r44658 = -r44657;
double r44659 = r44657 * r44657;
double r44660 = 4.0;
double r44661 = a;
double r44662 = r44660 * r44661;
double r44663 = c;
double r44664 = r44662 * r44663;
double r44665 = r44659 - r44664;
double r44666 = sqrt(r44665);
double r44667 = r44658 + r44666;
double r44668 = 2.0;
double r44669 = r44668 * r44661;
double r44670 = r44667 / r44669;
return r44670;
}
double f(double a, double b, double c) {
double r44671 = 1.0;
double r44672 = 2.0;
double r44673 = r44671 / r44672;
double r44674 = c;
double r44675 = 4.0;
double r44676 = r44674 * r44675;
double r44677 = r44676 / r44671;
double r44678 = b;
double r44679 = -r44678;
double r44680 = r44678 * r44678;
double r44681 = a;
double r44682 = r44675 * r44681;
double r44683 = r44682 * r44674;
double r44684 = r44680 - r44683;
double r44685 = sqrt(r44684);
double r44686 = r44679 - r44685;
double r44687 = r44677 / r44686;
double r44688 = r44673 * r44687;
return r44688;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.7
rmApplied flip-+43.7
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 2020027 +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)))