\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.335505776972144106248436820653376188272 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(a \cdot \frac{c}{b}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.903614506236497481572384266728883748348 \cdot 10^{96}:\\
\;\;\;\;\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 \left(a \cdot \frac{c}{b}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\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}\\
\end{array}double f(double a, double b, double c) {
double r33170 = b;
double r33171 = 0.0;
bool r33172 = r33170 >= r33171;
double r33173 = 2.0;
double r33174 = c;
double r33175 = r33173 * r33174;
double r33176 = -r33170;
double r33177 = r33170 * r33170;
double r33178 = 4.0;
double r33179 = a;
double r33180 = r33178 * r33179;
double r33181 = r33180 * r33174;
double r33182 = r33177 - r33181;
double r33183 = sqrt(r33182);
double r33184 = r33176 - r33183;
double r33185 = r33175 / r33184;
double r33186 = r33176 + r33183;
double r33187 = r33173 * r33179;
double r33188 = r33186 / r33187;
double r33189 = r33172 ? r33185 : r33188;
return r33189;
}
double f(double a, double b, double c) {
double r33190 = b;
double r33191 = -1.3355057769721441e+154;
bool r33192 = r33190 <= r33191;
double r33193 = 0.0;
bool r33194 = r33190 >= r33193;
double r33195 = 2.0;
double r33196 = c;
double r33197 = r33195 * r33196;
double r33198 = -r33190;
double r33199 = a;
double r33200 = r33196 / r33190;
double r33201 = r33199 * r33200;
double r33202 = r33195 * r33201;
double r33203 = r33190 - r33202;
double r33204 = r33198 - r33203;
double r33205 = r33197 / r33204;
double r33206 = r33199 * r33196;
double r33207 = r33206 / r33190;
double r33208 = r33195 * r33207;
double r33209 = 2.0;
double r33210 = r33209 * r33190;
double r33211 = r33208 - r33210;
double r33212 = r33195 * r33199;
double r33213 = r33211 / r33212;
double r33214 = r33194 ? r33205 : r33213;
double r33215 = 2.9036145062364975e+96;
bool r33216 = r33190 <= r33215;
double r33217 = r33190 * r33190;
double r33218 = 4.0;
double r33219 = r33218 * r33199;
double r33220 = r33219 * r33196;
double r33221 = r33217 - r33220;
double r33222 = sqrt(r33221);
double r33223 = sqrt(r33222);
double r33224 = r33223 * r33223;
double r33225 = r33198 - r33224;
double r33226 = r33197 / r33225;
double r33227 = r33198 + r33222;
double r33228 = r33227 / r33212;
double r33229 = r33194 ? r33226 : r33228;
double r33230 = r33198 + r33224;
double r33231 = r33230 / r33212;
double r33232 = r33194 ? r33205 : r33231;
double r33233 = r33216 ? r33229 : r33232;
double r33234 = r33192 ? r33214 : r33233;
return r33234;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3355057769721441e+154Initial program 64.0
Taylor expanded around inf 64.0
rmApplied *-un-lft-identity64.0
Applied times-frac64.0
Simplified64.0
Taylor expanded around -inf 11.9
if -1.3355057769721441e+154 < b < 2.9036145062364975e+96Initial program 8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.8
if 2.9036145062364975e+96 < b Initial program 29.8
Taylor expanded around inf 6.4
rmApplied *-un-lft-identity6.4
Applied times-frac2.6
Simplified2.6
rmApplied add-sqr-sqrt2.6
Applied sqrt-prod2.6
Final simplification7.6
herbie shell --seed 2019297
(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))))