\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 r74492 = b;
double r74493 = -r74492;
double r74494 = r74492 * r74492;
double r74495 = 4.0;
double r74496 = a;
double r74497 = c;
double r74498 = r74496 * r74497;
double r74499 = r74495 * r74498;
double r74500 = r74494 - r74499;
double r74501 = sqrt(r74500);
double r74502 = r74493 - r74501;
double r74503 = 2.0;
double r74504 = r74503 * r74496;
double r74505 = r74502 / r74504;
return r74505;
}
double f(double a, double b, double c) {
double r74506 = b;
double r74507 = -1.8696623466311214e+101;
bool r74508 = r74506 <= r74507;
double r74509 = -1.0;
double r74510 = c;
double r74511 = r74510 / r74506;
double r74512 = r74509 * r74511;
double r74513 = 7.455592343308264e-170;
bool r74514 = r74506 <= r74513;
double r74515 = 2.0;
double r74516 = r74515 * r74510;
double r74517 = r74506 * r74506;
double r74518 = 4.0;
double r74519 = a;
double r74520 = r74519 * r74510;
double r74521 = r74518 * r74520;
double r74522 = r74517 - r74521;
double r74523 = sqrt(r74522);
double r74524 = r74523 - r74506;
double r74525 = r74516 / r74524;
double r74526 = 1.0;
double r74527 = r74506 / r74519;
double r74528 = r74511 - r74527;
double r74529 = r74526 * r74528;
double r74530 = r74514 ? r74525 : r74529;
double r74531 = r74508 ? r74512 : r74530;
return r74531;
}




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)))