\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.325055112202404024851108622724357599663 \cdot 10^{106}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) - b}\\
\end{array}\\
\mathbf{elif}\;b \le 0.01064842317658122247681085070780682144687:\\
\;\;\;\;\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}{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}\\
\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}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}double f(double a, double b, double c) {
double r32051 = b;
double r32052 = 0.0;
bool r32053 = r32051 >= r32052;
double r32054 = -r32051;
double r32055 = r32051 * r32051;
double r32056 = 4.0;
double r32057 = a;
double r32058 = r32056 * r32057;
double r32059 = c;
double r32060 = r32058 * r32059;
double r32061 = r32055 - r32060;
double r32062 = sqrt(r32061);
double r32063 = r32054 - r32062;
double r32064 = 2.0;
double r32065 = r32064 * r32057;
double r32066 = r32063 / r32065;
double r32067 = r32064 * r32059;
double r32068 = r32054 + r32062;
double r32069 = r32067 / r32068;
double r32070 = r32053 ? r32066 : r32069;
return r32070;
}
double f(double a, double b, double c) {
double r32071 = b;
double r32072 = -2.325055112202404e+106;
bool r32073 = r32071 <= r32072;
double r32074 = 0.0;
bool r32075 = r32071 >= r32074;
double r32076 = -r32071;
double r32077 = r32071 * r32071;
double r32078 = 4.0;
double r32079 = a;
double r32080 = r32078 * r32079;
double r32081 = c;
double r32082 = r32080 * r32081;
double r32083 = r32077 - r32082;
double r32084 = sqrt(r32083);
double r32085 = r32076 - r32084;
double r32086 = 2.0;
double r32087 = r32086 * r32079;
double r32088 = r32085 / r32087;
double r32089 = r32086 * r32081;
double r32090 = r32079 * r32081;
double r32091 = r32090 / r32071;
double r32092 = r32086 * r32091;
double r32093 = r32092 - r32071;
double r32094 = r32093 - r32071;
double r32095 = r32089 / r32094;
double r32096 = r32075 ? r32088 : r32095;
double r32097 = 0.010648423176581222;
bool r32098 = r32071 <= r32097;
double r32099 = r32084 - r32071;
double r32100 = sqrt(r32099);
double r32101 = r32100 * r32100;
double r32102 = r32089 / r32101;
double r32103 = r32075 ? r32088 : r32102;
double r32104 = r32071 - r32092;
double r32105 = r32076 - r32104;
double r32106 = r32105 / r32087;
double r32107 = r32089 / r32099;
double r32108 = r32075 ? r32106 : r32107;
double r32109 = r32098 ? r32103 : r32108;
double r32110 = r32073 ? r32096 : r32109;
return r32110;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.325055112202404e+106Initial program 31.2
Simplified31.2
Taylor expanded around -inf 6.1
if -2.325055112202404e+106 < b < 0.010648423176581222Initial program 9.1
Simplified9.1
rmApplied add-sqr-sqrt9.3
if 0.010648423176581222 < b Initial program 32.9
Simplified32.9
Taylor expanded around inf 12.8
Final simplification9.4
herbie shell --seed 2019305
(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)))))))