\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.3358786167585806 \cdot 10^{154}:\\
\;\;\;\;\frac{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2}}{a}\\
\mathbf{elif}\;b \le 1.94263717460376656 \cdot 10^{24}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-2 \cdot \frac{a \cdot c}{b}}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r40525 = b;
double r40526 = -r40525;
double r40527 = r40525 * r40525;
double r40528 = 4.0;
double r40529 = a;
double r40530 = r40528 * r40529;
double r40531 = c;
double r40532 = r40530 * r40531;
double r40533 = r40527 - r40532;
double r40534 = sqrt(r40533);
double r40535 = r40526 + r40534;
double r40536 = 2.0;
double r40537 = r40536 * r40529;
double r40538 = r40535 / r40537;
return r40538;
}
double f(double a, double b, double c) {
double r40539 = b;
double r40540 = -1.3358786167585806e+154;
bool r40541 = r40539 <= r40540;
double r40542 = 2.0;
double r40543 = a;
double r40544 = c;
double r40545 = r40543 * r40544;
double r40546 = r40545 / r40539;
double r40547 = r40542 * r40546;
double r40548 = 2.0;
double r40549 = r40548 * r40539;
double r40550 = r40547 - r40549;
double r40551 = r40550 / r40542;
double r40552 = r40551 / r40543;
double r40553 = 1.9426371746037666e+24;
bool r40554 = r40539 <= r40553;
double r40555 = r40539 * r40539;
double r40556 = 4.0;
double r40557 = r40556 * r40543;
double r40558 = r40557 * r40544;
double r40559 = r40555 - r40558;
double r40560 = sqrt(r40559);
double r40561 = r40560 - r40539;
double r40562 = r40561 / r40542;
double r40563 = r40562 / r40543;
double r40564 = -2.0;
double r40565 = r40564 * r40546;
double r40566 = r40565 / r40542;
double r40567 = r40566 / r40543;
double r40568 = r40554 ? r40563 : r40567;
double r40569 = r40541 ? r40552 : r40568;
return r40569;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3358786167585806e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 9.8
if -1.3358786167585806e+154 < b < 1.9426371746037666e+24Initial program 16.1
Simplified16.1
if 1.9426371746037666e+24 < b Initial program 56.4
Simplified56.4
Taylor expanded around inf 15.2
Final simplification15.1
herbie shell --seed 2020046
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))