\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 r5091674 = b;
double r5091675 = -r5091674;
double r5091676 = r5091674 * r5091674;
double r5091677 = 4.0;
double r5091678 = a;
double r5091679 = r5091677 * r5091678;
double r5091680 = c;
double r5091681 = r5091679 * r5091680;
double r5091682 = r5091676 - r5091681;
double r5091683 = sqrt(r5091682);
double r5091684 = r5091675 + r5091683;
double r5091685 = 2.0;
double r5091686 = r5091685 * r5091678;
double r5091687 = r5091684 / r5091686;
return r5091687;
}
double f(double a, double b, double c) {
double r5091688 = b;
double r5091689 = -7.397994825724217e+150;
bool r5091690 = r5091688 <= r5091689;
double r5091691 = c;
double r5091692 = r5091691 / r5091688;
double r5091693 = a;
double r5091694 = r5091688 / r5091693;
double r5091695 = r5091692 - r5091694;
double r5091696 = 2.0;
double r5091697 = r5091695 * r5091696;
double r5091698 = r5091697 / r5091696;
double r5091699 = 1.2158870426682226e-82;
bool r5091700 = r5091688 <= r5091699;
double r5091701 = 1.0;
double r5091702 = r5091688 * r5091688;
double r5091703 = r5091693 * r5091691;
double r5091704 = 4.0;
double r5091705 = r5091703 * r5091704;
double r5091706 = r5091702 - r5091705;
double r5091707 = sqrt(r5091706);
double r5091708 = r5091693 / r5091707;
double r5091709 = r5091701 / r5091708;
double r5091710 = r5091709 - r5091694;
double r5091711 = r5091710 / r5091696;
double r5091712 = -2.0;
double r5091713 = r5091712 * r5091692;
double r5091714 = r5091713 / r5091696;
double r5091715 = r5091700 ? r5091711 : r5091714;
double r5091716 = r5091690 ? r5091698 : r5091715;
return r5091716;
}




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)))