\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 -4.82289647433212 \cdot 10^{+153}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 3.289226058156428 \cdot 10^{-70}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - c \cdot \left(4 \cdot a\right)}}{a} - \frac{b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r2290075 = b;
double r2290076 = -r2290075;
double r2290077 = r2290075 * r2290075;
double r2290078 = 4.0;
double r2290079 = a;
double r2290080 = c;
double r2290081 = r2290079 * r2290080;
double r2290082 = r2290078 * r2290081;
double r2290083 = r2290077 - r2290082;
double r2290084 = sqrt(r2290083);
double r2290085 = r2290076 + r2290084;
double r2290086 = 2.0;
double r2290087 = r2290086 * r2290079;
double r2290088 = r2290085 / r2290087;
return r2290088;
}
double f(double a, double b, double c) {
double r2290089 = b;
double r2290090 = -4.82289647433212e+153;
bool r2290091 = r2290089 <= r2290090;
double r2290092 = c;
double r2290093 = r2290092 / r2290089;
double r2290094 = a;
double r2290095 = r2290089 / r2290094;
double r2290096 = r2290093 - r2290095;
double r2290097 = 2.0;
double r2290098 = r2290096 * r2290097;
double r2290099 = r2290098 / r2290097;
double r2290100 = 3.289226058156428e-70;
bool r2290101 = r2290089 <= r2290100;
double r2290102 = r2290089 * r2290089;
double r2290103 = 4.0;
double r2290104 = r2290103 * r2290094;
double r2290105 = r2290092 * r2290104;
double r2290106 = r2290102 - r2290105;
double r2290107 = sqrt(r2290106);
double r2290108 = r2290107 / r2290094;
double r2290109 = r2290108 - r2290095;
double r2290110 = r2290109 / r2290097;
double r2290111 = -2.0;
double r2290112 = r2290111 * r2290093;
double r2290113 = r2290112 / r2290097;
double r2290114 = r2290101 ? r2290110 : r2290113;
double r2290115 = r2290091 ? r2290099 : r2290114;
return r2290115;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.3 |
|---|---|
| Target | 20.7 |
| Herbie | 10.0 |
if b < -4.82289647433212e+153Initial program 60.9
Simplified60.9
rmApplied div-inv60.9
rmApplied associate-*r/60.9
Simplified60.9
Taylor expanded around -inf 2.3
Simplified2.3
if -4.82289647433212e+153 < b < 3.289226058156428e-70Initial program 12.4
Simplified12.4
rmApplied div-inv12.6
rmApplied associate-*r/12.4
Simplified12.4
rmApplied div-sub12.4
if 3.289226058156428e-70 < b Initial program 52.2
Simplified52.2
rmApplied div-inv52.2
rmApplied associate-*r/52.2
Simplified52.2
Taylor expanded around inf 9.1
Final simplification10.0
herbie shell --seed 2019142
(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)))