\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.869662346631121401645595393947635525169 \cdot 10^{101}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 7.455592343308264166675918758902222662503 \cdot 10^{-170}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r120970 = b;
double r120971 = -r120970;
double r120972 = r120970 * r120970;
double r120973 = 4.0;
double r120974 = a;
double r120975 = c;
double r120976 = r120974 * r120975;
double r120977 = r120973 * r120976;
double r120978 = r120972 - r120977;
double r120979 = sqrt(r120978);
double r120980 = r120971 - r120979;
double r120981 = 2.0;
double r120982 = r120981 * r120974;
double r120983 = r120980 / r120982;
return r120983;
}
double f(double a, double b, double c) {
double r120984 = b;
double r120985 = -1.8696623466311214e+101;
bool r120986 = r120984 <= r120985;
double r120987 = -1.0;
double r120988 = c;
double r120989 = r120988 / r120984;
double r120990 = r120987 * r120989;
double r120991 = 7.455592343308264e-170;
bool r120992 = r120984 <= r120991;
double r120993 = 2.0;
double r120994 = r120993 * r120988;
double r120995 = -r120984;
double r120996 = r120984 * r120984;
double r120997 = 4.0;
double r120998 = a;
double r120999 = r120998 * r120988;
double r121000 = r120997 * r120999;
double r121001 = r120996 - r121000;
double r121002 = sqrt(r121001);
double r121003 = r120995 + r121002;
double r121004 = r120994 / r121003;
double r121005 = 1.0;
double r121006 = r120984 / r120998;
double r121007 = r120989 - r121006;
double r121008 = r121005 * r121007;
double r121009 = r120992 ? r121004 : r121008;
double r121010 = r120986 ? r120990 : r121009;
return r121010;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 21.1 |
| Herbie | 11.3 |
if b < -1.8696623466311214e+101Initial program 59.8
Taylor expanded around -inf 2.5
if -1.8696623466311214e+101 < b < 7.455592343308264e-170Initial program 28.9
rmApplied flip--29.1
Simplified16.7
rmApplied div-inv16.7
rmApplied associate-*l/16.2
Simplified16.1
Taylor expanded around 0 11.1
if 7.455592343308264e-170 < b Initial program 23.0
Taylor expanded around inf 17.1
Simplified17.1
Final simplification11.3
herbie shell --seed 2019323 +o rules:numerics
(FPCore (a b c)
:name "The quadratic formula (r2)"
:precision binary64
:herbie-target
(if (< b 0.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)))