\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(2 \cdot a\right) \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 r31637 = b;
double r31638 = -r31637;
double r31639 = r31637 * r31637;
double r31640 = 4.0;
double r31641 = a;
double r31642 = r31640 * r31641;
double r31643 = c;
double r31644 = r31642 * r31643;
double r31645 = r31639 - r31644;
double r31646 = sqrt(r31645);
double r31647 = r31638 + r31646;
double r31648 = 2.0;
double r31649 = r31648 * r31641;
double r31650 = r31647 / r31649;
return r31650;
}
double f(double a, double b, double c) {
double r31651 = 0.0;
double r31652 = 4.0;
double r31653 = a;
double r31654 = c;
double r31655 = r31653 * r31654;
double r31656 = r31652 * r31655;
double r31657 = r31651 + r31656;
double r31658 = 2.0;
double r31659 = r31658 * r31653;
double r31660 = b;
double r31661 = -r31660;
double r31662 = r31660 * r31660;
double r31663 = r31652 * r31653;
double r31664 = r31663 * r31654;
double r31665 = r31662 - r31664;
double r31666 = sqrt(r31665);
double r31667 = r31661 - r31666;
double r31668 = r31659 * r31667;
double r31669 = r31657 / r31668;
return r31669;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 43.8
rmApplied flip-+43.8
Simplified0.4
rmApplied div-inv0.5
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2020034
(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)))