\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 -1.4266250849096228 \cdot 10^{-56}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 2.2373425340727037 \cdot 10^{+98}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b + a \cdot \left(-4 \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r2704407 = b;
double r2704408 = -r2704407;
double r2704409 = r2704407 * r2704407;
double r2704410 = 4.0;
double r2704411 = a;
double r2704412 = c;
double r2704413 = r2704411 * r2704412;
double r2704414 = r2704410 * r2704413;
double r2704415 = r2704409 - r2704414;
double r2704416 = sqrt(r2704415);
double r2704417 = r2704408 - r2704416;
double r2704418 = 2.0;
double r2704419 = r2704418 * r2704411;
double r2704420 = r2704417 / r2704419;
return r2704420;
}
double f(double a, double b, double c) {
double r2704421 = b;
double r2704422 = -1.4266250849096228e-56;
bool r2704423 = r2704421 <= r2704422;
double r2704424 = c;
double r2704425 = r2704424 / r2704421;
double r2704426 = -r2704425;
double r2704427 = 2.2373425340727037e+98;
bool r2704428 = r2704421 <= r2704427;
double r2704429 = 1.0;
double r2704430 = 2.0;
double r2704431 = a;
double r2704432 = r2704430 * r2704431;
double r2704433 = -r2704421;
double r2704434 = r2704421 * r2704421;
double r2704435 = -4.0;
double r2704436 = r2704435 * r2704424;
double r2704437 = r2704431 * r2704436;
double r2704438 = r2704434 + r2704437;
double r2704439 = sqrt(r2704438);
double r2704440 = r2704433 - r2704439;
double r2704441 = r2704432 / r2704440;
double r2704442 = r2704429 / r2704441;
double r2704443 = r2704421 / r2704431;
double r2704444 = r2704425 - r2704443;
double r2704445 = r2704428 ? r2704442 : r2704444;
double r2704446 = r2704423 ? r2704426 : r2704445;
return r2704446;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 32.5 |
|---|---|
| Target | 20.0 |
| Herbie | 9.9 |
if b < -1.4266250849096228e-56Initial program 52.5
rmApplied sub-neg52.5
Simplified52.5
Taylor expanded around -inf 8.3
Simplified8.3
if -1.4266250849096228e-56 < b < 2.2373425340727037e+98Initial program 12.7
rmApplied sub-neg12.7
Simplified12.8
rmApplied *-un-lft-identity12.8
Applied *-un-lft-identity12.8
Applied distribute-rgt-neg-in12.8
Applied distribute-lft-out--12.8
Applied associate-/l*12.9
if 2.2373425340727037e+98 < b Initial program 43.2
rmApplied sub-neg43.2
Simplified43.2
Taylor expanded around inf 4.9
Final simplification9.9
herbie shell --seed 2019149
(FPCore (a b c)
:name "The quadratic formula (r2)"
:herbie-target
(if (< b 0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))