\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 -6239046376.848015:\\
\;\;\;\;\frac{-c}{b}\\
\mathbf{elif}\;b \le -2.396838732613953 \cdot 10^{-306}:\\
\;\;\;\;\frac{\frac{\frac{1}{2}}{a} \cdot \left(\left(c \cdot 4\right) \cdot a\right)}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}}\\
\mathbf{elif}\;b \le 9.179168538250646 \cdot 10^{+63}:\\
\;\;\;\;\frac{\frac{1}{2}}{a} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{a}\\
\end{array}double f(double a, double b, double c) {
double r3421775 = b;
double r3421776 = -r3421775;
double r3421777 = r3421775 * r3421775;
double r3421778 = 4.0;
double r3421779 = a;
double r3421780 = c;
double r3421781 = r3421779 * r3421780;
double r3421782 = r3421778 * r3421781;
double r3421783 = r3421777 - r3421782;
double r3421784 = sqrt(r3421783);
double r3421785 = r3421776 - r3421784;
double r3421786 = 2.0;
double r3421787 = r3421786 * r3421779;
double r3421788 = r3421785 / r3421787;
return r3421788;
}
double f(double a, double b, double c) {
double r3421789 = b;
double r3421790 = -6239046376.848015;
bool r3421791 = r3421789 <= r3421790;
double r3421792 = c;
double r3421793 = -r3421792;
double r3421794 = r3421793 / r3421789;
double r3421795 = -2.396838732613953e-306;
bool r3421796 = r3421789 <= r3421795;
double r3421797 = 0.5;
double r3421798 = a;
double r3421799 = r3421797 / r3421798;
double r3421800 = 4.0;
double r3421801 = r3421792 * r3421800;
double r3421802 = r3421801 * r3421798;
double r3421803 = r3421799 * r3421802;
double r3421804 = -r3421789;
double r3421805 = r3421789 * r3421789;
double r3421806 = r3421792 * r3421798;
double r3421807 = r3421800 * r3421806;
double r3421808 = r3421805 - r3421807;
double r3421809 = sqrt(r3421808);
double r3421810 = r3421804 + r3421809;
double r3421811 = r3421803 / r3421810;
double r3421812 = 9.179168538250646e+63;
bool r3421813 = r3421789 <= r3421812;
double r3421814 = r3421804 - r3421809;
double r3421815 = r3421799 * r3421814;
double r3421816 = r3421804 / r3421798;
double r3421817 = r3421813 ? r3421815 : r3421816;
double r3421818 = r3421796 ? r3421811 : r3421817;
double r3421819 = r3421791 ? r3421794 : r3421818;
return r3421819;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.7 |
|---|---|
| Target | 20.7 |
| Herbie | 9.0 |
if b < -6239046376.848015Initial program 55.7
Taylor expanded around -inf 5.1
Simplified5.1
if -6239046376.848015 < b < -2.396838732613953e-306Initial program 27.2
rmApplied clear-num27.2
rmApplied flip--27.3
Applied associate-/r/27.3
Applied associate-/r*27.3
Simplified17.2
if -2.396838732613953e-306 < b < 9.179168538250646e+63Initial program 9.1
rmApplied clear-num9.3
rmApplied associate-/r/9.3
Simplified9.3
if 9.179168538250646e+63 < b Initial program 37.8
rmApplied clear-num37.9
Taylor expanded around 0 6.1
Simplified6.1
Final simplification9.0
herbie shell --seed 2019146
(FPCore (a b c)
:name "The quadratic formula (r2)"
:herbie-target
(if (< b 0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))