\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.8774910265390396 \cdot 10^{-73}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 2.5703497435733685 \cdot 10^{+102}:\\
\;\;\;\;\frac{-\left(\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} + b\right)}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r1596827 = b;
double r1596828 = -r1596827;
double r1596829 = r1596827 * r1596827;
double r1596830 = 4.0;
double r1596831 = a;
double r1596832 = c;
double r1596833 = r1596831 * r1596832;
double r1596834 = r1596830 * r1596833;
double r1596835 = r1596829 - r1596834;
double r1596836 = sqrt(r1596835);
double r1596837 = r1596828 - r1596836;
double r1596838 = 2.0;
double r1596839 = r1596838 * r1596831;
double r1596840 = r1596837 / r1596839;
return r1596840;
}
double f(double a, double b, double c) {
double r1596841 = b;
double r1596842 = -1.8774910265390396e-73;
bool r1596843 = r1596841 <= r1596842;
double r1596844 = c;
double r1596845 = r1596844 / r1596841;
double r1596846 = -r1596845;
double r1596847 = 2.5703497435733685e+102;
bool r1596848 = r1596841 <= r1596847;
double r1596849 = r1596841 * r1596841;
double r1596850 = a;
double r1596851 = r1596844 * r1596850;
double r1596852 = 4.0;
double r1596853 = r1596851 * r1596852;
double r1596854 = r1596849 - r1596853;
double r1596855 = sqrt(r1596854);
double r1596856 = r1596855 + r1596841;
double r1596857 = -r1596856;
double r1596858 = 2.0;
double r1596859 = r1596850 * r1596858;
double r1596860 = r1596857 / r1596859;
double r1596861 = r1596841 / r1596850;
double r1596862 = r1596845 - r1596861;
double r1596863 = r1596848 ? r1596860 : r1596862;
double r1596864 = r1596843 ? r1596846 : r1596863;
return r1596864;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.2 |
|---|---|
| Target | 20.4 |
| Herbie | 9.8 |
if b < -1.8774910265390396e-73Initial program 52.5
Taylor expanded around -inf 8.6
Simplified8.6
if -1.8774910265390396e-73 < b < 2.5703497435733685e+102Initial program 13.1
rmApplied add-sqr-sqrt13.1
Applied sqrt-prod13.3
rmApplied neg-sub013.3
Applied associate--l-13.3
Simplified13.1
if 2.5703497435733685e+102 < b Initial program 43.9
Taylor expanded around inf 2.9
Final simplification9.8
herbie shell --seed 2019153
(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)))