\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.550162015746626746000974336574470460524 \cdot 10^{150}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 1.61145084478121505718169973575148582501 \cdot 10^{-34}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r44536 = b;
double r44537 = -r44536;
double r44538 = r44536 * r44536;
double r44539 = 4.0;
double r44540 = a;
double r44541 = r44539 * r44540;
double r44542 = c;
double r44543 = r44541 * r44542;
double r44544 = r44538 - r44543;
double r44545 = sqrt(r44544);
double r44546 = r44537 + r44545;
double r44547 = 2.0;
double r44548 = r44547 * r44540;
double r44549 = r44546 / r44548;
return r44549;
}
double f(double a, double b, double c) {
double r44550 = b;
double r44551 = -1.5501620157466267e+150;
bool r44552 = r44550 <= r44551;
double r44553 = 1.0;
double r44554 = c;
double r44555 = r44554 / r44550;
double r44556 = a;
double r44557 = r44550 / r44556;
double r44558 = r44555 - r44557;
double r44559 = r44553 * r44558;
double r44560 = 1.611450844781215e-34;
bool r44561 = r44550 <= r44560;
double r44562 = 1.0;
double r44563 = 2.0;
double r44564 = r44563 * r44556;
double r44565 = r44550 * r44550;
double r44566 = 4.0;
double r44567 = r44566 * r44556;
double r44568 = r44567 * r44554;
double r44569 = r44565 - r44568;
double r44570 = sqrt(r44569);
double r44571 = r44570 - r44550;
double r44572 = r44564 / r44571;
double r44573 = r44562 / r44572;
double r44574 = -1.0;
double r44575 = r44574 * r44555;
double r44576 = r44561 ? r44573 : r44575;
double r44577 = r44552 ? r44559 : r44576;
return r44577;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5501620157466267e+150Initial program 62.9
Taylor expanded around -inf 1.7
Simplified1.7
if -1.5501620157466267e+150 < b < 1.611450844781215e-34Initial program 13.6
rmApplied clear-num13.7
Simplified13.7
if 1.611450844781215e-34 < b Initial program 55.0
Taylor expanded around inf 7.0
Final simplification9.9
herbie shell --seed 2019325 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))