\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 -5.4278904486834676 \cdot 10^{-42}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 2.8046284917653458 \cdot 10^{91}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r89347 = b;
double r89348 = -r89347;
double r89349 = r89347 * r89347;
double r89350 = 4.0;
double r89351 = a;
double r89352 = c;
double r89353 = r89351 * r89352;
double r89354 = r89350 * r89353;
double r89355 = r89349 - r89354;
double r89356 = sqrt(r89355);
double r89357 = r89348 - r89356;
double r89358 = 2.0;
double r89359 = r89358 * r89351;
double r89360 = r89357 / r89359;
return r89360;
}
double f(double a, double b, double c) {
double r89361 = b;
double r89362 = -5.4278904486834676e-42;
bool r89363 = r89361 <= r89362;
double r89364 = -1.0;
double r89365 = c;
double r89366 = r89365 / r89361;
double r89367 = r89364 * r89366;
double r89368 = 2.8046284917653458e+91;
bool r89369 = r89361 <= r89368;
double r89370 = 1.0;
double r89371 = 2.0;
double r89372 = a;
double r89373 = r89371 * r89372;
double r89374 = -r89361;
double r89375 = r89361 * r89361;
double r89376 = 4.0;
double r89377 = r89372 * r89365;
double r89378 = r89376 * r89377;
double r89379 = r89375 - r89378;
double r89380 = sqrt(r89379);
double r89381 = r89374 - r89380;
double r89382 = r89373 / r89381;
double r89383 = r89370 / r89382;
double r89384 = 1.0;
double r89385 = r89361 / r89372;
double r89386 = r89366 - r89385;
double r89387 = r89384 * r89386;
double r89388 = r89369 ? r89383 : r89387;
double r89389 = r89363 ? r89367 : r89388;
return r89389;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.4 |
|---|---|
| Target | 20.8 |
| Herbie | 10.3 |
if b < -5.4278904486834676e-42Initial program 54.7
Taylor expanded around -inf 7.1
if -5.4278904486834676e-42 < b < 2.8046284917653458e+91Initial program 14.7
rmApplied clear-num14.8
if 2.8046284917653458e+91 < b Initial program 45.4
Taylor expanded around inf 4.1
Simplified4.1
Final simplification10.3
herbie shell --seed 2020035 +o rules:numerics
(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)))