\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r37177 = b;
double r37178 = 0.0;
bool r37179 = r37177 >= r37178;
double r37180 = -r37177;
double r37181 = r37177 * r37177;
double r37182 = 4.0;
double r37183 = a;
double r37184 = r37182 * r37183;
double r37185 = c;
double r37186 = r37184 * r37185;
double r37187 = r37181 - r37186;
double r37188 = sqrt(r37187);
double r37189 = r37180 - r37188;
double r37190 = 2.0;
double r37191 = r37190 * r37183;
double r37192 = r37189 / r37191;
double r37193 = r37190 * r37185;
double r37194 = r37180 + r37188;
double r37195 = r37193 / r37194;
double r37196 = r37179 ? r37192 : r37195;
return r37196;
}
double f(double a, double b, double c) {
double r37197 = b;
double r37198 = -2.377497022722549e+101;
bool r37199 = r37197 <= r37198;
double r37200 = 0.0;
bool r37201 = r37197 >= r37200;
double r37202 = -r37197;
double r37203 = r37197 * r37197;
double r37204 = 4.0;
double r37205 = a;
double r37206 = r37204 * r37205;
double r37207 = c;
double r37208 = r37206 * r37207;
double r37209 = r37203 - r37208;
double r37210 = sqrt(r37209);
double r37211 = r37202 - r37210;
double r37212 = 2.0;
double r37213 = r37212 * r37205;
double r37214 = r37211 / r37213;
double r37215 = r37212 * r37207;
double r37216 = r37205 * r37207;
double r37217 = r37216 / r37197;
double r37218 = r37212 * r37217;
double r37219 = 2.0;
double r37220 = r37219 * r37197;
double r37221 = r37218 - r37220;
double r37222 = r37215 / r37221;
double r37223 = r37201 ? r37214 : r37222;
double r37224 = 4.888690460859863e+98;
bool r37225 = r37197 <= r37224;
double r37226 = sqrt(r37210);
double r37227 = r37226 * r37226;
double r37228 = r37202 - r37227;
double r37229 = r37228 / r37213;
double r37230 = r37202 + r37210;
double r37231 = r37215 / r37230;
double r37232 = r37201 ? r37229 : r37231;
double r37233 = r37221 / r37213;
double r37234 = r37201 ? r37233 : r37231;
double r37235 = r37225 ? r37232 : r37234;
double r37236 = r37199 ? r37223 : r37235;
return r37236;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.377497022722549e+101Initial program 31.1
rmApplied add-sqr-sqrt31.1
Applied sqrt-prod31.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)))))))