\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 -1.7512236628315378 \cdot 10^{+131}:\\
\;\;\;\;\frac{\frac{\left(\frac{a}{\frac{b}{c}} - b\right) \cdot 2}{a}}{2}\\
\mathbf{elif}\;b \le 1.489031291672483 \cdot 10^{-98}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)} - b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\frac{b}{c} \cdot \frac{-1}{2}}}{2}\\
\end{array}double f(double a, double b, double c) {
double r829394 = b;
double r829395 = -r829394;
double r829396 = r829394 * r829394;
double r829397 = 4.0;
double r829398 = a;
double r829399 = r829397 * r829398;
double r829400 = c;
double r829401 = r829399 * r829400;
double r829402 = r829396 - r829401;
double r829403 = sqrt(r829402);
double r829404 = r829395 + r829403;
double r829405 = 2.0;
double r829406 = r829405 * r829398;
double r829407 = r829404 / r829406;
return r829407;
}
double f(double a, double b, double c) {
double r829408 = b;
double r829409 = -1.7512236628315378e+131;
bool r829410 = r829408 <= r829409;
double r829411 = a;
double r829412 = c;
double r829413 = r829408 / r829412;
double r829414 = r829411 / r829413;
double r829415 = r829414 - r829408;
double r829416 = 2.0;
double r829417 = r829415 * r829416;
double r829418 = r829417 / r829411;
double r829419 = r829418 / r829416;
double r829420 = 1.489031291672483e-98;
bool r829421 = r829408 <= r829420;
double r829422 = -4.0;
double r829423 = r829422 * r829412;
double r829424 = r829408 * r829408;
double r829425 = fma(r829411, r829423, r829424);
double r829426 = sqrt(r829425);
double r829427 = r829426 - r829408;
double r829428 = r829427 / r829411;
double r829429 = r829428 / r829416;
double r829430 = 1.0;
double r829431 = -0.5;
double r829432 = r829413 * r829431;
double r829433 = r829430 / r829432;
double r829434 = r829433 / r829416;
double r829435 = r829421 ? r829429 : r829434;
double r829436 = r829410 ? r829419 : r829435;
return r829436;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.7512236628315378e+131Initial program 51.5
Simplified51.5
Taylor expanded around -inf 9.8
Simplified3.0
if -1.7512236628315378e+131 < b < 1.489031291672483e-98Initial program 11.5
Simplified11.6
Taylor expanded around 0 11.6
Simplified11.6
rmApplied *-un-lft-identity11.6
if 1.489031291672483e-98 < b Initial program 51.5
Simplified51.5
Taylor expanded around 0 51.5
Simplified51.5
rmApplied clear-num51.5
Taylor expanded around 0 11.4
Final simplification10.5
herbie shell --seed 2019154 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))