\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 -2.0519886074223697 \cdot 10^{+155}:\\
\;\;\;\;\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{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 8.119950078133889 \cdot 10^{+99}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{\frac{b}{c}} - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(\frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r907051 = b;
double r907052 = 0.0;
bool r907053 = r907051 >= r907052;
double r907054 = 2.0;
double r907055 = c;
double r907056 = r907054 * r907055;
double r907057 = -r907051;
double r907058 = r907051 * r907051;
double r907059 = 4.0;
double r907060 = a;
double r907061 = r907059 * r907060;
double r907062 = r907061 * r907055;
double r907063 = r907058 - r907062;
double r907064 = sqrt(r907063);
double r907065 = r907057 - r907064;
double r907066 = r907056 / r907065;
double r907067 = r907057 + r907064;
double r907068 = r907054 * r907060;
double r907069 = r907067 / r907068;
double r907070 = r907053 ? r907066 : r907069;
return r907070;
}
double f(double a, double b, double c) {
double r907071 = b;
double r907072 = -2.0519886074223697e+155;
bool r907073 = r907071 <= r907072;
double r907074 = 0.0;
bool r907075 = r907071 >= r907074;
double r907076 = 2.0;
double r907077 = c;
double r907078 = r907076 * r907077;
double r907079 = -r907071;
double r907080 = r907071 * r907071;
double r907081 = 4.0;
double r907082 = a;
double r907083 = r907081 * r907082;
double r907084 = r907083 * r907077;
double r907085 = r907080 - r907084;
double r907086 = sqrt(r907085);
double r907087 = r907079 - r907086;
double r907088 = r907078 / r907087;
double r907089 = r907071 / r907077;
double r907090 = r907082 / r907089;
double r907091 = r907090 - r907071;
double r907092 = r907076 * r907091;
double r907093 = r907076 * r907082;
double r907094 = r907092 / r907093;
double r907095 = r907075 ? r907088 : r907094;
double r907096 = 8.119950078133889e+99;
bool r907097 = r907071 <= r907096;
double r907098 = sqrt(r907086);
double r907099 = r907098 * r907098;
double r907100 = r907079 - r907099;
double r907101 = r907078 / r907100;
double r907102 = r907086 + r907079;
double r907103 = r907102 / r907093;
double r907104 = r907075 ? r907101 : r907103;
double r907105 = r907078 / r907092;
double r907106 = r907082 * r907077;
double r907107 = r907106 / r907071;
double r907108 = r907107 - r907071;
double r907109 = r907076 * r907108;
double r907110 = r907109 / r907093;
double r907111 = r907075 ? r907105 : r907110;
double r907112 = r907097 ? r907104 : r907111;
double r907113 = r907073 ? r907095 : r907112;
return r907113;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.0519886074223697e+155Initial program 60.9
Taylor expanded around -inf 11.5
Simplified2.7
if -2.0519886074223697e+155 < b < 8.119950078133889e+99Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.5
if 8.119950078133889e+99 < b Initial program 29.4
Taylor expanded around inf 6.8
Simplified2.3
Taylor expanded around -inf 2.3
Simplified2.3
Final simplification6.3
herbie shell --seed 2019165
(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))))