\begin{array}{l}
\mathbf{if}\;b \ge 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 -3.396811349079212 \cdot 10^{+61}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{2 \cdot \left(c \cdot \frac{a}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.891777552454845 \cdot 10^{+74}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\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}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot \left(c \cdot \frac{a}{b} - b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r900244 = b;
double r900245 = 0.0;
bool r900246 = r900244 >= r900245;
double r900247 = -r900244;
double r900248 = r900244 * r900244;
double r900249 = 4.0;
double r900250 = a;
double r900251 = r900249 * r900250;
double r900252 = c;
double r900253 = r900251 * r900252;
double r900254 = r900248 - r900253;
double r900255 = sqrt(r900254);
double r900256 = r900247 - r900255;
double r900257 = 2.0;
double r900258 = r900257 * r900250;
double r900259 = r900256 / r900258;
double r900260 = r900257 * r900252;
double r900261 = r900247 + r900255;
double r900262 = r900260 / r900261;
double r900263 = r900246 ? r900259 : r900262;
return r900263;
}
double f(double a, double b, double c) {
double r900264 = b;
double r900265 = -3.396811349079212e+61;
bool r900266 = r900264 <= r900265;
double r900267 = 0.0;
bool r900268 = r900264 >= r900267;
double r900269 = -r900264;
double r900270 = r900264 * r900264;
double r900271 = 4.0;
double r900272 = a;
double r900273 = r900271 * r900272;
double r900274 = c;
double r900275 = r900273 * r900274;
double r900276 = r900270 - r900275;
double r900277 = sqrt(r900276);
double r900278 = r900269 - r900277;
double r900279 = 2.0;
double r900280 = r900279 * r900272;
double r900281 = r900278 / r900280;
double r900282 = r900274 * r900279;
double r900283 = r900272 / r900264;
double r900284 = r900274 * r900283;
double r900285 = r900284 - r900264;
double r900286 = r900279 * r900285;
double r900287 = r900282 / r900286;
double r900288 = r900268 ? r900281 : r900287;
double r900289 = 2.891777552454845e+74;
bool r900290 = r900264 <= r900289;
double r900291 = sqrt(r900277);
double r900292 = r900291 * r900291;
double r900293 = r900269 + r900292;
double r900294 = r900282 / r900293;
double r900295 = r900268 ? r900281 : r900294;
double r900296 = r900286 / r900280;
double r900297 = r900277 + r900269;
double r900298 = r900282 / r900297;
double r900299 = r900268 ? r900296 : r900298;
double r900300 = r900290 ? r900295 : r900299;
double r900301 = r900266 ? r900288 : r900300;
return r900301;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.396811349079212e+61Initial program 26.2
rmApplied add-sqr-sqrt26.2
Applied sqrt-prod26.2
Taylor expanded around -inf 6.5
Simplified3.0
if -3.396811349079212e+61 < b < 2.891777552454845e+74Initial program 9.6
rmApplied add-sqr-sqrt9.6
Applied sqrt-prod9.7
if 2.891777552454845e+74 < b Initial program 38.9
rmApplied add-sqr-sqrt38.9
Applied sqrt-prod39.0
Taylor expanded around inf 10.1
Simplified4.3
Final simplification6.9
herbie shell --seed 2019130
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))