\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -3.710887557865060611891812934492943223731 \cdot 10^{138}:\\
\;\;\;\;\frac{\mathsf{fma}\left(-2, \frac{b}{a}, \frac{c}{b} \cdot 2\right)}{2}\\
\mathbf{elif}\;b \le 4.626043257219637986942022736183111936335 \cdot 10^{-62}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot c\right) \cdot a}}{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 r2706263 = b;
double r2706264 = -r2706263;
double r2706265 = r2706263 * r2706263;
double r2706266 = 4.0;
double r2706267 = a;
double r2706268 = r2706266 * r2706267;
double r2706269 = c;
double r2706270 = r2706268 * r2706269;
double r2706271 = r2706265 - r2706270;
double r2706272 = sqrt(r2706271);
double r2706273 = r2706264 + r2706272;
double r2706274 = 2.0;
double r2706275 = r2706274 * r2706267;
double r2706276 = r2706273 / r2706275;
return r2706276;
}
double f(double a, double b, double c) {
double r2706277 = b;
double r2706278 = -3.7108875578650606e+138;
bool r2706279 = r2706277 <= r2706278;
double r2706280 = -2.0;
double r2706281 = a;
double r2706282 = r2706277 / r2706281;
double r2706283 = c;
double r2706284 = r2706283 / r2706277;
double r2706285 = 2.0;
double r2706286 = r2706284 * r2706285;
double r2706287 = fma(r2706280, r2706282, r2706286);
double r2706288 = r2706287 / r2706285;
double r2706289 = 4.626043257219638e-62;
bool r2706290 = r2706277 <= r2706289;
double r2706291 = r2706277 * r2706277;
double r2706292 = 4.0;
double r2706293 = r2706292 * r2706283;
double r2706294 = r2706293 * r2706281;
double r2706295 = r2706291 - r2706294;
double r2706296 = sqrt(r2706295);
double r2706297 = r2706296 / r2706281;
double r2706298 = r2706297 - r2706282;
double r2706299 = r2706298 / r2706285;
double r2706300 = -2.0;
double r2706301 = r2706300 * r2706284;
double r2706302 = r2706301 / r2706285;
double r2706303 = r2706290 ? r2706299 : r2706302;
double r2706304 = r2706279 ? r2706288 : r2706303;
return r2706304;
}




Bits error versus a




Bits error versus b




Bits error versus c
| Original | 34.2 |
|---|---|
| Target | 21.0 |
| Herbie | 9.5 |
if b < -3.7108875578650606e+138Initial program 58.5
Simplified58.5
Taylor expanded around -inf 2.0
Simplified2.0
if -3.7108875578650606e+138 < b < 4.626043257219638e-62Initial program 12.3
Simplified12.3
rmApplied div-sub12.3
if 4.626043257219638e-62 < b Initial program 53.7
Simplified53.7
Taylor expanded around inf 8.5
Final simplification9.5
herbie shell --seed 2019174 +o rules:numerics
(FPCore (a b c)
:name "The quadratic formula (r1)"
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))