\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{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r109932 = b;
double r109933 = -r109932;
double r109934 = r109932 * r109932;
double r109935 = 4.0;
double r109936 = a;
double r109937 = c;
double r109938 = r109936 * r109937;
double r109939 = r109935 * r109938;
double r109940 = r109934 - r109939;
double r109941 = sqrt(r109940);
double r109942 = r109933 - r109941;
double r109943 = 2.0;
double r109944 = r109943 * r109936;
double r109945 = r109942 / r109944;
return r109945;
}
double f(double a, double b, double c) {
double r109946 = b;
double r109947 = -8.364554704106616e-80;
bool r109948 = r109946 <= r109947;
double r109949 = -1.0;
double r109950 = c;
double r109951 = r109950 / r109946;
double r109952 = r109949 * r109951;
double r109953 = 4.1199128263687574e+46;
bool r109954 = r109946 <= r109953;
double r109955 = 1.0;
double r109956 = 2.0;
double r109957 = a;
double r109958 = r109956 * r109957;
double r109959 = -r109946;
double r109960 = r109946 * r109946;
double r109961 = 4.0;
double r109962 = r109957 * r109950;
double r109963 = r109961 * r109962;
double r109964 = r109960 - r109963;
double r109965 = sqrt(r109964);
double r109966 = r109959 - r109965;
double r109967 = r109958 / r109966;
double r109968 = r109955 / r109967;
double r109969 = 1.0;
double r109970 = r109946 / r109957;
double r109971 = r109951 - r109970;
double r109972 = r109969 * r109971;
double r109973 = r109954 ? r109968 : r109972;
double r109974 = r109948 ? r109952 : r109973;
return r109974;
}




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
if 4.1199128263687574e+46 < b Initial program 36.8
Taylor expanded around inf 5.2
Simplified5.2
Final simplification10.2
herbie shell --seed 2020046
(FPCore (a b c)
:name "The quadratic formula (r2)"
: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)))