\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.0674124610604968 \cdot 10^{-82}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 5.96876625840091586 \cdot 10^{107}:\\
\;\;\;\;1 \cdot \frac{\left(-b\right) - \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 r101446 = b;
double r101447 = -r101446;
double r101448 = r101446 * r101446;
double r101449 = 4.0;
double r101450 = a;
double r101451 = c;
double r101452 = r101450 * r101451;
double r101453 = r101449 * r101452;
double r101454 = r101448 - r101453;
double r101455 = sqrt(r101454);
double r101456 = r101447 - r101455;
double r101457 = 2.0;
double r101458 = r101457 * r101450;
double r101459 = r101456 / r101458;
return r101459;
}
double f(double a, double b, double c) {
double r101460 = b;
double r101461 = -1.0674124610604968e-82;
bool r101462 = r101460 <= r101461;
double r101463 = -1.0;
double r101464 = c;
double r101465 = r101464 / r101460;
double r101466 = r101463 * r101465;
double r101467 = 5.968766258400916e+107;
bool r101468 = r101460 <= r101467;
double r101469 = 1.0;
double r101470 = -r101460;
double r101471 = r101460 * r101460;
double r101472 = 4.0;
double r101473 = a;
double r101474 = r101473 * r101464;
double r101475 = r101472 * r101474;
double r101476 = r101471 - r101475;
double r101477 = sqrt(r101476);
double r101478 = r101470 - r101477;
double r101479 = 2.0;
double r101480 = r101479 * r101473;
double r101481 = r101478 / r101480;
double r101482 = r101469 * r101481;
double r101483 = 1.0;
double r101484 = r101460 / r101473;
double r101485 = r101465 - r101484;
double r101486 = r101483 * r101485;
double r101487 = r101468 ? r101482 : r101486;
double r101488 = r101462 ? r101466 : r101487;
return r101488;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.4 |
|---|---|
| Target | 21.5 |
| Herbie | 10.3 |
if b < -1.0674124610604968e-82Initial program 52.3
Taylor expanded around -inf 8.9
if -1.0674124610604968e-82 < b < 5.968766258400916e+107Initial program 13.7
rmApplied clear-num13.9
rmApplied *-un-lft-identity13.9
Applied add-cube-cbrt13.9
Applied times-frac13.9
Simplified13.9
Simplified13.7
if 5.968766258400916e+107 < b Initial program 50.0
Taylor expanded around inf 3.8
Simplified3.8
Final simplification10.3
herbie shell --seed 2020062
(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)))