\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 -0.1973887031618163923063491438369965180755:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}\\
\mathbf{elif}\;b \le -9.306481298545873158130971330448145488255 \cdot 10^{-305}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;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}\\
\mathbf{elif}\;b \le 2.730494439370032074747470763239053019705 \cdot 10^{75}:\\
\;\;\;\;\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}:\\
\;\;\;\;\log \left(e^{\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}}\right)\\
\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 r33217 = b;
double r33218 = 0.0;
bool r33219 = r33217 >= r33218;
double r33220 = 2.0;
double r33221 = c;
double r33222 = r33220 * r33221;
double r33223 = -r33217;
double r33224 = r33217 * r33217;
double r33225 = 4.0;
double r33226 = a;
double r33227 = r33225 * r33226;
double r33228 = r33227 * r33221;
double r33229 = r33224 - r33228;
double r33230 = sqrt(r33229);
double r33231 = r33223 - r33230;
double r33232 = r33222 / r33231;
double r33233 = r33223 + r33230;
double r33234 = r33220 * r33226;
double r33235 = r33233 / r33234;
double r33236 = r33219 ? r33232 : r33235;
return r33236;
}
double f(double a, double b, double c) {
double r33237 = b;
double r33238 = -0.1973887031618164;
bool r33239 = r33237 <= r33238;
double r33240 = 0.0;
bool r33241 = r33237 >= r33240;
double r33242 = 2.0;
double r33243 = c;
double r33244 = r33242 * r33243;
double r33245 = -r33237;
double r33246 = r33237 * r33237;
double r33247 = 4.0;
double r33248 = a;
double r33249 = r33247 * r33248;
double r33250 = r33249 * r33243;
double r33251 = r33246 - r33250;
double r33252 = cbrt(r33251);
double r33253 = fabs(r33252);
double r33254 = sqrt(r33252);
double r33255 = r33253 * r33254;
double r33256 = r33245 - r33255;
double r33257 = r33244 / r33256;
double r33258 = 1.0;
double r33259 = r33243 / r33237;
double r33260 = r33237 / r33248;
double r33261 = r33259 - r33260;
double r33262 = r33258 * r33261;
double r33263 = r33241 ? r33257 : r33262;
double r33264 = -9.306481298545873e-305;
bool r33265 = r33237 <= r33264;
double r33266 = r33248 * r33243;
double r33267 = r33266 / r33237;
double r33268 = r33242 * r33267;
double r33269 = r33237 - r33268;
double r33270 = r33245 - r33269;
double r33271 = r33244 / r33270;
double r33272 = sqrt(r33251);
double r33273 = r33245 + r33272;
double r33274 = r33242 * r33248;
double r33275 = r33273 / r33274;
double r33276 = r33241 ? r33271 : r33275;
double r33277 = 2.730494439370032e+75;
bool r33278 = r33237 <= r33277;
double r33279 = r33245 - r33272;
double r33280 = r33244 / r33279;
double r33281 = r33268 - r33237;
double r33282 = r33245 + r33281;
double r33283 = r33282 / r33274;
double r33284 = exp(r33283);
double r33285 = log(r33284);
double r33286 = r33241 ? r33280 : r33285;
double r33287 = r33278 ? r33286 : r33276;
double r33288 = r33265 ? r33276 : r33287;
double r33289 = r33239 ? r33263 : r33288;
return r33289;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -0.1973887031618164Initial program 32.2
Taylor expanded around -inf 11.9
Taylor expanded around 0 8.0
Simplified8.0
rmApplied add-cube-cbrt8.0
Applied sqrt-prod8.0
Simplified8.0
if -0.1973887031618164 < b < -9.306481298545873e-305 or 2.730494439370032e+75 < b Initial program 20.7
Taylor expanded around inf 8.8
if -9.306481298545873e-305 < b < 2.730494439370032e+75Initial program 9.3
Taylor expanded around -inf 9.8
rmApplied add-log-exp9.8
Final simplification8.9
herbie shell --seed 2019308
(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))))