\begin{array}{l}
\mathbf{if}\;b \ge 0.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 -1.340453357951692868039545417802281002798 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.269665110513950885787223322334260534415 \cdot 10^{61}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(b - \frac{2 \cdot a}{\frac{b}{c}}\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r45013 = b;
double r45014 = 0.0;
bool r45015 = r45013 >= r45014;
double r45016 = 2.0;
double r45017 = c;
double r45018 = r45016 * r45017;
double r45019 = -r45013;
double r45020 = r45013 * r45013;
double r45021 = 4.0;
double r45022 = a;
double r45023 = r45021 * r45022;
double r45024 = r45023 * r45017;
double r45025 = r45020 - r45024;
double r45026 = sqrt(r45025);
double r45027 = r45019 - r45026;
double r45028 = r45018 / r45027;
double r45029 = r45019 + r45026;
double r45030 = r45016 * r45022;
double r45031 = r45029 / r45030;
double r45032 = r45015 ? r45028 : r45031;
return r45032;
}
double f(double a, double b, double c) {
double r45033 = b;
double r45034 = -1.3404533579516929e+154;
bool r45035 = r45033 <= r45034;
double r45036 = 0.0;
bool r45037 = r45033 >= r45036;
double r45038 = 2.0;
double r45039 = c;
double r45040 = r45038 * r45039;
double r45041 = -r45033;
double r45042 = r45033 * r45033;
double r45043 = 4.0;
double r45044 = a;
double r45045 = r45043 * r45044;
double r45046 = r45045 * r45039;
double r45047 = r45042 - r45046;
double r45048 = sqrt(r45047);
double r45049 = r45041 - r45048;
double r45050 = r45040 / r45049;
double r45051 = r45044 * r45039;
double r45052 = r45051 / r45033;
double r45053 = r45038 * r45052;
double r45054 = r45053 - r45033;
double r45055 = r45041 + r45054;
double r45056 = r45038 * r45044;
double r45057 = r45055 / r45056;
double r45058 = r45037 ? r45050 : r45057;
double r45059 = 2.269665110513951e+61;
bool r45060 = r45033 <= r45059;
double r45061 = cbrt(r45047);
double r45062 = fabs(r45061);
double r45063 = sqrt(r45061);
double r45064 = r45062 * r45063;
double r45065 = r45041 - r45064;
double r45066 = r45040 / r45065;
double r45067 = r45041 + r45048;
double r45068 = r45067 / r45056;
double r45069 = r45037 ? r45066 : r45068;
double r45070 = cbrt(r45033);
double r45071 = r45070 * r45070;
double r45072 = r45044 / r45071;
double r45073 = r45039 / r45070;
double r45074 = r45072 * r45073;
double r45075 = r45038 * r45074;
double r45076 = r45033 - r45075;
double r45077 = r45041 - r45076;
double r45078 = r45040 / r45077;
double r45079 = r45033 / r45039;
double r45080 = r45056 / r45079;
double r45081 = r45033 - r45080;
double r45082 = r45041 + r45081;
double r45083 = r45082 / r45056;
double r45084 = r45037 ? r45078 : r45083;
double r45085 = r45060 ? r45069 : r45084;
double r45086 = r45035 ? r45058 : r45085;
return r45086;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3404533579516929e+154Initial program 64.0
Taylor expanded around -inf 11.2
if -1.3404533579516929e+154 < b < 2.269665110513951e+61Initial program 9.0
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
Simplified9.2
if 2.269665110513951e+61 < b Initial program 26.3
Taylor expanded around inf 7.2
rmApplied add-cube-cbrt7.2
Applied times-frac3.9
Taylor expanded around inf 3.9
Simplified3.9
Final simplification7.9
herbie shell --seed 2019304 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))