\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 r35609 = b;
double r35610 = -r35609;
double r35611 = r35609 * r35609;
double r35612 = 4.0;
double r35613 = a;
double r35614 = r35612 * r35613;
double r35615 = c;
double r35616 = r35614 * r35615;
double r35617 = r35611 - r35616;
double r35618 = sqrt(r35617);
double r35619 = r35610 + r35618;
double r35620 = 2.0;
double r35621 = r35620 * r35613;
double r35622 = r35619 / r35621;
return r35622;
}
double f(double a, double b, double c) {
double r35623 = 0.0;
double r35624 = 4.0;
double r35625 = a;
double r35626 = c;
double r35627 = r35625 * r35626;
double r35628 = r35624 * r35627;
double r35629 = r35623 + r35628;
double r35630 = 2.0;
double r35631 = r35630 * r35625;
double r35632 = b;
double r35633 = -r35632;
double r35634 = 4.0;
double r35635 = pow(r35632, r35634);
double r35636 = r35628 * r35628;
double r35637 = r35635 - r35636;
double r35638 = r35632 * r35632;
double r35639 = r35624 * r35625;
double r35640 = r35639 * r35626;
double r35641 = r35638 + r35640;
double r35642 = r35637 / r35641;
double r35643 = sqrt(r35642);
double r35644 = r35633 - r35643;
double r35645 = r35631 * r35644;
double r35646 = r35629 / r35645;
return r35646;
}



Bits error versus a



Bits error versus b



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