\begin{array}{l}
\mathbf{if}\;b \ge 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 6.29680920978693 \cdot 10^{+90}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\\
\mathbf{else}:\\
\;\;\;\;\frac{(\left(\sqrt{\sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r1089234 = b;
double r1089235 = 0.0;
bool r1089236 = r1089234 >= r1089235;
double r1089237 = 2.0;
double r1089238 = c;
double r1089239 = r1089237 * r1089238;
double r1089240 = -r1089234;
double r1089241 = r1089234 * r1089234;
double r1089242 = 4.0;
double r1089243 = a;
double r1089244 = r1089242 * r1089243;
double r1089245 = r1089244 * r1089238;
double r1089246 = r1089241 - r1089245;
double r1089247 = sqrt(r1089246);
double r1089248 = r1089240 - r1089247;
double r1089249 = r1089239 / r1089248;
double r1089250 = r1089240 + r1089247;
double r1089251 = r1089237 * r1089243;
double r1089252 = r1089250 / r1089251;
double r1089253 = r1089236 ? r1089249 : r1089252;
return r1089253;
}
double f(double a, double b, double c) {
double r1089254 = b;
double r1089255 = 6.29680920978693e+90;
bool r1089256 = r1089254 <= r1089255;
double r1089257 = 0.0;
bool r1089258 = r1089254 >= r1089257;
double r1089259 = 2.0;
double r1089260 = c;
double r1089261 = r1089259 * r1089260;
double r1089262 = -r1089254;
double r1089263 = -4.0;
double r1089264 = a;
double r1089265 = r1089264 * r1089260;
double r1089266 = r1089254 * r1089254;
double r1089267 = fma(r1089263, r1089265, r1089266);
double r1089268 = sqrt(r1089267);
double r1089269 = r1089262 - r1089268;
double r1089270 = r1089261 / r1089269;
double r1089271 = sqrt(r1089268);
double r1089272 = fma(r1089271, r1089271, r1089262);
double r1089273 = r1089259 * r1089264;
double r1089274 = r1089272 / r1089273;
double r1089275 = r1089258 ? r1089270 : r1089274;
double r1089276 = r1089262 - r1089254;
double r1089277 = r1089261 / r1089276;
double r1089278 = r1089268 - r1089254;
double r1089279 = r1089278 / r1089273;
double r1089280 = r1089258 ? r1089277 : r1089279;
double r1089281 = r1089256 ? r1089275 : r1089280;
return r1089281;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 6.29680920978693e+90Initial program 16.1
Simplified16.1
rmApplied add-sqr-sqrt16.2
Applied fma-neg16.2
if 6.29680920978693e+90 < b Initial program 27.7
Simplified27.7
Taylor expanded around 0 2.6
Final simplification13.0
herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))