\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{c \cdot \left(4 \cdot a\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 r30646 = b;
double r30647 = -r30646;
double r30648 = r30646 * r30646;
double r30649 = 4.0;
double r30650 = a;
double r30651 = r30649 * r30650;
double r30652 = c;
double r30653 = r30651 * r30652;
double r30654 = r30648 - r30653;
double r30655 = sqrt(r30654);
double r30656 = r30647 + r30655;
double r30657 = 2.0;
double r30658 = r30657 * r30650;
double r30659 = r30656 / r30658;
return r30659;
}
double f(double a, double b, double c) {
double r30660 = c;
double r30661 = 4.0;
double r30662 = a;
double r30663 = r30661 * r30662;
double r30664 = r30660 * r30663;
double r30665 = 2.0;
double r30666 = r30665 * r30662;
double r30667 = b;
double r30668 = -r30667;
double r30669 = r30667 * r30667;
double r30670 = r30663 * r30660;
double r30671 = r30669 - r30670;
double r30672 = sqrt(r30671);
double r30673 = r30668 - r30672;
double r30674 = r30666 * r30673;
double r30675 = r30664 / r30674;
return r30675;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 52.4
rmApplied flip-+52.4
Simplified0.4
rmApplied div-inv0.4
Applied associate-/l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019306
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.93038e-32 a 2.02824e31) (< 4.93038e-32 b 2.02824e31) (< 4.93038e-32 c 2.02824e31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))