\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -1.3358786167585806 \cdot 10^{154}:\\
\;\;\;\;\frac{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2}}{a}\\
\mathbf{elif}\;b \le 1.94263717460376656 \cdot 10^{24}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-2 \cdot \frac{a \cdot c}{b}}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r155345 = b;
double r155346 = -r155345;
double r155347 = r155345 * r155345;
double r155348 = 4.0;
double r155349 = a;
double r155350 = r155348 * r155349;
double r155351 = c;
double r155352 = r155350 * r155351;
double r155353 = r155347 - r155352;
double r155354 = sqrt(r155353);
double r155355 = r155346 + r155354;
double r155356 = 2.0;
double r155357 = r155356 * r155349;
double r155358 = r155355 / r155357;
return r155358;
}
double f(double a, double b, double c) {
double r155359 = b;
double r155360 = -1.3358786167585806e+154;
bool r155361 = r155359 <= r155360;
double r155362 = 2.0;
double r155363 = a;
double r155364 = c;
double r155365 = r155363 * r155364;
double r155366 = r155365 / r155359;
double r155367 = r155362 * r155366;
double r155368 = 2.0;
double r155369 = r155368 * r155359;
double r155370 = r155367 - r155369;
double r155371 = r155370 / r155362;
double r155372 = r155371 / r155363;
double r155373 = 1.9426371746037666e+24;
bool r155374 = r155359 <= r155373;
double r155375 = r155359 * r155359;
double r155376 = 4.0;
double r155377 = r155376 * r155363;
double r155378 = r155377 * r155364;
double r155379 = r155375 - r155378;
double r155380 = sqrt(r155379);
double r155381 = r155380 - r155359;
double r155382 = r155381 / r155362;
double r155383 = r155382 / r155363;
double r155384 = -2.0;
double r155385 = r155384 * r155366;
double r155386 = r155385 / r155362;
double r155387 = r155386 / r155363;
double r155388 = r155374 ? r155383 : r155387;
double r155389 = r155361 ? r155372 : r155388;
return r155389;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 21.2 |
| Herbie | 15.1 |
if b < -1.3358786167585806e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 9.8
if -1.3358786167585806e+154 < b < 1.9426371746037666e+24Initial program 16.1
Simplified16.1
if 1.9426371746037666e+24 < b Initial program 56.4
Simplified56.4
Taylor expanded around inf 15.2
Final simplification15.1
herbie shell --seed 2020046
(FPCore (a b c)
:name "The quadratic formula (r1)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))