\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.8719024022082672 \cdot 10^{+146}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\
\mathbf{elif}\;b \le 3.0396083187725924 \cdot 10^{-273}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}\\
\mathbf{elif}\;b \le 5.724613295007455 \cdot 10^{+79}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r14671881 = b;
double r14671882 = -r14671881;
double r14671883 = r14671881 * r14671881;
double r14671884 = 4.0;
double r14671885 = a;
double r14671886 = c;
double r14671887 = r14671885 * r14671886;
double r14671888 = r14671884 * r14671887;
double r14671889 = r14671883 - r14671888;
double r14671890 = sqrt(r14671889);
double r14671891 = r14671882 - r14671890;
double r14671892 = 2.0;
double r14671893 = r14671892 * r14671885;
double r14671894 = r14671891 / r14671893;
return r14671894;
}
double f(double a, double b, double c) {
double r14671895 = b;
double r14671896 = -1.8719024022082672e+146;
bool r14671897 = r14671895 <= r14671896;
double r14671898 = 0.5;
double r14671899 = 4.0;
double r14671900 = c;
double r14671901 = r14671899 * r14671900;
double r14671902 = a;
double r14671903 = r14671900 / r14671895;
double r14671904 = r14671902 * r14671903;
double r14671905 = r14671904 - r14671895;
double r14671906 = 2.0;
double r14671907 = r14671905 * r14671906;
double r14671908 = r14671901 / r14671907;
double r14671909 = r14671898 * r14671908;
double r14671910 = 3.0396083187725924e-273;
bool r14671911 = r14671895 <= r14671910;
double r14671912 = r14671895 * r14671895;
double r14671913 = r14671902 * r14671901;
double r14671914 = r14671912 - r14671913;
double r14671915 = sqrt(r14671914);
double r14671916 = r14671915 - r14671895;
double r14671917 = r14671901 / r14671916;
double r14671918 = r14671898 * r14671917;
double r14671919 = 5.724613295007455e+79;
bool r14671920 = r14671895 <= r14671919;
double r14671921 = 1.0;
double r14671922 = r14671906 * r14671902;
double r14671923 = -r14671895;
double r14671924 = r14671902 * r14671900;
double r14671925 = r14671924 * r14671899;
double r14671926 = r14671912 - r14671925;
double r14671927 = sqrt(r14671926);
double r14671928 = r14671923 - r14671927;
double r14671929 = r14671922 / r14671928;
double r14671930 = r14671921 / r14671929;
double r14671931 = r14671895 / r14671902;
double r14671932 = r14671903 - r14671931;
double r14671933 = r14671920 ? r14671930 : r14671932;
double r14671934 = r14671911 ? r14671918 : r14671933;
double r14671935 = r14671897 ? r14671909 : r14671934;
return r14671935;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.1 |
|---|---|
| Target | 20.4 |
| Herbie | 6.7 |
if b < -1.8719024022082672e+146Initial program 62.0
rmApplied flip--62.0
Simplified36.8
rmApplied *-un-lft-identity36.8
Applied times-frac36.8
Simplified36.8
Simplified36.6
Taylor expanded around -inf 7.4
Simplified1.6
if -1.8719024022082672e+146 < b < 3.0396083187725924e-273Initial program 33.1
rmApplied flip--33.2
Simplified15.9
rmApplied *-un-lft-identity15.9
Applied times-frac15.9
Simplified15.9
Simplified8.8
if 3.0396083187725924e-273 < b < 5.724613295007455e+79Initial program 8.5
rmApplied *-un-lft-identity8.5
Applied *-un-lft-identity8.5
Applied distribute-rgt-neg-in8.5
Applied distribute-lft-out--8.5
Applied associate-/l*8.6
if 5.724613295007455e+79 < b Initial program 40.6
Taylor expanded around inf 4.7
Final simplification6.7
herbie shell --seed 2019125
(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)))