\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 -3.396811349079212 \cdot 10^{+61}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 1.3659668388152999 \cdot 10^{-67}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r2670060 = b;
double r2670061 = -r2670060;
double r2670062 = r2670060 * r2670060;
double r2670063 = 4.0;
double r2670064 = a;
double r2670065 = c;
double r2670066 = r2670064 * r2670065;
double r2670067 = r2670063 * r2670066;
double r2670068 = r2670062 - r2670067;
double r2670069 = sqrt(r2670068);
double r2670070 = r2670061 + r2670069;
double r2670071 = 2.0;
double r2670072 = r2670071 * r2670064;
double r2670073 = r2670070 / r2670072;
return r2670073;
}
double f(double a, double b, double c) {
double r2670074 = b;
double r2670075 = -3.396811349079212e+61;
bool r2670076 = r2670074 <= r2670075;
double r2670077 = c;
double r2670078 = r2670077 / r2670074;
double r2670079 = a;
double r2670080 = r2670074 / r2670079;
double r2670081 = r2670078 - r2670080;
double r2670082 = 1.3659668388152999e-67;
bool r2670083 = r2670074 <= r2670082;
double r2670084 = r2670074 * r2670074;
double r2670085 = 4.0;
double r2670086 = r2670079 * r2670085;
double r2670087 = r2670086 * r2670077;
double r2670088 = r2670084 - r2670087;
double r2670089 = sqrt(r2670088);
double r2670090 = r2670089 - r2670074;
double r2670091 = 2.0;
double r2670092 = r2670079 * r2670091;
double r2670093 = r2670090 / r2670092;
double r2670094 = -r2670078;
double r2670095 = r2670083 ? r2670093 : r2670094;
double r2670096 = r2670076 ? r2670081 : r2670095;
return r2670096;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.6 |
|---|---|
| Target | 20.8 |
| Herbie | 9.8 |
if b < -3.396811349079212e+61Initial program 37.6
Simplified37.6
Taylor expanded around -inf 4.3
if -3.396811349079212e+61 < b < 1.3659668388152999e-67Initial program 13.9
Simplified13.9
if 1.3659668388152999e-67 < b Initial program 53.0
Simplified53.0
rmApplied div-inv53.0
Simplified53.0
Taylor expanded around inf 8.1
Simplified8.1
Final simplification9.8
herbie shell --seed 2019130
(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)))