\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 -3.263941314600607 \cdot 10^{+152}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 1.8378252714625124 \cdot 10^{-19}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - b}{\frac{a}{\frac{1}{2}}}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1567612 = b;
double r1567613 = -r1567612;
double r1567614 = r1567612 * r1567612;
double r1567615 = 4.0;
double r1567616 = a;
double r1567617 = r1567615 * r1567616;
double r1567618 = c;
double r1567619 = r1567617 * r1567618;
double r1567620 = r1567614 - r1567619;
double r1567621 = sqrt(r1567620);
double r1567622 = r1567613 + r1567621;
double r1567623 = 2.0;
double r1567624 = r1567623 * r1567616;
double r1567625 = r1567622 / r1567624;
return r1567625;
}
double f(double a, double b, double c) {
double r1567626 = b;
double r1567627 = -3.263941314600607e+152;
bool r1567628 = r1567626 <= r1567627;
double r1567629 = c;
double r1567630 = r1567629 / r1567626;
double r1567631 = a;
double r1567632 = r1567626 / r1567631;
double r1567633 = r1567630 - r1567632;
double r1567634 = 1.8378252714625124e-19;
bool r1567635 = r1567626 <= r1567634;
double r1567636 = r1567626 * r1567626;
double r1567637 = 4.0;
double r1567638 = r1567629 * r1567631;
double r1567639 = r1567637 * r1567638;
double r1567640 = r1567636 - r1567639;
double r1567641 = sqrt(r1567640);
double r1567642 = r1567641 - r1567626;
double r1567643 = 0.5;
double r1567644 = r1567631 / r1567643;
double r1567645 = r1567642 / r1567644;
double r1567646 = -r1567630;
double r1567647 = r1567635 ? r1567645 : r1567646;
double r1567648 = r1567628 ? r1567633 : r1567647;
return r1567648;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.3 |
|---|---|
| Target | 20.3 |
| Herbie | 10.3 |
if b < -3.263941314600607e+152Initial program 60.1
Simplified60.1
Taylor expanded around -inf 2.3
if -3.263941314600607e+152 < b < 1.8378252714625124e-19Initial program 14.1
Simplified14.2
rmApplied *-un-lft-identity14.2
Applied *-un-lft-identity14.2
Applied distribute-lft-out--14.2
Applied associate-/l*14.3
rmApplied div-inv14.3
Simplified14.2
if 1.8378252714625124e-19 < b Initial program 54.4
Simplified54.4
Taylor expanded around inf 7.0
Simplified7.0
Final simplification10.3
herbie shell --seed 2019128
(FPCore (a b c)
:name "The quadratic formula (r1)"
:herbie-target
(if (< b 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)))