\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{\frac{{b}^{4} - \left(4 \cdot \left(a \cdot c\right)\right) \cdot \left(4 \cdot \left(a \cdot c\right)\right)}{b \cdot b + \left(4 \cdot a\right) \cdot c}}\right)}double f(double a, double b, double c) {
double r33654 = b;
double r33655 = -r33654;
double r33656 = r33654 * r33654;
double r33657 = 4.0;
double r33658 = a;
double r33659 = r33657 * r33658;
double r33660 = c;
double r33661 = r33659 * r33660;
double r33662 = r33656 - r33661;
double r33663 = sqrt(r33662);
double r33664 = r33655 + r33663;
double r33665 = 2.0;
double r33666 = r33665 * r33658;
double r33667 = r33664 / r33666;
return r33667;
}
double f(double a, double b, double c) {
double r33668 = 0.0;
double r33669 = 4.0;
double r33670 = a;
double r33671 = c;
double r33672 = r33670 * r33671;
double r33673 = r33669 * r33672;
double r33674 = r33668 + r33673;
double r33675 = 2.0;
double r33676 = r33675 * r33670;
double r33677 = b;
double r33678 = -r33677;
double r33679 = 4.0;
double r33680 = pow(r33677, r33679);
double r33681 = r33673 * r33673;
double r33682 = r33680 - r33681;
double r33683 = r33677 * r33677;
double r33684 = r33669 * r33670;
double r33685 = r33684 * r33671;
double r33686 = r33683 + r33685;
double r33687 = r33682 / r33686;
double r33688 = sqrt(r33687);
double r33689 = r33678 - r33688;
double r33690 = r33676 * r33689;
double r33691 = r33674 / r33690;
return r33691;
}



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.5
Applied associate-/l*0.5
Simplified0.4
rmApplied flip--0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019353
(FPCore (a b c)
:name "Quadratic roots, wide range"
:precision binary64
:pre (and (< 4.9303800000000003e-32 a 2.02824e+31) (< 4.9303800000000003e-32 b 2.02824e+31) (< 4.9303800000000003e-32 c 2.02824e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))