\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 -2.2375225949334019 \cdot 10^{57}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 8.67970785211126629 \cdot 10^{-40}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r60636 = b;
double r60637 = -r60636;
double r60638 = r60636 * r60636;
double r60639 = 4.0;
double r60640 = a;
double r60641 = r60639 * r60640;
double r60642 = c;
double r60643 = r60641 * r60642;
double r60644 = r60638 - r60643;
double r60645 = sqrt(r60644);
double r60646 = r60637 + r60645;
double r60647 = 2.0;
double r60648 = r60647 * r60640;
double r60649 = r60646 / r60648;
return r60649;
}
double f(double a, double b, double c) {
double r60650 = b;
double r60651 = -2.237522594933402e+57;
bool r60652 = r60650 <= r60651;
double r60653 = 1.0;
double r60654 = c;
double r60655 = r60654 / r60650;
double r60656 = a;
double r60657 = r60650 / r60656;
double r60658 = r60655 - r60657;
double r60659 = r60653 * r60658;
double r60660 = 8.679707852111266e-40;
bool r60661 = r60650 <= r60660;
double r60662 = -r60650;
double r60663 = r60650 * r60650;
double r60664 = 4.0;
double r60665 = r60664 * r60656;
double r60666 = r60665 * r60654;
double r60667 = r60663 - r60666;
double r60668 = sqrt(r60667);
double r60669 = r60662 + r60668;
double r60670 = 2.0;
double r60671 = r60670 * r60656;
double r60672 = r60669 / r60671;
double r60673 = -1.0;
double r60674 = r60673 * r60655;
double r60675 = r60661 ? r60672 : r60674;
double r60676 = r60652 ? r60659 : r60675;
return r60676;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.237522594933402e+57Initial program 38.1
Taylor expanded around -inf 5.5
Simplified5.5
if -2.237522594933402e+57 < b < 8.679707852111266e-40Initial program 15.3
if 8.679707852111266e-40 < b Initial program 55.1
Taylor expanded around inf 7.5
Final simplification10.6
herbie shell --seed 2020025
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))