\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 -6.90131991727783 \cdot 10^{-39}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 4.012768074517757 \cdot 10^{+87}:\\
\;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}\right) \cdot \frac{\frac{1}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{a}\\
\end{array}double f(double a, double b, double c) {
double r2602033 = b;
double r2602034 = -r2602033;
double r2602035 = r2602033 * r2602033;
double r2602036 = 4.0;
double r2602037 = a;
double r2602038 = c;
double r2602039 = r2602037 * r2602038;
double r2602040 = r2602036 * r2602039;
double r2602041 = r2602035 - r2602040;
double r2602042 = sqrt(r2602041);
double r2602043 = r2602034 - r2602042;
double r2602044 = 2.0;
double r2602045 = r2602044 * r2602037;
double r2602046 = r2602043 / r2602045;
return r2602046;
}
double f(double a, double b, double c) {
double r2602047 = b;
double r2602048 = -6.90131991727783e-39;
bool r2602049 = r2602047 <= r2602048;
double r2602050 = c;
double r2602051 = r2602050 / r2602047;
double r2602052 = -r2602051;
double r2602053 = 4.012768074517757e+87;
bool r2602054 = r2602047 <= r2602053;
double r2602055 = -r2602047;
double r2602056 = r2602047 * r2602047;
double r2602057 = a;
double r2602058 = r2602050 * r2602057;
double r2602059 = 4.0;
double r2602060 = r2602058 * r2602059;
double r2602061 = r2602056 - r2602060;
double r2602062 = sqrt(r2602061);
double r2602063 = r2602055 - r2602062;
double r2602064 = 0.5;
double r2602065 = r2602064 / r2602057;
double r2602066 = r2602063 * r2602065;
double r2602067 = r2602055 / r2602057;
double r2602068 = r2602054 ? r2602066 : r2602067;
double r2602069 = r2602049 ? r2602052 : r2602068;
return r2602069;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 32.6 |
|---|---|
| Target | 20.0 |
| Herbie | 9.7 |
if b < -6.90131991727783e-39Initial program 53.0
rmApplied div-inv53.1
Simplified53.1
Taylor expanded around -inf 7.9
Simplified7.9
if -6.90131991727783e-39 < b < 4.012768074517757e+87Initial program 13.2
rmApplied div-inv13.3
Simplified13.3
if 4.012768074517757e+87 < b Initial program 41.3
rmApplied *-un-lft-identity41.3
Applied *-un-lft-identity41.3
Applied distribute-lft-out--41.3
Applied associate-/l*41.3
Simplified41.3
Taylor expanded around 0 3.3
Simplified3.3
Final simplification9.7
herbie shell --seed 2019132 +o rules:numerics
(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)))