\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.7833607813175513 \cdot 10^{+59}:\\
\;\;\;\;\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 5.871220567675767 \cdot 10^{+134}:\\
\;\;\;\;\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{\left(-b\right) - \left(b - \frac{a \cdot c}{b} \cdot 2\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 r1436996 = b;
double r1436997 = 0.0;
bool r1436998 = r1436996 >= r1436997;
double r1436999 = -r1436996;
double r1437000 = r1436996 * r1436996;
double r1437001 = 4.0;
double r1437002 = a;
double r1437003 = r1437001 * r1437002;
double r1437004 = c;
double r1437005 = r1437003 * r1437004;
double r1437006 = r1437000 - r1437005;
double r1437007 = sqrt(r1437006);
double r1437008 = r1436999 - r1437007;
double r1437009 = 2.0;
double r1437010 = r1437009 * r1437002;
double r1437011 = r1437008 / r1437010;
double r1437012 = r1437009 * r1437004;
double r1437013 = r1436999 + r1437007;
double r1437014 = r1437012 / r1437013;
double r1437015 = r1436998 ? r1437011 : r1437014;
return r1437015;
}
double f(double a, double b, double c) {
double r1437016 = b;
double r1437017 = -1.7833607813175513e+59;
bool r1437018 = r1437016 <= r1437017;
double r1437019 = 0.0;
bool r1437020 = r1437016 >= r1437019;
double r1437021 = -r1437016;
double r1437022 = r1437016 * r1437016;
double r1437023 = 4.0;
double r1437024 = a;
double r1437025 = r1437023 * r1437024;
double r1437026 = c;
double r1437027 = r1437025 * r1437026;
double r1437028 = r1437022 - r1437027;
double r1437029 = sqrt(r1437028);
double r1437030 = r1437021 - r1437029;
double r1437031 = 2.0;
double r1437032 = r1437031 * r1437024;
double r1437033 = r1437030 / r1437032;
double r1437034 = r1437026 * r1437031;
double r1437035 = r1437026 / r1437016;
double r1437036 = r1437024 * r1437035;
double r1437037 = r1437036 - r1437016;
double r1437038 = r1437031 * r1437037;
double r1437039 = r1437034 / r1437038;
double r1437040 = r1437020 ? r1437033 : r1437039;
double r1437041 = 5.871220567675767e+134;
bool r1437042 = r1437016 <= r1437041;
double r1437043 = sqrt(r1437029);
double r1437044 = r1437043 * r1437043;
double r1437045 = r1437021 + r1437044;
double r1437046 = r1437034 / r1437045;
double r1437047 = r1437020 ? r1437033 : r1437046;
double r1437048 = r1437024 * r1437026;
double r1437049 = r1437048 / r1437016;
double r1437050 = r1437049 * r1437031;
double r1437051 = r1437016 - r1437050;
double r1437052 = r1437021 - r1437051;
double r1437053 = r1437052 / r1437032;
double r1437054 = r1437029 + r1437021;
double r1437055 = r1437034 / r1437054;
double r1437056 = r1437020 ? r1437053 : r1437055;
double r1437057 = r1437042 ? r1437047 : r1437056;
double r1437058 = r1437018 ? r1437040 : r1437057;
return r1437058;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.7833607813175513e+59Initial program 26.6
rmApplied add-sqr-sqrt26.6
Applied sqrt-prod26.7
Taylor expanded around -inf 7.8
Simplified4.1
if -1.7833607813175513e+59 < b < 5.871220567675767e+134Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
if 5.871220567675767e+134 < b Initial program 53.5
Taylor expanded around inf 11.1
Final simplification8.1
herbie shell --seed 2019121
(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)))))))