\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 -1.869662346631121401645595393947635525169 \cdot 10^{101}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 7.455592343308264166675918758902222662503 \cdot 10^{-170}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r75407 = b;
double r75408 = -r75407;
double r75409 = r75407 * r75407;
double r75410 = 4.0;
double r75411 = a;
double r75412 = c;
double r75413 = r75411 * r75412;
double r75414 = r75410 * r75413;
double r75415 = r75409 - r75414;
double r75416 = sqrt(r75415);
double r75417 = r75408 - r75416;
double r75418 = 2.0;
double r75419 = r75418 * r75411;
double r75420 = r75417 / r75419;
return r75420;
}
double f(double a, double b, double c) {
double r75421 = b;
double r75422 = -1.8696623466311214e+101;
bool r75423 = r75421 <= r75422;
double r75424 = -1.0;
double r75425 = c;
double r75426 = r75425 / r75421;
double r75427 = r75424 * r75426;
double r75428 = 7.455592343308264e-170;
bool r75429 = r75421 <= r75428;
double r75430 = 2.0;
double r75431 = r75430 * r75425;
double r75432 = r75421 * r75421;
double r75433 = 4.0;
double r75434 = a;
double r75435 = r75434 * r75425;
double r75436 = r75433 * r75435;
double r75437 = r75432 - r75436;
double r75438 = sqrt(r75437);
double r75439 = r75438 - r75421;
double r75440 = r75431 / r75439;
double r75441 = 1.0;
double r75442 = r75421 / r75434;
double r75443 = r75426 - r75442;
double r75444 = r75441 * r75443;
double r75445 = r75429 ? r75440 : r75444;
double r75446 = r75423 ? r75427 : r75445;
return r75446;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 21.1 |
| Herbie | 11.3 |
if b < -1.8696623466311214e+101Initial program 59.8
Taylor expanded around -inf 2.5
if -1.8696623466311214e+101 < b < 7.455592343308264e-170Initial program 28.9
rmApplied flip--29.1
Simplified16.7
Simplified16.7
rmApplied div-inv16.7
rmApplied associate-*l/16.1
Simplified16.1
Taylor expanded around 0 11.1
if 7.455592343308264e-170 < b Initial program 23.0
Taylor expanded around inf 17.1
Simplified17.1
Final simplification11.3
herbie shell --seed 2019323
(FPCore (a b c)
:name "The quadratic formula (r2)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))