\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 -977083.9042033920995891094207763671875:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -2.277624610006997683151417691157213452138 \cdot 10^{-291}:\\
\;\;\;\;\frac{\frac{1 \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{elif}\;b \le 4.294531430978972552500215519031197589784 \cdot 10^{104}:\\
\;\;\;\;\frac{-b}{2 \cdot a} - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r59409 = b;
double r59410 = -r59409;
double r59411 = r59409 * r59409;
double r59412 = 4.0;
double r59413 = a;
double r59414 = c;
double r59415 = r59413 * r59414;
double r59416 = r59412 * r59415;
double r59417 = r59411 - r59416;
double r59418 = sqrt(r59417);
double r59419 = r59410 - r59418;
double r59420 = 2.0;
double r59421 = r59420 * r59413;
double r59422 = r59419 / r59421;
return r59422;
}
double f(double a, double b, double c) {
double r59423 = b;
double r59424 = -977083.9042033921;
bool r59425 = r59423 <= r59424;
double r59426 = -1.0;
double r59427 = c;
double r59428 = r59427 / r59423;
double r59429 = r59426 * r59428;
double r59430 = -2.2776246100069977e-291;
bool r59431 = r59423 <= r59430;
double r59432 = 1.0;
double r59433 = 2.0;
double r59434 = pow(r59423, r59433);
double r59435 = r59434 - r59434;
double r59436 = 4.0;
double r59437 = a;
double r59438 = r59437 * r59427;
double r59439 = r59436 * r59438;
double r59440 = r59435 + r59439;
double r59441 = r59432 * r59440;
double r59442 = 2.0;
double r59443 = r59442 * r59437;
double r59444 = r59441 / r59443;
double r59445 = -r59423;
double r59446 = r59423 * r59423;
double r59447 = r59446 - r59439;
double r59448 = sqrt(r59447);
double r59449 = r59445 + r59448;
double r59450 = r59444 / r59449;
double r59451 = 4.2945314309789726e+104;
bool r59452 = r59423 <= r59451;
double r59453 = r59445 / r59443;
double r59454 = r59448 / r59443;
double r59455 = r59453 - r59454;
double r59456 = r59423 / r59437;
double r59457 = r59426 * r59456;
double r59458 = r59452 ? r59455 : r59457;
double r59459 = r59431 ? r59450 : r59458;
double r59460 = r59425 ? r59429 : r59459;
return r59460;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 21.0 |
| Herbie | 8.5 |
if b < -977083.9042033921Initial program 56.3
Taylor expanded around -inf 5.1
if -977083.9042033921 < b < -2.2776246100069977e-291Initial program 27.2
rmApplied clear-num27.3
rmApplied flip--27.3
Applied associate-/r/27.4
Applied associate-/r*27.4
Simplified17.2
if -2.2776246100069977e-291 < b < 4.2945314309789726e+104Initial program 8.6
rmApplied div-sub8.6
if 4.2945314309789726e+104 < b Initial program 47.7
rmApplied clear-num47.7
Taylor expanded around 0 3.7
Final simplification8.5
herbie shell --seed 2019291
(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)))