\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.3933893531775335 \cdot 10^{-90}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 2445759453.4737968:\\
\;\;\;\;\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 r84008 = b;
double r84009 = -r84008;
double r84010 = r84008 * r84008;
double r84011 = 4.0;
double r84012 = a;
double r84013 = c;
double r84014 = r84012 * r84013;
double r84015 = r84011 * r84014;
double r84016 = r84010 - r84015;
double r84017 = sqrt(r84016);
double r84018 = r84009 - r84017;
double r84019 = 2.0;
double r84020 = r84019 * r84012;
double r84021 = r84018 / r84020;
return r84021;
}
double f(double a, double b, double c) {
double r84022 = b;
double r84023 = -1.3933893531775335e-90;
bool r84024 = r84022 <= r84023;
double r84025 = -1.0;
double r84026 = c;
double r84027 = r84026 / r84022;
double r84028 = r84025 * r84027;
double r84029 = 2445759453.473797;
bool r84030 = r84022 <= r84029;
double r84031 = 1.0;
double r84032 = 2.0;
double r84033 = a;
double r84034 = r84032 * r84033;
double r84035 = -r84022;
double r84036 = r84022 * r84022;
double r84037 = 4.0;
double r84038 = r84033 * r84026;
double r84039 = r84037 * r84038;
double r84040 = r84036 - r84039;
double r84041 = sqrt(r84040);
double r84042 = r84035 - r84041;
double r84043 = r84034 / r84042;
double r84044 = r84031 / r84043;
double r84045 = 1.0;
double r84046 = r84022 / r84033;
double r84047 = r84027 - r84046;
double r84048 = r84045 * r84047;
double r84049 = r84030 ? r84044 : r84048;
double r84050 = r84024 ? r84028 : r84049;
return r84050;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 21.1 |
| Herbie | 10.7 |
if b < -1.3933893531775335e-90Initial program 52.8
Taylor expanded around -inf 9.8
if -1.3933893531775335e-90 < b < 2445759453.473797Initial program 14.5
rmApplied clear-num14.5
if 2445759453.473797 < b Initial program 33.1
Taylor expanded around inf 6.5
Simplified6.5
Final simplification10.7
herbie shell --seed 2020059 +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)))