\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.615151909502748 \cdot 10^{-87}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 3.5387363548079373 \cdot 10^{+99}:\\
\;\;\;\;\left(-\frac{b}{2 \cdot a}\right) - \frac{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{a}\\
\end{array}double f(double a, double b, double c) {
double r3215920 = b;
double r3215921 = -r3215920;
double r3215922 = r3215920 * r3215920;
double r3215923 = 4.0;
double r3215924 = a;
double r3215925 = c;
double r3215926 = r3215924 * r3215925;
double r3215927 = r3215923 * r3215926;
double r3215928 = r3215922 - r3215927;
double r3215929 = sqrt(r3215928);
double r3215930 = r3215921 - r3215929;
double r3215931 = 2.0;
double r3215932 = r3215931 * r3215924;
double r3215933 = r3215930 / r3215932;
return r3215933;
}
double f(double a, double b, double c) {
double r3215934 = b;
double r3215935 = -6.615151909502748e-87;
bool r3215936 = r3215934 <= r3215935;
double r3215937 = c;
double r3215938 = r3215937 / r3215934;
double r3215939 = -r3215938;
double r3215940 = 3.5387363548079373e+99;
bool r3215941 = r3215934 <= r3215940;
double r3215942 = 2.0;
double r3215943 = a;
double r3215944 = r3215942 * r3215943;
double r3215945 = r3215934 / r3215944;
double r3215946 = -r3215945;
double r3215947 = r3215934 * r3215934;
double r3215948 = r3215943 * r3215937;
double r3215949 = 4.0;
double r3215950 = r3215948 * r3215949;
double r3215951 = r3215947 - r3215950;
double r3215952 = sqrt(r3215951);
double r3215953 = r3215952 / r3215944;
double r3215954 = r3215946 - r3215953;
double r3215955 = -r3215934;
double r3215956 = r3215955 / r3215943;
double r3215957 = r3215941 ? r3215954 : r3215956;
double r3215958 = r3215936 ? r3215939 : r3215957;
return r3215958;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.0 |
|---|---|
| Target | 20.1 |
| Herbie | 10.4 |
if b < -6.615151909502748e-87Initial program 51.9
rmApplied div-inv52.0
Simplified52.0
Taylor expanded around -inf 10.0
Simplified10.0
if -6.615151909502748e-87 < b < 3.5387363548079373e+99Initial program 12.8
rmApplied div-sub12.8
if 3.5387363548079373e+99 < b Initial program 44.4
rmApplied *-un-lft-identity44.4
Applied associate-/l*44.5
Taylor expanded around 0 3.9
Simplified3.9
Final simplification10.4
herbie shell --seed 2019133
(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)))