\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 5152.464935290847279247827827930450439453:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right) \cdot \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}, b \cdot b - \left(4 \cdot a\right) \cdot c\right)}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\frac{a \cdot c}{\sqrt{b}}}{\sqrt{b}} \cdot -2}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r2457178 = b;
double r2457179 = -r2457178;
double r2457180 = r2457178 * r2457178;
double r2457181 = 4.0;
double r2457182 = a;
double r2457183 = r2457181 * r2457182;
double r2457184 = c;
double r2457185 = r2457183 * r2457184;
double r2457186 = r2457180 - r2457185;
double r2457187 = sqrt(r2457186);
double r2457188 = r2457179 + r2457187;
double r2457189 = 2.0;
double r2457190 = r2457189 * r2457182;
double r2457191 = r2457188 / r2457190;
return r2457191;
}
double f(double a, double b, double c) {
double r2457192 = b;
double r2457193 = 5152.464935290847;
bool r2457194 = r2457192 <= r2457193;
double r2457195 = r2457192 * r2457192;
double r2457196 = 4.0;
double r2457197 = a;
double r2457198 = r2457196 * r2457197;
double r2457199 = c;
double r2457200 = r2457198 * r2457199;
double r2457201 = r2457195 - r2457200;
double r2457202 = sqrt(r2457201);
double r2457203 = r2457201 * r2457202;
double r2457204 = r2457195 * r2457192;
double r2457205 = r2457203 - r2457204;
double r2457206 = r2457192 + r2457202;
double r2457207 = fma(r2457192, r2457206, r2457201);
double r2457208 = r2457205 / r2457207;
double r2457209 = 2.0;
double r2457210 = r2457208 / r2457209;
double r2457211 = r2457210 / r2457197;
double r2457212 = r2457197 * r2457199;
double r2457213 = sqrt(r2457192);
double r2457214 = r2457212 / r2457213;
double r2457215 = r2457214 / r2457213;
double r2457216 = -2.0;
double r2457217 = r2457215 * r2457216;
double r2457218 = r2457217 / r2457209;
double r2457219 = r2457218 / r2457197;
double r2457220 = r2457194 ? r2457211 : r2457219;
return r2457220;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 5152.464935290847Initial program 18.7
Simplified18.7
rmApplied flip3--18.9
Simplified18.1
Simplified18.1
if 5152.464935290847 < b Initial program 37.9
Simplified37.9
Taylor expanded around inf 15.1
rmApplied add-sqr-sqrt15.2
Applied associate-/r*15.2
Final simplification16.6
herbie shell --seed 2019168 +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.0 a) c)))) (* 2.0 a)))