\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -2.37749702272254886 \cdot 10^{101}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 4.888690460859863 \cdot 10^{98}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r37208 = b;
double r37209 = 0.0;
bool r37210 = r37208 >= r37209;
double r37211 = -r37208;
double r37212 = r37208 * r37208;
double r37213 = 4.0;
double r37214 = a;
double r37215 = r37213 * r37214;
double r37216 = c;
double r37217 = r37215 * r37216;
double r37218 = r37212 - r37217;
double r37219 = sqrt(r37218);
double r37220 = r37211 - r37219;
double r37221 = 2.0;
double r37222 = r37221 * r37214;
double r37223 = r37220 / r37222;
double r37224 = r37221 * r37216;
double r37225 = r37211 + r37219;
double r37226 = r37224 / r37225;
double r37227 = r37210 ? r37223 : r37226;
return r37227;
}
double f(double a, double b, double c) {
double r37228 = b;
double r37229 = -2.377497022722549e+101;
bool r37230 = r37228 <= r37229;
double r37231 = 0.0;
bool r37232 = r37228 >= r37231;
double r37233 = -r37228;
double r37234 = r37228 * r37228;
double r37235 = 4.0;
double r37236 = a;
double r37237 = r37235 * r37236;
double r37238 = c;
double r37239 = r37237 * r37238;
double r37240 = r37234 - r37239;
double r37241 = sqrt(r37240);
double r37242 = r37233 - r37241;
double r37243 = 2.0;
double r37244 = r37243 * r37236;
double r37245 = r37242 / r37244;
double r37246 = r37243 * r37238;
double r37247 = r37236 * r37238;
double r37248 = r37247 / r37228;
double r37249 = r37243 * r37248;
double r37250 = r37249 - r37228;
double r37251 = r37233 + r37250;
double r37252 = r37246 / r37251;
double r37253 = r37232 ? r37245 : r37252;
double r37254 = 4.888690460859863e+98;
bool r37255 = r37228 <= r37254;
double r37256 = sqrt(r37241);
double r37257 = r37256 * r37256;
double r37258 = r37233 - r37257;
double r37259 = r37258 / r37244;
double r37260 = r37233 + r37241;
double r37261 = r37246 / r37260;
double r37262 = r37232 ? r37259 : r37261;
double r37263 = r37228 - r37249;
double r37264 = r37233 - r37263;
double r37265 = r37264 / r37244;
double r37266 = r37232 ? r37265 : r37261;
double r37267 = r37255 ? r37262 : r37266;
double r37268 = r37230 ? r37253 : r37267;
return r37268;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.377497022722549e+101Initial program 31.1
Taylor expanded around -inf 6.8
if -2.377497022722549e+101 < b < 4.888690460859863e+98Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 4.888690460859863e+98 < b Initial program 46.6
Taylor expanded around inf 10.3
Final simplification8.8
herbie shell --seed 2020060
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))