\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -4.14626678476860242 \cdot 10^{73}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 5.8842313368253003 \cdot 10^{103}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r28199 = b;
double r28200 = 0.0;
bool r28201 = r28199 >= r28200;
double r28202 = 2.0;
double r28203 = c;
double r28204 = r28202 * r28203;
double r28205 = -r28199;
double r28206 = r28199 * r28199;
double r28207 = 4.0;
double r28208 = a;
double r28209 = r28207 * r28208;
double r28210 = r28209 * r28203;
double r28211 = r28206 - r28210;
double r28212 = sqrt(r28211);
double r28213 = r28205 - r28212;
double r28214 = r28204 / r28213;
double r28215 = r28205 + r28212;
double r28216 = r28202 * r28208;
double r28217 = r28215 / r28216;
double r28218 = r28201 ? r28214 : r28217;
return r28218;
}
double f(double a, double b, double c) {
double r28219 = b;
double r28220 = -4.1462667847686024e+73;
bool r28221 = r28219 <= r28220;
double r28222 = 0.0;
bool r28223 = r28219 >= r28222;
double r28224 = 2.0;
double r28225 = c;
double r28226 = r28224 * r28225;
double r28227 = -r28219;
double r28228 = r28219 * r28219;
double r28229 = 4.0;
double r28230 = a;
double r28231 = r28229 * r28230;
double r28232 = r28231 * r28225;
double r28233 = r28228 - r28232;
double r28234 = sqrt(r28233);
double r28235 = r28227 - r28234;
double r28236 = r28226 / r28235;
double r28237 = r28230 * r28225;
double r28238 = r28237 / r28219;
double r28239 = r28224 * r28238;
double r28240 = r28239 - r28219;
double r28241 = r28227 + r28240;
double r28242 = r28224 * r28230;
double r28243 = r28241 / r28242;
double r28244 = r28223 ? r28236 : r28243;
double r28245 = 5.8842313368253e+103;
bool r28246 = r28219 <= r28245;
double r28247 = sqrt(r28234);
double r28248 = r28247 * r28247;
double r28249 = r28227 + r28248;
double r28250 = r28249 / r28242;
double r28251 = r28223 ? r28236 : r28250;
double r28252 = 2.0;
double r28253 = r28252 * r28219;
double r28254 = r28239 - r28253;
double r28255 = r28226 / r28254;
double r28256 = r28227 + r28234;
double r28257 = r28256 / r28242;
double r28258 = r28223 ? r28255 : r28257;
double r28259 = r28246 ? r28251 : r28258;
double r28260 = r28221 ? r28244 : r28259;
return r28260;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.1462667847686024e+73Initial program 41.4
Taylor expanded around -inf 9.7
if -4.1462667847686024e+73 < b < 5.8842313368253e+103Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 5.8842313368253e+103 < b Initial program 29.1
rmApplied add-sqr-sqrt29.1
Applied sqrt-prod29.2
Taylor expanded around inf 6.5
Final simplification8.6
herbie shell --seed 2020024
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))