\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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 3.038903409991338138548211857189252856935 \cdot 10^{107}:\\
\;\;\;\;\left(-\frac{b}{2 \cdot a}\right) - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\
\end{array}double f(double a, double b, double c) {
double r3262620 = b;
double r3262621 = -r3262620;
double r3262622 = r3262620 * r3262620;
double r3262623 = 4.0;
double r3262624 = a;
double r3262625 = c;
double r3262626 = r3262624 * r3262625;
double r3262627 = r3262623 * r3262626;
double r3262628 = r3262622 - r3262627;
double r3262629 = sqrt(r3262628);
double r3262630 = r3262621 - r3262629;
double r3262631 = 2.0;
double r3262632 = r3262631 * r3262624;
double r3262633 = r3262630 / r3262632;
return r3262633;
}
double f(double a, double b, double c) {
double r3262634 = b;
double r3262635 = -9.332433396832084e-58;
bool r3262636 = r3262634 <= r3262635;
double r3262637 = -1.0;
double r3262638 = c;
double r3262639 = r3262638 / r3262634;
double r3262640 = r3262637 * r3262639;
double r3262641 = 3.038903409991338e+107;
bool r3262642 = r3262634 <= r3262641;
double r3262643 = 2.0;
double r3262644 = a;
double r3262645 = r3262643 * r3262644;
double r3262646 = r3262634 / r3262645;
double r3262647 = -r3262646;
double r3262648 = r3262634 * r3262634;
double r3262649 = 4.0;
double r3262650 = r3262644 * r3262638;
double r3262651 = r3262649 * r3262650;
double r3262652 = r3262648 - r3262651;
double r3262653 = sqrt(r3262652);
double r3262654 = r3262653 / r3262645;
double r3262655 = r3262647 - r3262654;
double r3262656 = r3262634 / r3262644;
double r3262657 = r3262639 - r3262656;
double r3262658 = 1.0;
double r3262659 = r3262657 * r3262658;
double r3262660 = r3262642 ? r3262655 : r3262659;
double r3262661 = r3262636 ? r3262640 : r3262660;
return r3262661;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 21.4 |
| Herbie | 10.5 |
if b < -9.332433396832084e-58Initial program 53.5
Taylor expanded around -inf 8.7
if -9.332433396832084e-58 < b < 3.038903409991338e+107Initial program 14.1
rmApplied div-sub14.1
if 3.038903409991338e+107 < b Initial program 49.2
Taylor expanded around inf 3.5
Simplified3.5
Final simplification10.5
herbie shell --seed 2019171 +o rules:numerics
(FPCore (a b c)
:name "The quadratic formula (r2)"
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))