\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 773.6973993836591:\\
\;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(b, b, c \cdot \left(-4 \cdot a\right)\right) - b \cdot b}{b + \sqrt{\mathsf{fma}\left(b, b, c \cdot \left(-4 \cdot a\right)\right)}}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2}{b} \cdot \left(c \cdot \frac{1}{2}\right)\\
\end{array}double f(double a, double b, double c) {
double r1467089 = b;
double r1467090 = -r1467089;
double r1467091 = r1467089 * r1467089;
double r1467092 = 4.0;
double r1467093 = a;
double r1467094 = r1467092 * r1467093;
double r1467095 = c;
double r1467096 = r1467094 * r1467095;
double r1467097 = r1467091 - r1467096;
double r1467098 = sqrt(r1467097);
double r1467099 = r1467090 + r1467098;
double r1467100 = 2.0;
double r1467101 = r1467100 * r1467093;
double r1467102 = r1467099 / r1467101;
return r1467102;
}
double f(double a, double b, double c) {
double r1467103 = b;
double r1467104 = 773.6973993836591;
bool r1467105 = r1467103 <= r1467104;
double r1467106 = c;
double r1467107 = -4.0;
double r1467108 = a;
double r1467109 = r1467107 * r1467108;
double r1467110 = r1467106 * r1467109;
double r1467111 = fma(r1467103, r1467103, r1467110);
double r1467112 = r1467103 * r1467103;
double r1467113 = r1467111 - r1467112;
double r1467114 = sqrt(r1467111);
double r1467115 = r1467103 + r1467114;
double r1467116 = r1467113 / r1467115;
double r1467117 = 2.0;
double r1467118 = r1467116 / r1467117;
double r1467119 = r1467118 / r1467108;
double r1467120 = -2.0;
double r1467121 = r1467120 / r1467103;
double r1467122 = 0.5;
double r1467123 = r1467106 * r1467122;
double r1467124 = r1467121 * r1467123;
double r1467125 = r1467105 ? r1467119 : r1467124;
return r1467125;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 773.6973993836591Initial program 17.2
Simplified17.1
rmApplied flip--17.3
Simplified16.5
if 773.6973993836591 < b Initial program 35.8
Simplified35.8
Taylor expanded around inf 16.7
rmApplied *-un-lft-identity16.7
Applied times-frac16.7
Applied associate-/l*16.7
Simplified16.6
rmApplied associate-/r/16.7
Applied *-un-lft-identity16.7
Applied *-un-lft-identity16.7
Applied times-frac16.7
Applied times-frac16.7
Simplified16.7
Simplified16.7
Final simplification16.6
herbie shell --seed 2019135 +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)))