\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -1.554334380656473166047169134650490279571 \cdot 10^{60}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\
\mathbf{elif}\;b \le -3.43629125879031642394551270881625565751 \cdot 10^{-161}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a} \cdot \frac{\left(c \cdot a\right) \cdot 4}{2 \cdot \left(\left(b \cdot b - b \cdot b\right) + \left(c \cdot a\right) \cdot 4\right)}\\
\mathbf{elif}\;b \le 1.958082194924451042912296607079150108999 \cdot 10^{133}:\\
\;\;\;\;\frac{\frac{4 \cdot a}{2} \cdot \frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot -1}{b}\\
\end{array}double f(double a, double b, double c) {
double r231152 = b;
double r231153 = -r231152;
double r231154 = r231152 * r231152;
double r231155 = 4.0;
double r231156 = a;
double r231157 = r231155 * r231156;
double r231158 = c;
double r231159 = r231157 * r231158;
double r231160 = r231154 - r231159;
double r231161 = sqrt(r231160);
double r231162 = r231153 + r231161;
double r231163 = 2.0;
double r231164 = r231163 * r231156;
double r231165 = r231162 / r231164;
return r231165;
}
double f(double a, double b, double c) {
double r231166 = b;
double r231167 = -1.5543343806564732e+60;
bool r231168 = r231166 <= r231167;
double r231169 = c;
double r231170 = r231169 / r231166;
double r231171 = a;
double r231172 = r231166 / r231171;
double r231173 = r231170 - r231172;
double r231174 = 1.0;
double r231175 = r231173 * r231174;
double r231176 = -3.4362912587903164e-161;
bool r231177 = r231166 <= r231176;
double r231178 = r231166 * r231166;
double r231179 = r231169 * r231171;
double r231180 = 4.0;
double r231181 = r231179 * r231180;
double r231182 = r231178 - r231181;
double r231183 = sqrt(r231182);
double r231184 = r231183 - r231166;
double r231185 = r231184 / r231171;
double r231186 = 2.0;
double r231187 = r231178 - r231178;
double r231188 = r231187 + r231181;
double r231189 = r231186 * r231188;
double r231190 = r231181 / r231189;
double r231191 = r231185 * r231190;
double r231192 = 1.958082194924451e+133;
bool r231193 = r231166 <= r231192;
double r231194 = r231180 * r231171;
double r231195 = r231194 / r231186;
double r231196 = -r231166;
double r231197 = r231196 - r231183;
double r231198 = r231169 / r231197;
double r231199 = r231195 * r231198;
double r231200 = r231199 / r231171;
double r231201 = -1.0;
double r231202 = r231169 * r231201;
double r231203 = r231202 / r231166;
double r231204 = r231193 ? r231200 : r231203;
double r231205 = r231177 ? r231191 : r231204;
double r231206 = r231168 ? r231175 : r231205;
return r231206;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 21.2 |
| Herbie | 10.7 |
if b < -1.5543343806564732e+60Initial program 39.6
Taylor expanded around -inf 4.8
Simplified4.8
if -1.5543343806564732e+60 < b < -3.4362912587903164e-161Initial program 6.0
rmApplied flip-+39.1
Simplified39.2
rmApplied flip--39.2
Applied associate-/r/39.2
Applied times-frac39.2
Simplified17.2
Simplified17.2
if -3.4362912587903164e-161 < b < 1.958082194924451e+133Initial program 29.6
rmApplied flip-+29.9
Simplified16.6
rmApplied associate-/r*16.7
Simplified14.8
if 1.958082194924451e+133 < b Initial program 61.9
Taylor expanded around inf 1.7
Simplified1.7
Final simplification10.7
herbie shell --seed 2019195
(FPCore (a b c)
:name "The quadratic formula (r1)"
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))