\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 -9.088000531423294 \cdot 10^{+152}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 9.354082991670835 \cdot 10^{-125}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}{a}}{2} - \frac{\frac{b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r2715751 = b;
double r2715752 = -r2715751;
double r2715753 = r2715751 * r2715751;
double r2715754 = 4.0;
double r2715755 = a;
double r2715756 = r2715754 * r2715755;
double r2715757 = c;
double r2715758 = r2715756 * r2715757;
double r2715759 = r2715753 - r2715758;
double r2715760 = sqrt(r2715759);
double r2715761 = r2715752 + r2715760;
double r2715762 = 2.0;
double r2715763 = r2715762 * r2715755;
double r2715764 = r2715761 / r2715763;
return r2715764;
}
double f(double a, double b, double c) {
double r2715765 = b;
double r2715766 = -9.088000531423294e+152;
bool r2715767 = r2715765 <= r2715766;
double r2715768 = c;
double r2715769 = r2715768 / r2715765;
double r2715770 = a;
double r2715771 = r2715765 / r2715770;
double r2715772 = r2715769 - r2715771;
double r2715773 = 9.354082991670835e-125;
bool r2715774 = r2715765 <= r2715773;
double r2715775 = r2715765 * r2715765;
double r2715776 = r2715768 * r2715770;
double r2715777 = 4.0;
double r2715778 = r2715776 * r2715777;
double r2715779 = r2715775 - r2715778;
double r2715780 = sqrt(r2715779);
double r2715781 = r2715780 / r2715770;
double r2715782 = 2.0;
double r2715783 = r2715781 / r2715782;
double r2715784 = r2715771 / r2715782;
double r2715785 = r2715783 - r2715784;
double r2715786 = -r2715769;
double r2715787 = r2715774 ? r2715785 : r2715786;
double r2715788 = r2715767 ? r2715772 : r2715787;
return r2715788;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 32.9 |
|---|---|
| Target | 20.3 |
| Herbie | 10.3 |
if b < -9.088000531423294e+152Initial program 60.4
Simplified60.4
Taylor expanded around -inf 1.5
if -9.088000531423294e+152 < b < 9.354082991670835e-125Initial program 10.9
Simplified10.9
rmApplied div-sub10.9
Applied div-sub10.9
if 9.354082991670835e-125 < b Initial program 49.8
Simplified49.8
Taylor expanded around inf 11.9
Simplified11.9
Final simplification10.3
herbie shell --seed 2019153
(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)))