\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 77.85350311081474217189679620787501335144:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b - \left(a \cdot 4\right) \cdot c\right) \cdot \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - \left(b \cdot b\right) \cdot b}{\left(b \cdot b - \left(a \cdot 4\right) \cdot c\right) + \left(b \cdot \sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} + b \cdot b\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r2365318 = b;
double r2365319 = -r2365318;
double r2365320 = r2365318 * r2365318;
double r2365321 = 4.0;
double r2365322 = a;
double r2365323 = r2365321 * r2365322;
double r2365324 = c;
double r2365325 = r2365323 * r2365324;
double r2365326 = r2365320 - r2365325;
double r2365327 = sqrt(r2365326);
double r2365328 = r2365319 + r2365327;
double r2365329 = 2.0;
double r2365330 = r2365329 * r2365322;
double r2365331 = r2365328 / r2365330;
return r2365331;
}
double f(double a, double b, double c) {
double r2365332 = b;
double r2365333 = 77.85350311081474;
bool r2365334 = r2365332 <= r2365333;
double r2365335 = r2365332 * r2365332;
double r2365336 = a;
double r2365337 = 4.0;
double r2365338 = r2365336 * r2365337;
double r2365339 = c;
double r2365340 = r2365338 * r2365339;
double r2365341 = r2365335 - r2365340;
double r2365342 = sqrt(r2365341);
double r2365343 = r2365341 * r2365342;
double r2365344 = r2365335 * r2365332;
double r2365345 = r2365343 - r2365344;
double r2365346 = r2365332 * r2365342;
double r2365347 = r2365346 + r2365335;
double r2365348 = r2365341 + r2365347;
double r2365349 = r2365345 / r2365348;
double r2365350 = r2365349 / r2365336;
double r2365351 = 2.0;
double r2365352 = r2365350 / r2365351;
double r2365353 = -2.0;
double r2365354 = r2365339 / r2365332;
double r2365355 = r2365353 * r2365354;
double r2365356 = r2365355 / r2365351;
double r2365357 = r2365334 ? r2365352 : r2365356;
return r2365357;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 77.85350311081474Initial program 14.9
Simplified14.9
rmApplied flip3--15.0
Simplified14.3
Simplified14.3
if 77.85350311081474 < b Initial program 34.5
Simplified34.5
Taylor expanded around inf 17.6
Final simplification16.6
herbie shell --seed 2019170
(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)))