\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 -7.397994825724217 \cdot 10^{+150}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 1.2158870426682226 \cdot 10^{-82}:\\
\;\;\;\;\frac{\frac{1}{\frac{a}{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -4\right)} - b}}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r4730335 = b;
double r4730336 = -r4730335;
double r4730337 = r4730335 * r4730335;
double r4730338 = 4.0;
double r4730339 = a;
double r4730340 = r4730338 * r4730339;
double r4730341 = c;
double r4730342 = r4730340 * r4730341;
double r4730343 = r4730337 - r4730342;
double r4730344 = sqrt(r4730343);
double r4730345 = r4730336 + r4730344;
double r4730346 = 2.0;
double r4730347 = r4730346 * r4730339;
double r4730348 = r4730345 / r4730347;
return r4730348;
}
double f(double a, double b, double c) {
double r4730349 = b;
double r4730350 = -7.397994825724217e+150;
bool r4730351 = r4730349 <= r4730350;
double r4730352 = c;
double r4730353 = r4730352 / r4730349;
double r4730354 = a;
double r4730355 = r4730349 / r4730354;
double r4730356 = r4730353 - r4730355;
double r4730357 = 2.0;
double r4730358 = r4730356 * r4730357;
double r4730359 = r4730358 / r4730357;
double r4730360 = 1.2158870426682226e-82;
bool r4730361 = r4730349 <= r4730360;
double r4730362 = 1.0;
double r4730363 = r4730354 * r4730352;
double r4730364 = -4.0;
double r4730365 = r4730363 * r4730364;
double r4730366 = fma(r4730349, r4730349, r4730365);
double r4730367 = sqrt(r4730366);
double r4730368 = r4730367 - r4730349;
double r4730369 = r4730354 / r4730368;
double r4730370 = r4730362 / r4730369;
double r4730371 = r4730370 / r4730357;
double r4730372 = -2.0;
double r4730373 = r4730372 * r4730353;
double r4730374 = r4730373 / r4730357;
double r4730375 = r4730361 ? r4730371 : r4730374;
double r4730376 = r4730351 ? r4730359 : r4730375;
return r4730376;
}




Bits error versus a




Bits error versus b




Bits error versus c
| Original | 33.2 |
|---|---|
| Target | 20.6 |
| Herbie | 10.0 |
if b < -7.397994825724217e+150Initial program 59.1
Simplified59.1
Taylor expanded around 0 59.1
Taylor expanded around -inf 2.2
Simplified2.2
if -7.397994825724217e+150 < b < 1.2158870426682226e-82Initial program 11.8
Simplified11.8
Taylor expanded around 0 11.7
rmApplied clear-num11.9
if 1.2158870426682226e-82 < b Initial program 52.3
Simplified52.3
Taylor expanded around 0 52.3
Taylor expanded around inf 9.9
Final simplification10.0
herbie shell --seed 2019162 +o rules:numerics
(FPCore (a b c)
:name "The quadratic formula (r1)"
: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)))