\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 -4.8993775207591446 \cdot 10^{+126}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a} \cdot \frac{1}{2}\right) - \frac{b}{2 \cdot a}\\
\mathbf{elif}\;b \le 2.6443485350724205 \cdot 10^{-92}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)}}{2 \cdot a} - \frac{b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r2561734 = b;
double r2561735 = -r2561734;
double r2561736 = r2561734 * r2561734;
double r2561737 = 4.0;
double r2561738 = a;
double r2561739 = c;
double r2561740 = r2561738 * r2561739;
double r2561741 = r2561737 * r2561740;
double r2561742 = r2561736 - r2561741;
double r2561743 = sqrt(r2561742);
double r2561744 = r2561735 + r2561743;
double r2561745 = 2.0;
double r2561746 = r2561745 * r2561738;
double r2561747 = r2561744 / r2561746;
return r2561747;
}
double f(double a, double b, double c) {
double r2561748 = b;
double r2561749 = -4.8993775207591446e+126;
bool r2561750 = r2561748 <= r2561749;
double r2561751 = c;
double r2561752 = r2561751 / r2561748;
double r2561753 = a;
double r2561754 = r2561748 / r2561753;
double r2561755 = 0.5;
double r2561756 = r2561754 * r2561755;
double r2561757 = r2561752 - r2561756;
double r2561758 = 2.0;
double r2561759 = r2561758 * r2561753;
double r2561760 = r2561748 / r2561759;
double r2561761 = r2561757 - r2561760;
double r2561762 = 2.6443485350724205e-92;
bool r2561763 = r2561748 <= r2561762;
double r2561764 = r2561748 * r2561748;
double r2561765 = 4.0;
double r2561766 = r2561753 * r2561765;
double r2561767 = r2561751 * r2561766;
double r2561768 = r2561764 - r2561767;
double r2561769 = sqrt(r2561768);
double r2561770 = r2561769 / r2561759;
double r2561771 = r2561770 - r2561760;
double r2561772 = -r2561752;
double r2561773 = r2561763 ? r2561771 : r2561772;
double r2561774 = r2561750 ? r2561761 : r2561773;
return r2561774;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.7 |
|---|---|
| Target | 20.5 |
| Herbie | 10.0 |
if b < -4.8993775207591446e+126Initial program 51.7
Simplified51.7
rmApplied div-sub51.7
Taylor expanded around -inf 3.5
if -4.8993775207591446e+126 < b < 2.6443485350724205e-92Initial program 12.3
Simplified12.2
rmApplied div-sub12.2
if 2.6443485350724205e-92 < b Initial program 51.9
Simplified52.0
rmApplied div-sub52.5
Taylor expanded around inf 9.6
Simplified9.6
Final simplification10.0
herbie shell --seed 2019135
(FPCore (a b c)
:name "quadp (p42, positive)"
: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)))