\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 -4.28391183709975701 \cdot 10^{106}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.16764411094466422 \cdot 10^{-83}:\\
\;\;\;\;\frac{\frac{1}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{\frac{2 \cdot a}{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}}\\
\mathbf{elif}\;b \le -5.52775192595066085 \cdot 10^{-141}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 3.59909590090097915 \cdot 10^{53}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r151003 = b;
double r151004 = -r151003;
double r151005 = r151003 * r151003;
double r151006 = 4.0;
double r151007 = a;
double r151008 = c;
double r151009 = r151007 * r151008;
double r151010 = r151006 * r151009;
double r151011 = r151005 - r151010;
double r151012 = sqrt(r151011);
double r151013 = r151004 - r151012;
double r151014 = 2.0;
double r151015 = r151014 * r151007;
double r151016 = r151013 / r151015;
return r151016;
}
double f(double a, double b, double c) {
double r151017 = b;
double r151018 = -4.283911837099757e+106;
bool r151019 = r151017 <= r151018;
double r151020 = -1.0;
double r151021 = c;
double r151022 = r151021 / r151017;
double r151023 = r151020 * r151022;
double r151024 = -1.1676441109446642e-83;
bool r151025 = r151017 <= r151024;
double r151026 = 1.0;
double r151027 = r151017 * r151017;
double r151028 = 4.0;
double r151029 = a;
double r151030 = r151029 * r151021;
double r151031 = r151028 * r151030;
double r151032 = r151027 - r151031;
double r151033 = sqrt(r151032);
double r151034 = r151033 - r151017;
double r151035 = sqrt(r151034);
double r151036 = r151026 / r151035;
double r151037 = 2.0;
double r151038 = r151037 * r151029;
double r151039 = r151031 / r151035;
double r151040 = r151038 / r151039;
double r151041 = r151036 / r151040;
double r151042 = -5.527751925950661e-141;
bool r151043 = r151017 <= r151042;
double r151044 = 3.599095900900979e+53;
bool r151045 = r151017 <= r151044;
double r151046 = -r151017;
double r151047 = r151046 - r151033;
double r151048 = r151047 / r151038;
double r151049 = -2.0;
double r151050 = r151049 * r151017;
double r151051 = r151050 / r151038;
double r151052 = r151045 ? r151048 : r151051;
double r151053 = r151043 ? r151023 : r151052;
double r151054 = r151025 ? r151041 : r151053;
double r151055 = r151019 ? r151023 : r151054;
return r151055;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 20.8 |
| Herbie | 10.1 |
if b < -4.283911837099757e+106 or -1.1676441109446642e-83 < b < -5.527751925950661e-141Initial program 54.5
Taylor expanded around -inf 8.4
if -4.283911837099757e+106 < b < -1.1676441109446642e-83Initial program 42.9
rmApplied flip--42.9
Simplified15.2
Simplified15.2
rmApplied add-sqr-sqrt15.3
Applied *-un-lft-identity15.3
Applied times-frac15.4
Applied associate-/l*14.5
Simplified14.5
if -5.527751925950661e-141 < b < 3.599095900900979e+53Initial program 12.0
if 3.599095900900979e+53 < b Initial program 38.5
rmApplied flip--62.0
Simplified61.3
Simplified61.3
Taylor expanded around 0 5.4
Final simplification10.1
herbie shell --seed 2020043
(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)))