\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.913936217078672453781998496151874189163 \cdot 10^{60}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -2.876852397051050336397941792630169519921 \cdot 10^{-50}:\\
\;\;\;\;\frac{\frac{c \cdot \left(4 \cdot a\right)}{\sqrt{b \cdot b + \left(-\left(4 \cdot a\right) \cdot c\right)} - b}}{2 \cdot a}\\
\mathbf{elif}\;b \le -1.124423417365483683607573317023703677331 \cdot 10^{-68}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 9.282387544777820560455992664410231115991 \cdot 10^{92}:\\
\;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r61699 = b;
double r61700 = -r61699;
double r61701 = r61699 * r61699;
double r61702 = 4.0;
double r61703 = a;
double r61704 = c;
double r61705 = r61703 * r61704;
double r61706 = r61702 * r61705;
double r61707 = r61701 - r61706;
double r61708 = sqrt(r61707);
double r61709 = r61700 - r61708;
double r61710 = 2.0;
double r61711 = r61710 * r61703;
double r61712 = r61709 / r61711;
return r61712;
}
double f(double a, double b, double c) {
double r61713 = b;
double r61714 = -9.913936217078672e+60;
bool r61715 = r61713 <= r61714;
double r61716 = -1.0;
double r61717 = c;
double r61718 = r61717 / r61713;
double r61719 = r61716 * r61718;
double r61720 = -2.8768523970510503e-50;
bool r61721 = r61713 <= r61720;
double r61722 = 4.0;
double r61723 = a;
double r61724 = r61722 * r61723;
double r61725 = r61717 * r61724;
double r61726 = r61713 * r61713;
double r61727 = r61724 * r61717;
double r61728 = -r61727;
double r61729 = r61726 + r61728;
double r61730 = sqrt(r61729);
double r61731 = r61730 - r61713;
double r61732 = r61725 / r61731;
double r61733 = 2.0;
double r61734 = r61733 * r61723;
double r61735 = r61732 / r61734;
double r61736 = -1.1244234173654837e-68;
bool r61737 = r61713 <= r61736;
double r61738 = 9.28238754477782e+92;
bool r61739 = r61713 <= r61738;
double r61740 = -r61713;
double r61741 = r61723 * r61717;
double r61742 = r61722 * r61741;
double r61743 = r61726 - r61742;
double r61744 = sqrt(r61743);
double r61745 = r61740 - r61744;
double r61746 = r61745 / r61733;
double r61747 = r61746 / r61723;
double r61748 = -2.0;
double r61749 = r61748 * r61713;
double r61750 = r61749 / r61734;
double r61751 = r61739 ? r61747 : r61750;
double r61752 = r61737 ? r61719 : r61751;
double r61753 = r61721 ? r61735 : r61752;
double r61754 = r61715 ? r61719 : r61753;
return r61754;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 20.8 |
| Herbie | 9.4 |
if b < -9.913936217078672e+60 or -2.8768523970510503e-50 < b < -1.1244234173654837e-68Initial program 56.8
Taylor expanded around -inf 5.0
if -9.913936217078672e+60 < b < -2.8768523970510503e-50Initial program 43.8
rmApplied flip--43.9
Simplified13.5
Simplified13.5
rmApplied sub-neg13.5
Simplified13.5
if -1.1244234173654837e-68 < b < 9.28238754477782e+92Initial program 13.4
rmApplied associate-/r*13.4
if 9.28238754477782e+92 < b Initial program 45.0
rmApplied flip--62.8
Simplified61.9
Simplified61.9
Taylor expanded around 0 3.6
Final simplification9.4
herbie shell --seed 2019347
(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)))