\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.1783617127509567 \cdot 10^{+133}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 1.1310477508076152 \cdot 10^{-72}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r2235685 = b;
double r2235686 = -r2235685;
double r2235687 = r2235685 * r2235685;
double r2235688 = 4.0;
double r2235689 = a;
double r2235690 = c;
double r2235691 = r2235689 * r2235690;
double r2235692 = r2235688 * r2235691;
double r2235693 = r2235687 - r2235692;
double r2235694 = sqrt(r2235693);
double r2235695 = r2235686 + r2235694;
double r2235696 = 2.0;
double r2235697 = r2235696 * r2235689;
double r2235698 = r2235695 / r2235697;
return r2235698;
}
double f(double a, double b, double c) {
double r2235699 = b;
double r2235700 = -1.1783617127509567e+133;
bool r2235701 = r2235699 <= r2235700;
double r2235702 = c;
double r2235703 = r2235702 / r2235699;
double r2235704 = a;
double r2235705 = r2235699 / r2235704;
double r2235706 = r2235703 - r2235705;
double r2235707 = 1.1310477508076152e-72;
bool r2235708 = r2235699 <= r2235707;
double r2235709 = r2235699 * r2235699;
double r2235710 = 4.0;
double r2235711 = r2235704 * r2235710;
double r2235712 = r2235711 * r2235702;
double r2235713 = r2235709 - r2235712;
double r2235714 = sqrt(r2235713);
double r2235715 = r2235714 - r2235699;
double r2235716 = 2.0;
double r2235717 = r2235704 * r2235716;
double r2235718 = r2235715 / r2235717;
double r2235719 = -r2235703;
double r2235720 = r2235708 ? r2235718 : r2235719;
double r2235721 = r2235701 ? r2235706 : r2235720;
return r2235721;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.1 |
|---|---|
| Target | 20.3 |
| Herbie | 9.3 |
if b < -1.1783617127509567e+133Initial program 54.0
Simplified54.0
Taylor expanded around -inf 2.6
if -1.1783617127509567e+133 < b < 1.1310477508076152e-72Initial program 11.6
Simplified11.6
if 1.1310477508076152e-72 < b Initial program 52.6
Simplified52.6
Taylor expanded around inf 8.7
Simplified8.7
Final simplification9.3
herbie shell --seed 2019137
(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)))