\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 -2.1144981103869975 \cdot 10^{+131}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 4.5810084990875205 \cdot 10^{-68}:\\
\;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r3492023 = b;
double r3492024 = -r3492023;
double r3492025 = r3492023 * r3492023;
double r3492026 = 4.0;
double r3492027 = a;
double r3492028 = c;
double r3492029 = r3492027 * r3492028;
double r3492030 = r3492026 * r3492029;
double r3492031 = r3492025 - r3492030;
double r3492032 = sqrt(r3492031);
double r3492033 = r3492024 + r3492032;
double r3492034 = 2.0;
double r3492035 = r3492034 * r3492027;
double r3492036 = r3492033 / r3492035;
return r3492036;
}
double f(double a, double b, double c) {
double r3492037 = b;
double r3492038 = -2.1144981103869975e+131;
bool r3492039 = r3492037 <= r3492038;
double r3492040 = c;
double r3492041 = r3492040 / r3492037;
double r3492042 = a;
double r3492043 = r3492037 / r3492042;
double r3492044 = r3492041 - r3492043;
double r3492045 = 2.0;
double r3492046 = r3492044 * r3492045;
double r3492047 = r3492046 / r3492045;
double r3492048 = 4.5810084990875205e-68;
bool r3492049 = r3492037 <= r3492048;
double r3492050 = 1.0;
double r3492051 = r3492037 * r3492037;
double r3492052 = 4.0;
double r3492053 = r3492052 * r3492042;
double r3492054 = r3492053 * r3492040;
double r3492055 = r3492051 - r3492054;
double r3492056 = sqrt(r3492055);
double r3492057 = r3492056 - r3492037;
double r3492058 = r3492042 / r3492057;
double r3492059 = r3492050 / r3492058;
double r3492060 = r3492059 / r3492045;
double r3492061 = -2.0;
double r3492062 = r3492061 * r3492041;
double r3492063 = r3492062 / r3492045;
double r3492064 = r3492049 ? r3492060 : r3492063;
double r3492065 = r3492039 ? r3492047 : r3492064;
return r3492065;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.6 |
|---|---|
| Target | 21.0 |
| Herbie | 10.4 |
if b < -2.1144981103869975e+131Initial program 53.8
Simplified53.8
Taylor expanded around -inf 2.6
Simplified2.6
if -2.1144981103869975e+131 < b < 4.5810084990875205e-68Initial program 13.3
Simplified13.3
rmApplied clear-num13.5
if 4.5810084990875205e-68 < b Initial program 51.9
Simplified52.0
Taylor expanded around inf 9.3
Final simplification10.4
herbie shell --seed 2019163
(FPCore (a b c)
:name "quadp (p42, positive)"
: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)))