\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 -4.706781135059311758856471716413486308072 \cdot 10^{-92}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 5.722235152988638272816037483919181313619 \cdot 10^{98}:\\
\;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{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 r85849 = b;
double r85850 = -r85849;
double r85851 = r85849 * r85849;
double r85852 = 4.0;
double r85853 = a;
double r85854 = c;
double r85855 = r85853 * r85854;
double r85856 = r85852 * r85855;
double r85857 = r85851 - r85856;
double r85858 = sqrt(r85857);
double r85859 = r85850 - r85858;
double r85860 = 2.0;
double r85861 = r85860 * r85853;
double r85862 = r85859 / r85861;
return r85862;
}
double f(double a, double b, double c) {
double r85863 = b;
double r85864 = -4.706781135059312e-92;
bool r85865 = r85863 <= r85864;
double r85866 = -1.0;
double r85867 = c;
double r85868 = r85867 / r85863;
double r85869 = r85866 * r85868;
double r85870 = 5.722235152988638e+98;
bool r85871 = r85863 <= r85870;
double r85872 = -r85863;
double r85873 = r85863 * r85863;
double r85874 = 4.0;
double r85875 = a;
double r85876 = r85875 * r85867;
double r85877 = r85874 * r85876;
double r85878 = r85873 - r85877;
double r85879 = sqrt(r85878);
double r85880 = r85872 - r85879;
double r85881 = 1.0;
double r85882 = 2.0;
double r85883 = r85882 * r85875;
double r85884 = r85881 / r85883;
double r85885 = r85880 * r85884;
double r85886 = 1.0;
double r85887 = r85863 / r85875;
double r85888 = r85868 - r85887;
double r85889 = r85886 * r85888;
double r85890 = r85871 ? r85885 : r85889;
double r85891 = r85865 ? r85869 : r85890;
return r85891;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 21.5 |
| Herbie | 10.2 |
if b < -4.706781135059312e-92Initial program 52.4
Taylor expanded around -inf 10.3
if -4.706781135059312e-92 < b < 5.722235152988638e+98Initial program 12.7
rmApplied div-inv12.8
if 5.722235152988638e+98 < b Initial program 47.2
Taylor expanded around inf 3.6
Simplified3.6
Final simplification10.2
herbie shell --seed 2019353
(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)))