\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -3.8424248185280593 \cdot 10^{-34}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 9.6230204738986831 \cdot 10^{86}:\\
\;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r79476 = b;
double r79477 = -r79476;
double r79478 = r79476 * r79476;
double r79479 = 4.0;
double r79480 = a;
double r79481 = c;
double r79482 = r79480 * r79481;
double r79483 = r79479 * r79482;
double r79484 = r79478 - r79483;
double r79485 = sqrt(r79484);
double r79486 = r79477 - r79485;
double r79487 = 2.0;
double r79488 = r79487 * r79480;
double r79489 = r79486 / r79488;
return r79489;
}
double f(double a, double b, double c) {
double r79490 = b;
double r79491 = -3.8424248185280593e-34;
bool r79492 = r79490 <= r79491;
double r79493 = -1.0;
double r79494 = c;
double r79495 = r79494 / r79490;
double r79496 = r79493 * r79495;
double r79497 = 9.623020473898683e+86;
bool r79498 = r79490 <= r79497;
double r79499 = -r79490;
double r79500 = r79490 * r79490;
double r79501 = 4.0;
double r79502 = a;
double r79503 = r79502 * r79494;
double r79504 = r79501 * r79503;
double r79505 = r79500 - r79504;
double r79506 = sqrt(r79505);
double r79507 = r79499 - r79506;
double r79508 = 1.0;
double r79509 = 2.0;
double r79510 = r79509 * r79502;
double r79511 = r79508 / r79510;
double r79512 = r79507 * r79511;
double r79513 = -2.0;
double r79514 = r79513 * r79490;
double r79515 = r79514 / r79510;
double r79516 = r79498 ? r79512 : r79515;
double r79517 = r79492 ? r79496 : r79516;
return r79517;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 21.0 |
| Herbie | 9.9 |
if b < -3.8424248185280593e-34Initial program 54.2
Taylor expanded around -inf 7.1
if -3.8424248185280593e-34 < b < 9.623020473898683e+86Initial program 13.9
rmApplied div-inv14.0
if 9.623020473898683e+86 < b Initial program 45.6
rmApplied flip--63.0
Simplified62.2
Simplified62.2
Taylor expanded around 0 4.2
Final simplification9.9
herbie shell --seed 2019199
(FPCore (a b c)
:name "The quadratic formula (r2)"
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))