\begin{array}{l}
\mathbf{if}\;b \ge 0.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 -2.31883146340525189 \cdot 10^{107}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 7.9699136206339502 \cdot 10^{103}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}double f(double a, double b, double c) {
double r43027 = b;
double r43028 = 0.0;
bool r43029 = r43027 >= r43028;
double r43030 = -r43027;
double r43031 = r43027 * r43027;
double r43032 = 4.0;
double r43033 = a;
double r43034 = r43032 * r43033;
double r43035 = c;
double r43036 = r43034 * r43035;
double r43037 = r43031 - r43036;
double r43038 = sqrt(r43037);
double r43039 = r43030 - r43038;
double r43040 = 2.0;
double r43041 = r43040 * r43033;
double r43042 = r43039 / r43041;
double r43043 = r43040 * r43035;
double r43044 = r43030 + r43038;
double r43045 = r43043 / r43044;
double r43046 = r43029 ? r43042 : r43045;
return r43046;
}
double f(double a, double b, double c) {
double r43047 = b;
double r43048 = -2.318831463405252e+107;
bool r43049 = r43047 <= r43048;
double r43050 = 0.0;
bool r43051 = r43047 >= r43050;
double r43052 = -r43047;
double r43053 = r43047 * r43047;
double r43054 = 4.0;
double r43055 = a;
double r43056 = r43054 * r43055;
double r43057 = c;
double r43058 = r43056 * r43057;
double r43059 = r43053 - r43058;
double r43060 = sqrt(r43059);
double r43061 = r43052 - r43060;
double r43062 = 2.0;
double r43063 = r43062 * r43055;
double r43064 = r43061 / r43063;
double r43065 = r43062 * r43057;
double r43066 = r43055 * r43057;
double r43067 = r43066 / r43047;
double r43068 = r43062 * r43067;
double r43069 = r43068 - r43047;
double r43070 = r43052 + r43069;
double r43071 = r43065 / r43070;
double r43072 = r43051 ? r43064 : r43071;
double r43073 = 7.96991362063395e+103;
bool r43074 = r43047 <= r43073;
double r43075 = sqrt(r43060);
double r43076 = r43075 * r43075;
double r43077 = r43052 - r43076;
double r43078 = r43077 / r43063;
double r43079 = r43052 + r43060;
double r43080 = r43065 / r43079;
double r43081 = r43051 ? r43078 : r43080;
double r43082 = r43047 - r43068;
double r43083 = r43052 - r43082;
double r43084 = r43083 / r43063;
double r43085 = r43051 ? r43084 : r43080;
double r43086 = r43074 ? r43081 : r43085;
double r43087 = r43049 ? r43072 : r43086;
return r43087;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.318831463405252e+107Initial program 32.2
Taylor expanded around -inf 6.5
if -2.318831463405252e+107 < b < 7.96991362063395e+103Initial program 8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.8
if 7.96991362063395e+103 < b Initial program 47.9
Taylor expanded around inf 10.2
Final simplification8.5
herbie shell --seed 2020024
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))