\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 91.36334998724752:\\
\;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(b, b, \left(c \cdot \left(-4 \cdot a\right)\right)\right) - b \cdot b}{b + \sqrt{\mathsf{fma}\left(b, b, \left(c \cdot \left(-4 \cdot a\right)\right)\right)}}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1309637 = b;
double r1309638 = -r1309637;
double r1309639 = r1309637 * r1309637;
double r1309640 = 4.0;
double r1309641 = a;
double r1309642 = r1309640 * r1309641;
double r1309643 = c;
double r1309644 = r1309642 * r1309643;
double r1309645 = r1309639 - r1309644;
double r1309646 = sqrt(r1309645);
double r1309647 = r1309638 + r1309646;
double r1309648 = 2.0;
double r1309649 = r1309648 * r1309641;
double r1309650 = r1309647 / r1309649;
return r1309650;
}
double f(double a, double b, double c) {
double r1309651 = b;
double r1309652 = 91.36334998724752;
bool r1309653 = r1309651 <= r1309652;
double r1309654 = c;
double r1309655 = -4.0;
double r1309656 = a;
double r1309657 = r1309655 * r1309656;
double r1309658 = r1309654 * r1309657;
double r1309659 = fma(r1309651, r1309651, r1309658);
double r1309660 = r1309651 * r1309651;
double r1309661 = r1309659 - r1309660;
double r1309662 = sqrt(r1309659);
double r1309663 = r1309651 + r1309662;
double r1309664 = r1309661 / r1309663;
double r1309665 = 2.0;
double r1309666 = r1309664 / r1309665;
double r1309667 = r1309666 / r1309656;
double r1309668 = -r1309654;
double r1309669 = r1309668 / r1309651;
double r1309670 = r1309653 ? r1309667 : r1309669;
return r1309670;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 91.36334998724752Initial program 15.2
Simplified15.2
rmApplied flip--15.4
Simplified14.5
if 91.36334998724752 < b Initial program 34.2
Simplified34.1
Taylor expanded around inf 17.9
rmApplied *-un-lft-identity17.9
Applied times-frac17.9
Applied associate-/l*17.9
Taylor expanded around inf 17.8
Simplified17.8
Final simplification16.8
herbie shell --seed 2019128 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
: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)))