\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.948753525425808925296770585273107730084 \cdot 10^{142}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 2.477064787285889532736667463396647969795 \cdot 10^{-233}:\\
\;\;\;\;1 \cdot \frac{2 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}\\
\mathbf{elif}\;b \le 1.276518349713334879747784170879022589057 \cdot 10^{91}:\\
\;\;\;\;\frac{-b}{2 \cdot a} - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r85413 = b;
double r85414 = -r85413;
double r85415 = r85413 * r85413;
double r85416 = 4.0;
double r85417 = a;
double r85418 = c;
double r85419 = r85417 * r85418;
double r85420 = r85416 * r85419;
double r85421 = r85415 - r85420;
double r85422 = sqrt(r85421);
double r85423 = r85414 - r85422;
double r85424 = 2.0;
double r85425 = r85424 * r85417;
double r85426 = r85423 / r85425;
return r85426;
}
double f(double a, double b, double c) {
double r85427 = b;
double r85428 = -1.948753525425809e+142;
bool r85429 = r85427 <= r85428;
double r85430 = -1.0;
double r85431 = c;
double r85432 = r85431 / r85427;
double r85433 = r85430 * r85432;
double r85434 = 2.4770647872858895e-233;
bool r85435 = r85427 <= r85434;
double r85436 = 1.0;
double r85437 = 2.0;
double r85438 = r85437 * r85431;
double r85439 = r85427 * r85427;
double r85440 = 4.0;
double r85441 = a;
double r85442 = r85441 * r85431;
double r85443 = r85440 * r85442;
double r85444 = r85439 - r85443;
double r85445 = sqrt(r85444);
double r85446 = r85445 - r85427;
double r85447 = r85438 / r85446;
double r85448 = r85436 * r85447;
double r85449 = 1.2765183497133349e+91;
bool r85450 = r85427 <= r85449;
double r85451 = -r85427;
double r85452 = r85437 * r85441;
double r85453 = r85451 / r85452;
double r85454 = r85445 / r85452;
double r85455 = r85453 - r85454;
double r85456 = 1.0;
double r85457 = r85427 / r85441;
double r85458 = r85432 - r85457;
double r85459 = r85456 * r85458;
double r85460 = r85450 ? r85455 : r85459;
double r85461 = r85435 ? r85448 : r85460;
double r85462 = r85429 ? r85433 : r85461;
return r85462;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 21.1 |
| Herbie | 6.5 |
if b < -1.948753525425809e+142Initial program 62.8
Taylor expanded around -inf 1.4
if -1.948753525425809e+142 < b < 2.4770647872858895e-233Initial program 32.3
rmApplied div-inv32.3
rmApplied flip--32.4
Simplified17.0
Simplified17.0
rmApplied *-un-lft-identity17.0
Applied *-un-lft-identity17.0
Applied times-frac17.0
Applied associate-*l*17.0
Simplified15.6
Taylor expanded around 0 9.3
if 2.4770647872858895e-233 < b < 1.2765183497133349e+91Initial program 7.5
rmApplied div-sub7.5
if 1.2765183497133349e+91 < b Initial program 45.7
Taylor expanded around inf 4.2
Simplified4.2
Final simplification6.5
herbie shell --seed 2019354
(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)))