\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.44750035307145 \cdot 10^{+99}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le -9.715316061514381 \cdot 10^{-195}:\\
\;\;\;\;-\frac{\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a}}{\left(-b\right) + \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}\\
\mathbf{elif}\;b \le 4.716596953029048 \cdot 10^{+90}:\\
\;\;\;\;\frac{1}{2 \cdot a} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r4683358 = b;
double r4683359 = -r4683358;
double r4683360 = r4683358 * r4683358;
double r4683361 = 4.0;
double r4683362 = a;
double r4683363 = c;
double r4683364 = r4683362 * r4683363;
double r4683365 = r4683361 * r4683364;
double r4683366 = r4683360 - r4683365;
double r4683367 = sqrt(r4683366);
double r4683368 = r4683359 - r4683367;
double r4683369 = 2.0;
double r4683370 = r4683369 * r4683362;
double r4683371 = r4683368 / r4683370;
return r4683371;
}
double f(double a, double b, double c) {
double r4683372 = b;
double r4683373 = -9.44750035307145e+99;
bool r4683374 = r4683372 <= r4683373;
double r4683375 = c;
double r4683376 = r4683375 / r4683372;
double r4683377 = -r4683376;
double r4683378 = -9.715316061514381e-195;
bool r4683379 = r4683372 <= r4683378;
double r4683380 = a;
double r4683381 = r4683380 * r4683375;
double r4683382 = -0.5;
double r4683383 = r4683381 / r4683382;
double r4683384 = r4683383 / r4683380;
double r4683385 = -r4683372;
double r4683386 = r4683372 * r4683372;
double r4683387 = 4.0;
double r4683388 = r4683381 * r4683387;
double r4683389 = r4683386 - r4683388;
double r4683390 = sqrt(r4683389);
double r4683391 = r4683385 + r4683390;
double r4683392 = r4683384 / r4683391;
double r4683393 = -r4683392;
double r4683394 = 4.716596953029048e+90;
bool r4683395 = r4683372 <= r4683394;
double r4683396 = 1.0;
double r4683397 = 2.0;
double r4683398 = r4683397 * r4683380;
double r4683399 = r4683396 / r4683398;
double r4683400 = r4683385 - r4683390;
double r4683401 = r4683399 * r4683400;
double r4683402 = r4683372 / r4683380;
double r4683403 = r4683376 - r4683402;
double r4683404 = r4683395 ? r4683401 : r4683403;
double r4683405 = r4683379 ? r4683393 : r4683404;
double r4683406 = r4683374 ? r4683377 : r4683405;
return r4683406;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.2 |
|---|---|
| Target | 20.1 |
| Herbie | 8.9 |
if b < -9.44750035307145e+99Initial program 58.3
rmApplied div-inv58.3
Taylor expanded around -inf 2.1
Simplified2.1
if -9.44750035307145e+99 < b < -9.715316061514381e-195Initial program 37.2
rmApplied div-inv37.3
rmApplied flip--37.4
Applied associate-*l/37.4
Simplified15.3
if -9.715316061514381e-195 < b < 4.716596953029048e+90Initial program 11.0
rmApplied div-inv11.2
if 4.716596953029048e+90 < b Initial program 42.2
rmApplied div-inv42.3
Taylor expanded around inf 3.8
Final simplification8.9
herbie shell --seed 2019112
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 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)))