\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 -7.397994825724217 \cdot 10^{+150}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 1.2158870426682226 \cdot 10^{-82}:\\
\;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}} - \frac{b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r4009682 = b;
double r4009683 = -r4009682;
double r4009684 = r4009682 * r4009682;
double r4009685 = 4.0;
double r4009686 = a;
double r4009687 = r4009685 * r4009686;
double r4009688 = c;
double r4009689 = r4009687 * r4009688;
double r4009690 = r4009684 - r4009689;
double r4009691 = sqrt(r4009690);
double r4009692 = r4009683 + r4009691;
double r4009693 = 2.0;
double r4009694 = r4009693 * r4009686;
double r4009695 = r4009692 / r4009694;
return r4009695;
}
double f(double a, double b, double c) {
double r4009696 = b;
double r4009697 = -7.397994825724217e+150;
bool r4009698 = r4009696 <= r4009697;
double r4009699 = c;
double r4009700 = r4009699 / r4009696;
double r4009701 = a;
double r4009702 = r4009696 / r4009701;
double r4009703 = r4009700 - r4009702;
double r4009704 = 2.0;
double r4009705 = r4009703 * r4009704;
double r4009706 = r4009705 / r4009704;
double r4009707 = 1.2158870426682226e-82;
bool r4009708 = r4009696 <= r4009707;
double r4009709 = 1.0;
double r4009710 = r4009696 * r4009696;
double r4009711 = r4009701 * r4009699;
double r4009712 = 4.0;
double r4009713 = r4009711 * r4009712;
double r4009714 = r4009710 - r4009713;
double r4009715 = sqrt(r4009714);
double r4009716 = r4009701 / r4009715;
double r4009717 = r4009709 / r4009716;
double r4009718 = r4009717 - r4009702;
double r4009719 = r4009718 / r4009704;
double r4009720 = -2.0;
double r4009721 = r4009720 * r4009700;
double r4009722 = r4009721 / r4009704;
double r4009723 = r4009708 ? r4009719 : r4009722;
double r4009724 = r4009698 ? r4009706 : r4009723;
return r4009724;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.2 |
|---|---|
| Target | 20.6 |
| Herbie | 10.0 |
if b < -7.397994825724217e+150Initial program 59.1
Simplified59.1
Taylor expanded around -inf 2.2
Simplified2.2
if -7.397994825724217e+150 < b < 1.2158870426682226e-82Initial program 11.8
Simplified11.7
rmApplied div-sub11.7
rmApplied clear-num11.8
if 1.2158870426682226e-82 < b Initial program 52.3
Simplified52.3
Taylor expanded around inf 9.9
Final simplification10.0
herbie shell --seed 2019162
(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)))