\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 4.7476977383731215 \cdot 10^{+48}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, -b\right)}{2}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(\frac{c}{\frac{b}{a}} - b\right) \cdot 2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b}{2}}\\
\end{array}double f(double a, double b, double c) {
double r1145215 = b;
double r1145216 = 0.0;
bool r1145217 = r1145215 >= r1145216;
double r1145218 = -r1145215;
double r1145219 = r1145215 * r1145215;
double r1145220 = 4.0;
double r1145221 = a;
double r1145222 = r1145220 * r1145221;
double r1145223 = c;
double r1145224 = r1145222 * r1145223;
double r1145225 = r1145219 - r1145224;
double r1145226 = sqrt(r1145225);
double r1145227 = r1145218 - r1145226;
double r1145228 = 2.0;
double r1145229 = r1145228 * r1145221;
double r1145230 = r1145227 / r1145229;
double r1145231 = r1145228 * r1145223;
double r1145232 = r1145218 + r1145226;
double r1145233 = r1145231 / r1145232;
double r1145234 = r1145217 ? r1145230 : r1145233;
return r1145234;
}
double f(double a, double b, double c) {
double r1145235 = b;
double r1145236 = 4.7476977383731215e+48;
bool r1145237 = r1145235 <= r1145236;
double r1145238 = 0.0;
bool r1145239 = r1145235 >= r1145238;
double r1145240 = -r1145235;
double r1145241 = c;
double r1145242 = a;
double r1145243 = -4.0;
double r1145244 = r1145242 * r1145243;
double r1145245 = r1145235 * r1145235;
double r1145246 = fma(r1145241, r1145244, r1145245);
double r1145247 = sqrt(r1145246);
double r1145248 = r1145240 - r1145247;
double r1145249 = 2.0;
double r1145250 = r1145249 * r1145242;
double r1145251 = r1145248 / r1145250;
double r1145252 = sqrt(r1145247);
double r1145253 = fma(r1145252, r1145252, r1145240);
double r1145254 = r1145253 / r1145249;
double r1145255 = r1145241 / r1145254;
double r1145256 = r1145239 ? r1145251 : r1145255;
double r1145257 = r1145235 / r1145242;
double r1145258 = r1145241 / r1145257;
double r1145259 = r1145258 - r1145235;
double r1145260 = r1145259 * r1145249;
double r1145261 = r1145260 / r1145250;
double r1145262 = r1145247 - r1145235;
double r1145263 = r1145262 / r1145249;
double r1145264 = r1145241 / r1145263;
double r1145265 = r1145239 ? r1145261 : r1145264;
double r1145266 = r1145237 ? r1145256 : r1145265;
return r1145266;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 4.7476977383731215e+48Initial program 15.1
Simplified15.1
rmApplied add-sqr-sqrt15.1
Applied sqrt-prod15.2
Applied fma-neg15.2
if 4.7476977383731215e+48 < b Initial program 35.7
Simplified35.6
rmApplied add-sqr-sqrt35.6
Applied sqrt-prod35.8
Taylor expanded around inf 10.1
Simplified5.2
Final simplification13.3
herbie shell --seed 2019164 +o rules:numerics
(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)))))))