\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 -1.1214768270116103 \cdot 10^{+154}:\\
\;\;\;\;\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(a \cdot \frac{c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.751889596127745 \cdot 10^{+121}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot \left(a \cdot \frac{c}{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 r2215982 = b;
double r2215983 = 0.0;
bool r2215984 = r2215982 >= r2215983;
double r2215985 = -r2215982;
double r2215986 = r2215982 * r2215982;
double r2215987 = 4.0;
double r2215988 = a;
double r2215989 = r2215987 * r2215988;
double r2215990 = c;
double r2215991 = r2215989 * r2215990;
double r2215992 = r2215986 - r2215991;
double r2215993 = sqrt(r2215992);
double r2215994 = r2215985 - r2215993;
double r2215995 = 2.0;
double r2215996 = r2215995 * r2215988;
double r2215997 = r2215994 / r2215996;
double r2215998 = r2215995 * r2215990;
double r2215999 = r2215985 + r2215993;
double r2216000 = r2215998 / r2215999;
double r2216001 = r2215984 ? r2215997 : r2216000;
return r2216001;
}
double f(double a, double b, double c) {
double r2216002 = b;
double r2216003 = -1.1214768270116103e+154;
bool r2216004 = r2216002 <= r2216003;
double r2216005 = 0.0;
bool r2216006 = r2216002 >= r2216005;
double r2216007 = -r2216002;
double r2216008 = r2216002 * r2216002;
double r2216009 = 4.0;
double r2216010 = a;
double r2216011 = r2216009 * r2216010;
double r2216012 = c;
double r2216013 = r2216011 * r2216012;
double r2216014 = r2216008 - r2216013;
double r2216015 = sqrt(r2216014);
double r2216016 = r2216007 - r2216015;
double r2216017 = 2.0;
double r2216018 = r2216017 * r2216010;
double r2216019 = r2216016 / r2216018;
double r2216020 = r2216012 * r2216017;
double r2216021 = r2216012 / r2216002;
double r2216022 = r2216010 * r2216021;
double r2216023 = r2216022 - r2216002;
double r2216024 = r2216017 * r2216023;
double r2216025 = r2216020 / r2216024;
double r2216026 = r2216006 ? r2216019 : r2216025;
double r2216027 = 2.751889596127745e+121;
bool r2216028 = r2216002 <= r2216027;
double r2216029 = sqrt(r2216015);
double r2216030 = r2216029 * r2216029;
double r2216031 = r2216007 - r2216030;
double r2216032 = r2216031 / r2216018;
double r2216033 = r2216015 + r2216007;
double r2216034 = r2216020 / r2216033;
double r2216035 = r2216006 ? r2216032 : r2216034;
double r2216036 = r2216024 / r2216018;
double r2216037 = r2216006 ? r2216036 : r2216034;
double r2216038 = r2216028 ? r2216035 : r2216037;
double r2216039 = r2216004 ? r2216026 : r2216038;
return r2216039;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.1214768270116103e+154Initial program 37.5
rmApplied add-sqr-sqrt37.5
Applied sqrt-prod37.5
Taylor expanded around -inf 7.1
Simplified1.5
if -1.1214768270116103e+154 < b < 2.751889596127745e+121Initial program 8.2
rmApplied add-sqr-sqrt8.3
if 2.751889596127745e+121 < b Initial program 49.6
Taylor expanded around inf 11.3
Simplified3.6
Final simplification6.4
herbie shell --seed 2019128
(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)))))))