\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 -5.10985616674947893 \cdot 10^{57}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.33116871382552448 \cdot 10^{-114}:\\
\;\;\;\;\frac{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\
\mathbf{elif}\;b \le 6.74838527698993 \cdot 10^{90}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r121381 = b;
double r121382 = -r121381;
double r121383 = r121381 * r121381;
double r121384 = 4.0;
double r121385 = a;
double r121386 = c;
double r121387 = r121385 * r121386;
double r121388 = r121384 * r121387;
double r121389 = r121383 - r121388;
double r121390 = sqrt(r121389);
double r121391 = r121382 - r121390;
double r121392 = 2.0;
double r121393 = r121392 * r121385;
double r121394 = r121391 / r121393;
return r121394;
}
double f(double a, double b, double c) {
double r121395 = b;
double r121396 = -5.109856166749479e+57;
bool r121397 = r121395 <= r121396;
double r121398 = -1.0;
double r121399 = c;
double r121400 = r121399 / r121395;
double r121401 = r121398 * r121400;
double r121402 = -1.3311687138255245e-114;
bool r121403 = r121395 <= r121402;
double r121404 = 4.0;
double r121405 = a;
double r121406 = r121405 * r121399;
double r121407 = r121404 * r121406;
double r121408 = r121395 * r121395;
double r121409 = r121408 - r121407;
double r121410 = sqrt(r121409);
double r121411 = r121410 - r121395;
double r121412 = r121407 / r121411;
double r121413 = 2.0;
double r121414 = r121413 * r121405;
double r121415 = r121412 / r121414;
double r121416 = 6.74838527698993e+90;
bool r121417 = r121395 <= r121416;
double r121418 = 1.0;
double r121419 = -r121395;
double r121420 = r121419 - r121410;
double r121421 = r121414 / r121420;
double r121422 = r121418 / r121421;
double r121423 = -2.0;
double r121424 = r121423 * r121395;
double r121425 = r121424 / r121414;
double r121426 = r121417 ? r121422 : r121425;
double r121427 = r121403 ? r121415 : r121426;
double r121428 = r121397 ? r121401 : r121427;
return r121428;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.4 |
|---|---|
| Target | 21.3 |
| Herbie | 9.0 |
if b < -5.109856166749479e+57Initial program 58.0
Taylor expanded around -inf 3.4
if -5.109856166749479e+57 < b < -1.3311687138255245e-114Initial program 41.3
rmApplied flip--41.3
Simplified16.4
Simplified16.4
rmApplied *-un-lft-identity16.4
if -1.3311687138255245e-114 < b < 6.74838527698993e+90Initial program 11.9
rmApplied clear-num12.0
if 6.74838527698993e+90 < b Initial program 45.7
rmApplied flip--62.7
Simplified61.8
Simplified61.8
rmApplied *-un-lft-identity61.8
Taylor expanded around 0 4.8
Final simplification9.0
herbie shell --seed 2020042
(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)))