\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 -4.739386840053888999010128333992752158317 \cdot 10^{131}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -2.102308624562260429751103075089775725609 \cdot 10^{-293}:\\
\;\;\;\;\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 6.092401246928180338651406165764155275885 \cdot 10^{90}:\\
\;\;\;\;\frac{1}{\left(\frac{2}{4} \cdot \frac{1}{c}\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r50425 = b;
double r50426 = -r50425;
double r50427 = r50425 * r50425;
double r50428 = 4.0;
double r50429 = a;
double r50430 = r50428 * r50429;
double r50431 = c;
double r50432 = r50430 * r50431;
double r50433 = r50427 - r50432;
double r50434 = sqrt(r50433);
double r50435 = r50426 + r50434;
double r50436 = 2.0;
double r50437 = r50436 * r50429;
double r50438 = r50435 / r50437;
return r50438;
}
double f(double a, double b, double c) {
double r50439 = b;
double r50440 = -4.739386840053889e+131;
bool r50441 = r50439 <= r50440;
double r50442 = 1.0;
double r50443 = c;
double r50444 = r50443 / r50439;
double r50445 = a;
double r50446 = r50439 / r50445;
double r50447 = r50444 - r50446;
double r50448 = r50442 * r50447;
double r50449 = -2.1023086245622604e-293;
bool r50450 = r50439 <= r50449;
double r50451 = -r50439;
double r50452 = r50439 * r50439;
double r50453 = 4.0;
double r50454 = r50453 * r50445;
double r50455 = r50454 * r50443;
double r50456 = r50452 - r50455;
double r50457 = sqrt(r50456);
double r50458 = r50451 + r50457;
double r50459 = 1.0;
double r50460 = 2.0;
double r50461 = r50460 * r50445;
double r50462 = r50459 / r50461;
double r50463 = r50458 * r50462;
double r50464 = 6.09240124692818e+90;
bool r50465 = r50439 <= r50464;
double r50466 = r50460 / r50453;
double r50467 = r50459 / r50443;
double r50468 = r50466 * r50467;
double r50469 = r50451 - r50457;
double r50470 = r50468 * r50469;
double r50471 = r50459 / r50470;
double r50472 = -1.0;
double r50473 = r50472 * r50444;
double r50474 = r50465 ? r50471 : r50473;
double r50475 = r50450 ? r50463 : r50474;
double r50476 = r50441 ? r50448 : r50475;
return r50476;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.739386840053889e+131Initial program 55.7
Taylor expanded around -inf 2.4
Simplified2.4
if -4.739386840053889e+131 < b < -2.1023086245622604e-293Initial program 9.2
rmApplied div-inv9.4
if -2.1023086245622604e-293 < b < 6.09240124692818e+90Initial program 31.3
rmApplied flip-+31.3
Simplified16.0
rmApplied clear-num16.2
Simplified15.6
rmApplied times-frac15.6
Simplified8.8
if 6.09240124692818e+90 < b Initial program 59.2
Taylor expanded around inf 3.0
Final simplification6.7
herbie shell --seed 2019354
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))