\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 -5.16001008416394735 \cdot 10^{156}:\\
\;\;\;\;\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\mathbf{elif}\;b \le -5.18636062467436046 \cdot 10^{-242}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.18992965287049363 \cdot 10^{140}:\\
\;\;\;\;\frac{\frac{c}{0.5}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{0.5}{c} \cdot \left(2 \cdot \frac{a \cdot c}{b} - 2 \cdot b\right)}\\
\end{array}double f(double a, double b, double c) {
double r48333 = b;
double r48334 = -r48333;
double r48335 = r48333 * r48333;
double r48336 = 4.0;
double r48337 = a;
double r48338 = r48336 * r48337;
double r48339 = c;
double r48340 = r48338 * r48339;
double r48341 = r48335 - r48340;
double r48342 = sqrt(r48341);
double r48343 = r48334 + r48342;
double r48344 = 2.0;
double r48345 = r48344 * r48337;
double r48346 = r48343 / r48345;
return r48346;
}
double f(double a, double b, double c) {
double r48347 = b;
double r48348 = -5.160010084163947e+156;
bool r48349 = r48347 <= r48348;
double r48350 = -r48347;
double r48351 = 2.0;
double r48352 = a;
double r48353 = c;
double r48354 = r48352 * r48353;
double r48355 = r48354 / r48347;
double r48356 = r48351 * r48355;
double r48357 = r48356 - r48347;
double r48358 = r48350 + r48357;
double r48359 = r48351 * r48352;
double r48360 = r48358 / r48359;
double r48361 = -5.1863606246743605e-242;
bool r48362 = r48347 <= r48361;
double r48363 = r48347 * r48347;
double r48364 = 4.0;
double r48365 = r48364 * r48352;
double r48366 = r48365 * r48353;
double r48367 = r48363 - r48366;
double r48368 = sqrt(r48367);
double r48369 = r48350 + r48368;
double r48370 = r48369 / r48359;
double r48371 = 1.1899296528704936e+140;
bool r48372 = r48347 <= r48371;
double r48373 = 0.5;
double r48374 = r48353 / r48373;
double r48375 = r48350 - r48368;
double r48376 = r48374 / r48375;
double r48377 = 1.0;
double r48378 = r48373 / r48353;
double r48379 = 2.0;
double r48380 = r48379 * r48347;
double r48381 = r48356 - r48380;
double r48382 = r48378 * r48381;
double r48383 = r48377 / r48382;
double r48384 = r48372 ? r48376 : r48383;
double r48385 = r48362 ? r48370 : r48384;
double r48386 = r48349 ? r48360 : r48385;
return r48386;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.160010084163947e+156Initial program 64.0
Taylor expanded around -inf 10.1
if -5.160010084163947e+156 < b < -5.1863606246743605e-242Initial program 8.6
if -5.1863606246743605e-242 < b < 1.1899296528704936e+140Initial program 32.3
rmApplied flip-+32.4
Simplified15.9
rmApplied clear-num16.1
Simplified15.1
Taylor expanded around 0 9.7
rmApplied associate-/r*9.3
Simplified9.2
if 1.1899296528704936e+140 < b Initial program 62.5
rmApplied flip-+62.5
Simplified35.1
rmApplied clear-num35.1
Simplified34.7
Taylor expanded around 0 34.4
Taylor expanded around inf 7.1
Final simplification8.7
herbie shell --seed 2020033
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))