\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}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r78601 = b;
double r78602 = -r78601;
double r78603 = r78601 * r78601;
double r78604 = 4.0;
double r78605 = a;
double r78606 = c;
double r78607 = r78605 * r78606;
double r78608 = r78604 * r78607;
double r78609 = r78603 - r78608;
double r78610 = sqrt(r78609);
double r78611 = r78602 - r78610;
double r78612 = 2.0;
double r78613 = r78612 * r78605;
double r78614 = r78611 / r78613;
return r78614;
}
double f(double a, double b, double c) {
double r78615 = b;
double r78616 = -1.0674124610604968e-82;
bool r78617 = r78615 <= r78616;
double r78618 = -1.0;
double r78619 = c;
double r78620 = r78619 / r78615;
double r78621 = r78618 * r78620;
double r78622 = 5.968766258400916e+107;
bool r78623 = r78615 <= r78622;
double r78624 = 1.0;
double r78625 = 2.0;
double r78626 = r78624 / r78625;
double r78627 = -r78615;
double r78628 = r78615 * r78615;
double r78629 = 4.0;
double r78630 = a;
double r78631 = r78630 * r78619;
double r78632 = r78629 * r78631;
double r78633 = r78628 - r78632;
double r78634 = sqrt(r78633);
double r78635 = r78627 - r78634;
double r78636 = r78635 / r78630;
double r78637 = r78626 * r78636;
double r78638 = 1.0;
double r78639 = r78615 / r78630;
double r78640 = r78620 - r78639;
double r78641 = r78638 * r78640;
double r78642 = r78623 ? r78637 : r78641;
double r78643 = r78617 ? r78621 : r78642;
return r78643;
}




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 times-frac13.8
Applied add-cube-cbrt13.8
Applied times-frac13.8
Simplified13.8
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)))