\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 -2.968339104808995575492318760699662265421 \cdot 10^{-12}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -4.111806971508121285438180273428571147006 \cdot 10^{-72}:\\
\;\;\;\;\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 \cdot a}\\
\mathbf{elif}\;b \le -2.830344977336381507706273409215818882174 \cdot 10^{-99}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 1.207713874276650441727053820537472427931 \cdot 10^{93}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r93392 = b;
double r93393 = -r93392;
double r93394 = r93392 * r93392;
double r93395 = 4.0;
double r93396 = a;
double r93397 = c;
double r93398 = r93396 * r93397;
double r93399 = r93395 * r93398;
double r93400 = r93394 - r93399;
double r93401 = sqrt(r93400);
double r93402 = r93393 - r93401;
double r93403 = 2.0;
double r93404 = r93403 * r93396;
double r93405 = r93402 / r93404;
return r93405;
}
double f(double a, double b, double c) {
double r93406 = b;
double r93407 = -2.9683391048089956e-12;
bool r93408 = r93406 <= r93407;
double r93409 = -1.0;
double r93410 = c;
double r93411 = r93410 / r93406;
double r93412 = r93409 * r93411;
double r93413 = -4.1118069715081213e-72;
bool r93414 = r93406 <= r93413;
double r93415 = 2.0;
double r93416 = pow(r93406, r93415);
double r93417 = r93416 - r93416;
double r93418 = 4.0;
double r93419 = a;
double r93420 = r93419 * r93410;
double r93421 = r93418 * r93420;
double r93422 = r93417 + r93421;
double r93423 = r93406 * r93406;
double r93424 = r93423 - r93421;
double r93425 = sqrt(r93424);
double r93426 = r93425 - r93406;
double r93427 = r93422 / r93426;
double r93428 = 2.0;
double r93429 = r93428 * r93419;
double r93430 = r93427 / r93429;
double r93431 = -2.8303449773363815e-99;
bool r93432 = r93406 <= r93431;
double r93433 = 1.2077138742766504e+93;
bool r93434 = r93406 <= r93433;
double r93435 = -r93406;
double r93436 = r93435 - r93425;
double r93437 = r93436 / r93429;
double r93438 = 1.0;
double r93439 = r93406 / r93419;
double r93440 = r93411 - r93439;
double r93441 = r93438 * r93440;
double r93442 = r93434 ? r93437 : r93441;
double r93443 = r93432 ? r93412 : r93442;
double r93444 = r93414 ? r93430 : r93443;
double r93445 = r93408 ? r93412 : r93444;
return r93445;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 21.0 |
| Herbie | 9.7 |
if b < -2.9683391048089956e-12 or -4.1118069715081213e-72 < b < -2.8303449773363815e-99Initial program 54.3
Taylor expanded around -inf 7.9
if -2.9683391048089956e-12 < b < -4.1118069715081213e-72Initial program 38.2
rmApplied flip--38.2
Simplified17.7
Simplified17.7
if -2.8303449773363815e-99 < b < 1.2077138742766504e+93Initial program 12.6
if 1.2077138742766504e+93 < b Initial program 43.8
Taylor expanded around inf 3.7
Simplified3.7
Final simplification9.7
herbie shell --seed 2019294
(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)))