\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 434.5586936141062892602349165827035903931:\\
\;\;\;\;\frac{\frac{b \cdot b - \mathsf{fma}\left(b, b, 4 \cdot \left(a \cdot c\right)\right)}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r26691 = b;
double r26692 = -r26691;
double r26693 = r26691 * r26691;
double r26694 = 4.0;
double r26695 = a;
double r26696 = r26694 * r26695;
double r26697 = c;
double r26698 = r26696 * r26697;
double r26699 = r26693 - r26698;
double r26700 = sqrt(r26699);
double r26701 = r26692 + r26700;
double r26702 = 2.0;
double r26703 = r26702 * r26695;
double r26704 = r26701 / r26703;
return r26704;
}
double f(double a, double b, double c) {
double r26705 = b;
double r26706 = 434.5586936141063;
bool r26707 = r26705 <= r26706;
double r26708 = r26705 * r26705;
double r26709 = 4.0;
double r26710 = a;
double r26711 = c;
double r26712 = r26710 * r26711;
double r26713 = r26709 * r26712;
double r26714 = fma(r26705, r26705, r26713);
double r26715 = r26708 - r26714;
double r26716 = r26709 * r26710;
double r26717 = r26716 * r26711;
double r26718 = r26708 - r26717;
double r26719 = sqrt(r26718);
double r26720 = r26719 + r26705;
double r26721 = r26715 / r26720;
double r26722 = 2.0;
double r26723 = r26722 * r26710;
double r26724 = r26721 / r26723;
double r26725 = -1.0;
double r26726 = r26711 / r26705;
double r26727 = r26725 * r26726;
double r26728 = r26707 ? r26724 : r26727;
return r26728;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 434.5586936141063Initial program 16.4
Simplified16.4
rmApplied flip--16.4
Simplified15.6
if 434.5586936141063 < b Initial program 35.0
Simplified35.0
Taylor expanded around inf 17.3
Final simplification16.7
herbie shell --seed 2019323 +o rules:numerics
(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)))