\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \leq -1.6342944889415786 \cdot 10^{+91}:\\
\;\;\;\;\frac{4}{2} \cdot \frac{c}{\left(a \cdot \frac{2}{\frac{b}{c}} - b\right) - b}\\
\mathbf{elif}\;b \leq 8.663143669049511 \cdot 10^{-296}:\\
\;\;\;\;\frac{4}{2} \cdot \frac{1}{\frac{\sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - b}{c}}\\
\mathbf{elif}\;b \leq 2.0984248321180817 \cdot 10^{+70}:\\
\;\;\;\;\left(b + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right) \cdot \frac{-1}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(2 \cdot \left(c \cdot \frac{a}{b}\right) - b\right) - b}{2 \cdot a}\\
\end{array}double code(double a, double b, double c) {
return (((double) (((double) -(b)) - ((double) sqrt(((double) (((double) (b * b)) - ((double) (4.0 * ((double) (a * c)))))))))) / ((double) (2.0 * a)));
}
double code(double a, double b, double c) {
double VAR;
if ((b <= -1.6342944889415786e+91)) {
VAR = ((double) ((4.0 / 2.0) * (c / ((double) (((double) (((double) (a * (2.0 / (b / c)))) - b)) - b)))));
} else {
double VAR_1;
if ((b <= 8.663143669049511e-296)) {
VAR_1 = ((double) ((4.0 / 2.0) * (1.0 / (((double) (((double) sqrt(((double) (((double) (b * b)) - ((double) (4.0 * ((double) (c * a)))))))) - b)) / c))));
} else {
double VAR_2;
if ((b <= 2.0984248321180817e+70)) {
VAR_2 = ((double) (((double) (b + ((double) sqrt(((double) (((double) (b * b)) - ((double) (4.0 * ((double) (c * a)))))))))) * (-1.0 / ((double) (2.0 * a)))));
} else {
VAR_2 = (((double) (((double) (((double) (2.0 * ((double) (c * (a / b))))) - b)) - b)) / ((double) (2.0 * a)));
}
VAR_1 = VAR_2;
}
VAR = VAR_1;
}
return VAR;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 21.4 |
| Herbie | 7.2 |
if b < -1.6342944889415786e91Initial program 58.9
rmApplied flip--58.9
Simplified31.5
Simplified31.5
rmApplied *-un-lft-identity31.5
Applied times-frac31.5
Applied times-frac31.5
Simplified31.5
Simplified29.2
Taylor expanded around -inf 6.8
Simplified2.7
if -1.6342944889415786e91 < b < 8.66314366904951067e-296Initial program 32.3
rmApplied flip--32.3
Simplified17.1
Simplified17.1
rmApplied *-un-lft-identity17.1
Applied times-frac17.1
Applied times-frac17.1
Simplified17.1
Simplified9.3
rmApplied clear-num9.5
if 8.66314366904951067e-296 < b < 2.0984248321180817e70Initial program 9.9
rmApplied div-inv10.0
Simplified10.0
if 2.0984248321180817e70 < b Initial program 41.6
Taylor expanded around inf 10.8
Simplified4.9
Final simplification7.2
herbie shell --seed 2020199
(FPCore (a b c)
:name "quadm (p42, negative)"
:precision binary64
:herbie-expected #f
: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)))