\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.358444129835255 \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 1.81004053784919408 \cdot 10^{85}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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{\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 \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r40079 = b;
double r40080 = 0.0;
bool r40081 = r40079 >= r40080;
double r40082 = 2.0;
double r40083 = c;
double r40084 = r40082 * r40083;
double r40085 = -r40079;
double r40086 = r40079 * r40079;
double r40087 = 4.0;
double r40088 = a;
double r40089 = r40087 * r40088;
double r40090 = r40089 * r40083;
double r40091 = r40086 - r40090;
double r40092 = sqrt(r40091);
double r40093 = r40085 - r40092;
double r40094 = r40084 / r40093;
double r40095 = r40085 + r40092;
double r40096 = r40082 * r40088;
double r40097 = r40095 / r40096;
double r40098 = r40081 ? r40094 : r40097;
return r40098;
}
double f(double a, double b, double c) {
double r40099 = b;
double r40100 = -1.358444129835255e+154;
bool r40101 = r40099 <= r40100;
double r40102 = 0.0;
bool r40103 = r40099 >= r40102;
double r40104 = 2.0;
double r40105 = c;
double r40106 = r40104 * r40105;
double r40107 = -r40099;
double r40108 = r40099 * r40099;
double r40109 = 4.0;
double r40110 = a;
double r40111 = r40109 * r40110;
double r40112 = r40111 * r40105;
double r40113 = r40108 - r40112;
double r40114 = sqrt(r40113);
double r40115 = r40107 - r40114;
double r40116 = r40106 / r40115;
double r40117 = r40110 * r40105;
double r40118 = r40117 / r40099;
double r40119 = r40104 * r40118;
double r40120 = r40119 - r40099;
double r40121 = r40107 + r40120;
double r40122 = r40104 * r40110;
double r40123 = r40121 / r40122;
double r40124 = r40103 ? r40116 : r40123;
double r40125 = 1.810040537849194e+85;
bool r40126 = r40099 <= r40125;
double r40127 = sqrt(r40114);
double r40128 = r40127 * r40127;
double r40129 = r40107 - r40128;
double r40130 = r40106 / r40129;
double r40131 = r40107 + r40114;
double r40132 = r40131 / r40122;
double r40133 = r40103 ? r40130 : r40132;
double r40134 = r40099 - r40119;
double r40135 = r40107 - r40134;
double r40136 = r40106 / r40135;
double r40137 = r40103 ? r40136 : r40132;
double r40138 = r40126 ? r40133 : r40137;
double r40139 = r40101 ? r40124 : r40138;
return r40139;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.358444129835255e+154Initial program 64.0
Taylor expanded around -inf 12.1
if -1.358444129835255e+154 < b < 1.810040537849194e+85Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
if 1.810040537849194e+85 < b Initial program 28.8
Taylor expanded around inf 6.6
Final simplification8.9
herbie shell --seed 2020039
(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))))