\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 -2.880394710329243 \cdot 10^{+120}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 5.818192251940127 \cdot 10^{-227}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a \cdot 2}\\
\mathbf{elif}\;b \le 6.6006279600139335 \cdot 10^{+131}:\\
\;\;\;\;\left(c \cdot -2\right) \cdot \frac{1}{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} + b}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r9325292 = b;
double r9325293 = -r9325292;
double r9325294 = r9325292 * r9325292;
double r9325295 = 4.0;
double r9325296 = a;
double r9325297 = r9325295 * r9325296;
double r9325298 = c;
double r9325299 = r9325297 * r9325298;
double r9325300 = r9325294 - r9325299;
double r9325301 = sqrt(r9325300);
double r9325302 = r9325293 + r9325301;
double r9325303 = 2.0;
double r9325304 = r9325303 * r9325296;
double r9325305 = r9325302 / r9325304;
return r9325305;
}
double f(double a, double b, double c) {
double r9325306 = b;
double r9325307 = -2.880394710329243e+120;
bool r9325308 = r9325306 <= r9325307;
double r9325309 = c;
double r9325310 = r9325309 / r9325306;
double r9325311 = a;
double r9325312 = r9325306 / r9325311;
double r9325313 = r9325310 - r9325312;
double r9325314 = 5.818192251940127e-227;
bool r9325315 = r9325306 <= r9325314;
double r9325316 = r9325306 * r9325306;
double r9325317 = r9325309 * r9325311;
double r9325318 = 4.0;
double r9325319 = r9325317 * r9325318;
double r9325320 = r9325316 - r9325319;
double r9325321 = sqrt(r9325320);
double r9325322 = r9325321 - r9325306;
double r9325323 = 2.0;
double r9325324 = r9325311 * r9325323;
double r9325325 = r9325322 / r9325324;
double r9325326 = 6.6006279600139335e+131;
bool r9325327 = r9325306 <= r9325326;
double r9325328 = -2.0;
double r9325329 = r9325309 * r9325328;
double r9325330 = 1.0;
double r9325331 = r9325321 + r9325306;
double r9325332 = r9325330 / r9325331;
double r9325333 = r9325329 * r9325332;
double r9325334 = -r9325310;
double r9325335 = r9325327 ? r9325333 : r9325334;
double r9325336 = r9325315 ? r9325325 : r9325335;
double r9325337 = r9325308 ? r9325313 : r9325336;
return r9325337;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.880394710329243e+120Initial program 49.1
Simplified49.1
Taylor expanded around -inf 2.7
if -2.880394710329243e+120 < b < 5.818192251940127e-227Initial program 9.3
Simplified9.3
if 5.818192251940127e-227 < b < 6.6006279600139335e+131Initial program 35.9
Simplified35.9
rmApplied *-un-lft-identity35.9
Applied *-un-lft-identity35.9
Applied distribute-lft-out--35.9
Applied associate-/l*35.9
rmApplied flip--36.0
Applied associate-/r/36.1
Applied *-un-lft-identity36.1
Applied times-frac36.1
Simplified13.6
Taylor expanded around inf 7.3
if 6.6006279600139335e+131 < b Initial program 60.5
Simplified60.5
Taylor expanded around inf 2.2
Simplified2.2
Final simplification6.4
herbie shell --seed 2019124
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))