\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 -14858297.0087451544:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.46153957938955092 \cdot 10^{-137}:\\
\;\;\;\;\frac{\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2}}{a}\\
\mathbf{elif}\;b \le 1.3845340503596435 \cdot 10^{70}:\\
\;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r363 = b;
double r364 = -r363;
double r365 = r363 * r363;
double r366 = 4.0;
double r367 = a;
double r368 = c;
double r369 = r367 * r368;
double r370 = r366 * r369;
double r371 = r365 - r370;
double r372 = sqrt(r371);
double r373 = r364 - r372;
double r374 = 2.0;
double r375 = r374 * r367;
double r376 = r373 / r375;
return r376;
}
double f(double a, double b, double c) {
double r377 = b;
double r378 = -14858297.008745154;
bool r379 = r377 <= r378;
double r380 = -1.0;
double r381 = c;
double r382 = r381 / r377;
double r383 = r380 * r382;
double r384 = -1.461539579389551e-137;
bool r385 = r377 <= r384;
double r386 = 2.0;
double r387 = pow(r377, r386);
double r388 = r387 - r387;
double r389 = 4.0;
double r390 = a;
double r391 = r390 * r381;
double r392 = r389 * r391;
double r393 = r388 + r392;
double r394 = r377 * r377;
double r395 = r394 - r392;
double r396 = sqrt(r395);
double r397 = r396 - r377;
double r398 = r393 / r397;
double r399 = 2.0;
double r400 = r398 / r399;
double r401 = r400 / r390;
double r402 = 1.3845340503596435e+70;
bool r403 = r377 <= r402;
double r404 = -r377;
double r405 = r404 - r396;
double r406 = r405 / r399;
double r407 = r406 / r390;
double r408 = r377 / r390;
double r409 = r380 * r408;
double r410 = r403 ? r407 : r409;
double r411 = r385 ? r401 : r410;
double r412 = r379 ? r383 : r411;
return r412;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 20.8 |
| Herbie | 9.3 |
if b < -14858297.008745154Initial program 55.2
Taylor expanded around -inf 5.8
if -14858297.008745154 < b < -1.461539579389551e-137Initial program 35.4
rmApplied associate-/r*35.4
rmApplied flip--35.5
Simplified18.0
Simplified18.0
if -1.461539579389551e-137 < b < 1.3845340503596435e+70Initial program 11.6
rmApplied associate-/r*11.6
if 1.3845340503596435e+70 < b Initial program 41.5
rmApplied associate-/r*41.5
rmApplied clear-num41.6
Taylor expanded around 0 5.7
Final simplification9.3
herbie shell --seed 2020025
(FPCore (a b c)
:name "quadm (p42, negative)"
: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)))