\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 -5.4369139762720996 \cdot 10^{56}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -8.70350838245532258 \cdot 10^{-221}:\\
\;\;\;\;\frac{\frac{4}{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{a \cdot c}} \cdot \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.8597470564587674 \cdot 10^{138}:\\
\;\;\;\;1 \cdot \frac{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\frac{2}{4} \cdot 1}{c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r53104 = b;
double r53105 = -r53104;
double r53106 = r53104 * r53104;
double r53107 = 4.0;
double r53108 = a;
double r53109 = r53107 * r53108;
double r53110 = c;
double r53111 = r53109 * r53110;
double r53112 = r53106 - r53111;
double r53113 = sqrt(r53112);
double r53114 = r53105 + r53113;
double r53115 = 2.0;
double r53116 = r53115 * r53108;
double r53117 = r53114 / r53116;
return r53117;
}
double f(double a, double b, double c) {
double r53118 = b;
double r53119 = -5.4369139762720996e+56;
bool r53120 = r53118 <= r53119;
double r53121 = 1.0;
double r53122 = c;
double r53123 = r53122 / r53118;
double r53124 = a;
double r53125 = r53118 / r53124;
double r53126 = r53123 - r53125;
double r53127 = r53121 * r53126;
double r53128 = -8.703508382455323e-221;
bool r53129 = r53118 <= r53128;
double r53130 = 4.0;
double r53131 = 2.0;
double r53132 = pow(r53118, r53131);
double r53133 = r53132 - r53132;
double r53134 = r53124 * r53122;
double r53135 = r53130 * r53134;
double r53136 = r53133 + r53135;
double r53137 = r53136 / r53134;
double r53138 = r53130 / r53137;
double r53139 = -r53118;
double r53140 = r53118 * r53118;
double r53141 = r53130 * r53124;
double r53142 = r53141 * r53122;
double r53143 = r53140 - r53142;
double r53144 = sqrt(r53143);
double r53145 = r53139 + r53144;
double r53146 = r53138 * r53145;
double r53147 = 2.0;
double r53148 = r53147 * r53124;
double r53149 = r53146 / r53148;
double r53150 = 1.8597470564587674e+138;
bool r53151 = r53118 <= r53150;
double r53152 = 1.0;
double r53153 = r53139 - r53144;
double r53154 = r53152 / r53153;
double r53155 = r53147 / r53130;
double r53156 = r53155 * r53152;
double r53157 = r53156 / r53122;
double r53158 = r53154 / r53157;
double r53159 = r53152 * r53158;
double r53160 = -1.0;
double r53161 = r53160 * r53123;
double r53162 = r53151 ? r53159 : r53161;
double r53163 = r53129 ? r53149 : r53162;
double r53164 = r53120 ? r53127 : r53163;
return r53164;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.4369139762720996e+56Initial program 42.7
Taylor expanded around -inf 5.1
Simplified5.1
if -5.4369139762720996e+56 < b < -8.703508382455323e-221Initial program 8.3
rmApplied flip-+35.2
Simplified35.3
rmApplied flip--35.3
Applied associate-/r/35.4
Simplified16.9
if -8.703508382455323e-221 < b < 1.8597470564587674e+138Initial program 31.1
rmApplied flip-+31.2
Simplified16.1
rmApplied clear-num16.2
Simplified15.0
rmApplied div-inv15.0
Simplified9.8
if 1.8597470564587674e+138 < b Initial program 62.4
Taylor expanded around inf 2.0
Final simplification8.9
herbie shell --seed 2020034
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))