\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.388209440671705791656215927803897929135 \cdot 10^{145}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 2.87498785203779979628582064108204053539 \cdot 10^{-182}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{elif}\;b \le 9.191824015256066577021611473136461497822 \cdot 10^{77}:\\
\;\;\;\;\frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \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 r60779 = b;
double r60780 = -r60779;
double r60781 = r60779 * r60779;
double r60782 = 4.0;
double r60783 = a;
double r60784 = r60782 * r60783;
double r60785 = c;
double r60786 = r60784 * r60785;
double r60787 = r60781 - r60786;
double r60788 = sqrt(r60787);
double r60789 = r60780 + r60788;
double r60790 = 2.0;
double r60791 = r60790 * r60783;
double r60792 = r60789 / r60791;
return r60792;
}
double f(double a, double b, double c) {
double r60793 = b;
double r60794 = -1.3882094406717058e+145;
bool r60795 = r60793 <= r60794;
double r60796 = 1.0;
double r60797 = c;
double r60798 = r60797 / r60793;
double r60799 = a;
double r60800 = r60793 / r60799;
double r60801 = r60798 - r60800;
double r60802 = r60796 * r60801;
double r60803 = 2.8749878520377998e-182;
bool r60804 = r60793 <= r60803;
double r60805 = -r60793;
double r60806 = r60793 * r60793;
double r60807 = 4.0;
double r60808 = r60807 * r60799;
double r60809 = r60808 * r60797;
double r60810 = r60806 - r60809;
double r60811 = sqrt(r60810);
double r60812 = r60805 + r60811;
double r60813 = 2.0;
double r60814 = r60813 * r60799;
double r60815 = r60812 / r60814;
double r60816 = 9.191824015256067e+77;
bool r60817 = r60793 <= r60816;
double r60818 = 0.0;
double r60819 = r60799 * r60797;
double r60820 = r60807 * r60819;
double r60821 = r60818 + r60820;
double r60822 = r60811 * r60811;
double r60823 = sqrt(r60822);
double r60824 = r60805 - r60823;
double r60825 = r60821 / r60824;
double r60826 = r60825 / r60814;
double r60827 = -1.0;
double r60828 = r60827 * r60798;
double r60829 = r60817 ? r60826 : r60828;
double r60830 = r60804 ? r60815 : r60829;
double r60831 = r60795 ? r60802 : r60830;
return r60831;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3882094406717058e+145Initial program 60.2
Taylor expanded around -inf 2.5
Simplified2.5
if -1.3882094406717058e+145 < b < 2.8749878520377998e-182Initial program 10.0
if 2.8749878520377998e-182 < b < 9.191824015256067e+77Initial program 37.1
rmApplied flip-+37.1
Simplified17.0
rmApplied add-sqr-sqrt17.0
if 9.191824015256067e+77 < b Initial program 58.3
Taylor expanded around inf 2.8
Final simplification8.7
herbie shell --seed 2019346
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))