\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\frac{1}{2} \cdot \frac{4 \cdot \left(a \cdot c\right)}{a \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 r29627 = b;
double r29628 = -r29627;
double r29629 = r29627 * r29627;
double r29630 = 4.0;
double r29631 = a;
double r29632 = r29630 * r29631;
double r29633 = c;
double r29634 = r29632 * r29633;
double r29635 = r29629 - r29634;
double r29636 = sqrt(r29635);
double r29637 = r29628 + r29636;
double r29638 = 2.0;
double r29639 = r29638 * r29631;
double r29640 = r29637 / r29639;
return r29640;
}
double f(double a, double b, double c) {
double r29641 = 1.0;
double r29642 = 2.0;
double r29643 = r29641 / r29642;
double r29644 = 4.0;
double r29645 = a;
double r29646 = c;
double r29647 = r29645 * r29646;
double r29648 = r29644 * r29647;
double r29649 = b;
double r29650 = -r29649;
double r29651 = r29649 * r29649;
double r29652 = r29644 * r29645;
double r29653 = r29652 * r29646;
double r29654 = r29651 - r29653;
double r29655 = sqrt(r29654);
double r29656 = r29650 - r29655;
double r29657 = r29645 * r29656;
double r29658 = r29648 / r29657;
double r29659 = r29643 * r29658;
return r29659;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied times-frac0.5
Simplified0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020034
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))