\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 -1.763315479739403460017265344144602342789 \cdot 10^{89}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.085000278636624341855070450537604684134 \cdot 10^{-297}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)}}\\
\mathbf{elif}\;b \le 3.355858625783055094237525774982320834143 \cdot 10^{101}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\
\end{array}double f(double a, double b, double c) {
double r4324464 = b;
double r4324465 = -r4324464;
double r4324466 = r4324464 * r4324464;
double r4324467 = 4.0;
double r4324468 = a;
double r4324469 = c;
double r4324470 = r4324468 * r4324469;
double r4324471 = r4324467 * r4324470;
double r4324472 = r4324466 - r4324471;
double r4324473 = sqrt(r4324472);
double r4324474 = r4324465 - r4324473;
double r4324475 = 2.0;
double r4324476 = r4324475 * r4324468;
double r4324477 = r4324474 / r4324476;
return r4324477;
}
double f(double a, double b, double c) {
double r4324478 = b;
double r4324479 = -1.7633154797394035e+89;
bool r4324480 = r4324478 <= r4324479;
double r4324481 = -1.0;
double r4324482 = c;
double r4324483 = r4324482 / r4324478;
double r4324484 = r4324481 * r4324483;
double r4324485 = -1.0850002786366243e-297;
bool r4324486 = r4324478 <= r4324485;
double r4324487 = 2.0;
double r4324488 = r4324482 * r4324487;
double r4324489 = -r4324478;
double r4324490 = r4324478 * r4324478;
double r4324491 = a;
double r4324492 = 4.0;
double r4324493 = r4324491 * r4324492;
double r4324494 = r4324482 * r4324493;
double r4324495 = r4324490 - r4324494;
double r4324496 = sqrt(r4324495);
double r4324497 = r4324489 + r4324496;
double r4324498 = r4324488 / r4324497;
double r4324499 = 3.355858625783055e+101;
bool r4324500 = r4324478 <= r4324499;
double r4324501 = r4324489 - r4324496;
double r4324502 = r4324491 * r4324487;
double r4324503 = r4324501 / r4324502;
double r4324504 = r4324478 / r4324491;
double r4324505 = r4324483 - r4324504;
double r4324506 = 1.0;
double r4324507 = r4324505 * r4324506;
double r4324508 = r4324500 ? r4324503 : r4324507;
double r4324509 = r4324486 ? r4324498 : r4324508;
double r4324510 = r4324480 ? r4324484 : r4324509;
return r4324510;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.4 |
|---|---|
| Target | 20.9 |
| Herbie | 6.7 |
if b < -1.7633154797394035e+89Initial program 59.1
Taylor expanded around -inf 2.7
if -1.7633154797394035e+89 < b < -1.0850002786366243e-297Initial program 32.1
Taylor expanded around 0 32.1
Simplified32.1
rmApplied div-inv32.2
rmApplied flip--32.2
Applied associate-*l/32.2
Simplified15.8
Taylor expanded around 0 8.4
if -1.0850002786366243e-297 < b < 3.355858625783055e+101Initial program 9.5
Taylor expanded around 0 9.5
Simplified9.5
if 3.355858625783055e+101 < b Initial program 46.8
Taylor expanded around inf 4.4
Simplified4.4
Final simplification6.7
herbie shell --seed 2019172
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))