\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 -1.547666603636537260513437138645901028344 \cdot 10^{50}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 7.455592343308264166675918758902222662503 \cdot 10^{-170}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r64335 = b;
double r64336 = -r64335;
double r64337 = r64335 * r64335;
double r64338 = 4.0;
double r64339 = a;
double r64340 = r64338 * r64339;
double r64341 = c;
double r64342 = r64340 * r64341;
double r64343 = r64337 - r64342;
double r64344 = sqrt(r64343);
double r64345 = r64336 + r64344;
double r64346 = 2.0;
double r64347 = r64346 * r64339;
double r64348 = r64345 / r64347;
return r64348;
}
double f(double a, double b, double c) {
double r64349 = b;
double r64350 = -1.5476666036365373e+50;
bool r64351 = r64349 <= r64350;
double r64352 = 1.0;
double r64353 = c;
double r64354 = r64353 / r64349;
double r64355 = a;
double r64356 = r64349 / r64355;
double r64357 = r64354 - r64356;
double r64358 = r64352 * r64357;
double r64359 = 7.455592343308264e-170;
bool r64360 = r64349 <= r64359;
double r64361 = 1.0;
double r64362 = 2.0;
double r64363 = r64362 * r64355;
double r64364 = r64349 * r64349;
double r64365 = 4.0;
double r64366 = r64365 * r64355;
double r64367 = r64366 * r64353;
double r64368 = r64364 - r64367;
double r64369 = sqrt(r64368);
double r64370 = r64369 - r64349;
double r64371 = r64363 / r64370;
double r64372 = r64361 / r64371;
double r64373 = -1.0;
double r64374 = r64373 * r64354;
double r64375 = r64360 ? r64372 : r64374;
double r64376 = r64351 ? r64358 : r64375;
return r64376;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 20.8 |
| Herbie | 11.9 |
if b < -1.5476666036365373e+50Initial program 37.8
Taylor expanded around -inf 5.8
Simplified5.8
if -1.5476666036365373e+50 < b < 7.455592343308264e-170Initial program 12.4
rmApplied clear-num12.5
Simplified12.5
if 7.455592343308264e-170 < b Initial program 48.9
Taylor expanded around inf 14.1
Final simplification11.9
herbie shell --seed 2019323
(FPCore (a b c)
:name "The quadratic formula (r1)"
:precision binary64
:herbie-target
(if (< b 0.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)))