\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.844003813175822562359270713493973222617 \cdot 10^{119}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -4.193871707188482833811342019428468815697 \cdot 10^{-287}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{elif}\;b \le 2.521192511657275894218075856706322414394 \cdot 10^{99}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r39411 = b;
double r39412 = -r39411;
double r39413 = r39411 * r39411;
double r39414 = 4.0;
double r39415 = a;
double r39416 = r39414 * r39415;
double r39417 = c;
double r39418 = r39416 * r39417;
double r39419 = r39413 - r39418;
double r39420 = sqrt(r39419);
double r39421 = r39412 + r39420;
double r39422 = 2.0;
double r39423 = r39422 * r39415;
double r39424 = r39421 / r39423;
return r39424;
}
double f(double a, double b, double c) {
double r39425 = b;
double r39426 = -1.8440038131758226e+119;
bool r39427 = r39425 <= r39426;
double r39428 = 1.0;
double r39429 = c;
double r39430 = r39429 / r39425;
double r39431 = a;
double r39432 = r39425 / r39431;
double r39433 = r39430 - r39432;
double r39434 = r39428 * r39433;
double r39435 = -4.193871707188483e-287;
bool r39436 = r39425 <= r39435;
double r39437 = -r39425;
double r39438 = r39425 * r39425;
double r39439 = 4.0;
double r39440 = r39439 * r39431;
double r39441 = r39440 * r39429;
double r39442 = r39438 - r39441;
double r39443 = sqrt(r39442);
double r39444 = r39437 + r39443;
double r39445 = 1.0;
double r39446 = 2.0;
double r39447 = r39446 * r39431;
double r39448 = r39445 / r39447;
double r39449 = r39444 * r39448;
double r39450 = 2.521192511657276e+99;
bool r39451 = r39425 <= r39450;
double r39452 = r39446 * r39429;
double r39453 = r39437 - r39443;
double r39454 = r39452 / r39453;
double r39455 = -1.0;
double r39456 = r39455 * r39430;
double r39457 = r39451 ? r39454 : r39456;
double r39458 = r39436 ? r39449 : r39457;
double r39459 = r39427 ? r39434 : r39458;
return r39459;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.8440038131758226e+119Initial program 51.6
Taylor expanded around -inf 3.0
Simplified3.0
if -1.8440038131758226e+119 < b < -4.193871707188483e-287Initial program 8.2
rmApplied div-inv8.4
if -4.193871707188483e-287 < b < 2.521192511657276e+99Initial program 31.6
rmApplied flip-+31.7
Simplified16.7
rmApplied div-inv16.8
rmApplied associate-*l/16.1
Simplified16.0
Taylor expanded around 0 9.4
if 2.521192511657276e+99 < b Initial program 59.4
Taylor expanded around inf 2.6
Final simplification6.5
herbie shell --seed 2019297
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))