\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 -8.3645547041066157 \cdot 10^{-80}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 4.1199128263687574 \cdot 10^{46}:\\
\;\;\;\;\frac{1}{\frac{1}{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r121937 = b;
double r121938 = -r121937;
double r121939 = r121937 * r121937;
double r121940 = 4.0;
double r121941 = a;
double r121942 = c;
double r121943 = r121941 * r121942;
double r121944 = r121940 * r121943;
double r121945 = r121939 - r121944;
double r121946 = sqrt(r121945);
double r121947 = r121938 - r121946;
double r121948 = 2.0;
double r121949 = r121948 * r121941;
double r121950 = r121947 / r121949;
return r121950;
}
double f(double a, double b, double c) {
double r121951 = b;
double r121952 = -8.364554704106616e-80;
bool r121953 = r121951 <= r121952;
double r121954 = -1.0;
double r121955 = c;
double r121956 = r121955 / r121951;
double r121957 = r121954 * r121956;
double r121958 = 4.1199128263687574e+46;
bool r121959 = r121951 <= r121958;
double r121960 = 1.0;
double r121961 = -r121951;
double r121962 = r121951 * r121951;
double r121963 = 4.0;
double r121964 = a;
double r121965 = r121964 * r121955;
double r121966 = r121963 * r121965;
double r121967 = r121962 - r121966;
double r121968 = sqrt(r121967);
double r121969 = r121961 - r121968;
double r121970 = 2.0;
double r121971 = r121970 * r121964;
double r121972 = r121969 / r121971;
double r121973 = r121960 / r121972;
double r121974 = r121960 / r121973;
double r121975 = 1.0;
double r121976 = r121951 / r121964;
double r121977 = r121956 - r121976;
double r121978 = r121975 * r121977;
double r121979 = r121959 ? r121974 : r121978;
double r121980 = r121953 ? r121957 : r121979;
return r121980;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 21.1 |
| Herbie | 10.2 |
if b < -8.364554704106616e-80Initial program 53.8
Taylor expanded around -inf 9.1
if -8.364554704106616e-80 < b < 4.1199128263687574e+46Initial program 13.8
rmApplied clear-num13.9
rmApplied clear-num13.8
if 4.1199128263687574e+46 < b Initial program 36.8
Taylor expanded around inf 5.2
Simplified5.2
Final simplification10.2
herbie shell --seed 2020046 +o rules:numerics
(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)))