\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.93152454634661985 \cdot 10^{153}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 2.0569776426586135 \cdot 10^{-106}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{\frac{a}{\frac{1}{2}}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r84426 = b;
double r84427 = -r84426;
double r84428 = r84426 * r84426;
double r84429 = 4.0;
double r84430 = a;
double r84431 = r84429 * r84430;
double r84432 = c;
double r84433 = r84431 * r84432;
double r84434 = r84428 - r84433;
double r84435 = sqrt(r84434);
double r84436 = r84427 + r84435;
double r84437 = 2.0;
double r84438 = r84437 * r84430;
double r84439 = r84436 / r84438;
return r84439;
}
double f(double a, double b, double c) {
double r84440 = b;
double r84441 = -7.93152454634662e+153;
bool r84442 = r84440 <= r84441;
double r84443 = 1.0;
double r84444 = c;
double r84445 = r84444 / r84440;
double r84446 = a;
double r84447 = r84440 / r84446;
double r84448 = r84445 - r84447;
double r84449 = r84443 * r84448;
double r84450 = 2.0569776426586135e-106;
bool r84451 = r84440 <= r84450;
double r84452 = r84440 * r84440;
double r84453 = 4.0;
double r84454 = r84453 * r84446;
double r84455 = r84454 * r84444;
double r84456 = r84452 - r84455;
double r84457 = sqrt(r84456);
double r84458 = r84457 - r84440;
double r84459 = 1.0;
double r84460 = 2.0;
double r84461 = r84459 / r84460;
double r84462 = r84446 / r84461;
double r84463 = r84458 / r84462;
double r84464 = -1.0;
double r84465 = r84464 * r84445;
double r84466 = r84451 ? r84463 : r84465;
double r84467 = r84442 ? r84449 : r84466;
return r84467;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 21.2 |
| Herbie | 9.8 |
if b < -7.93152454634662e+153Initial program 63.8
Simplified63.8
Taylor expanded around -inf 1.9
Simplified1.9
if -7.93152454634662e+153 < b < 2.0569776426586135e-106Initial program 11.2
Simplified11.2
rmApplied clear-num11.3
rmApplied div-inv11.3
Applied *-un-lft-identity11.3
Applied times-frac11.4
Applied associate-/r*11.3
Simplified11.2
if 2.0569776426586135e-106 < b Initial program 52.0
Simplified52.0
Taylor expanded around inf 10.3
Final simplification9.8
herbie shell --seed 2020043
(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)))