\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 -5.3248915655872564 \cdot 10^{+79}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 4.2796532586596585 \cdot 10^{-91}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)}\right) \cdot \frac{\frac{1}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r3559837 = b;
double r3559838 = -r3559837;
double r3559839 = r3559837 * r3559837;
double r3559840 = 4.0;
double r3559841 = a;
double r3559842 = r3559840 * r3559841;
double r3559843 = c;
double r3559844 = r3559842 * r3559843;
double r3559845 = r3559839 - r3559844;
double r3559846 = sqrt(r3559845);
double r3559847 = r3559838 + r3559846;
double r3559848 = 2.0;
double r3559849 = r3559848 * r3559841;
double r3559850 = r3559847 / r3559849;
return r3559850;
}
double f(double a, double b, double c) {
double r3559851 = b;
double r3559852 = -5.3248915655872564e+79;
bool r3559853 = r3559851 <= r3559852;
double r3559854 = c;
double r3559855 = r3559854 / r3559851;
double r3559856 = a;
double r3559857 = r3559851 / r3559856;
double r3559858 = r3559855 - r3559857;
double r3559859 = 4.2796532586596585e-91;
bool r3559860 = r3559851 <= r3559859;
double r3559861 = -r3559851;
double r3559862 = r3559851 * r3559851;
double r3559863 = 4.0;
double r3559864 = r3559863 * r3559856;
double r3559865 = r3559854 * r3559864;
double r3559866 = r3559862 - r3559865;
double r3559867 = sqrt(r3559866);
double r3559868 = r3559861 + r3559867;
double r3559869 = 0.5;
double r3559870 = r3559869 / r3559856;
double r3559871 = r3559868 * r3559870;
double r3559872 = -r3559855;
double r3559873 = r3559860 ? r3559871 : r3559872;
double r3559874 = r3559853 ? r3559858 : r3559873;
return r3559874;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.7 |
|---|---|
| Target | 20.5 |
| Herbie | 10.2 |
if b < -5.3248915655872564e+79Initial program 41.1
rmApplied div-inv41.2
Simplified41.2
Taylor expanded around -inf 4.6
if -5.3248915655872564e+79 < b < 4.2796532586596585e-91Initial program 13.0
rmApplied div-inv13.1
Simplified13.1
if 4.2796532586596585e-91 < b Initial program 52.0
rmApplied div-inv52.0
Simplified52.0
Taylor expanded around inf 9.6
Simplified9.6
Final simplification10.2
herbie shell --seed 2019135
(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)))