\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 -14858297.0087451544:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -1.46153957938955092 \cdot 10^{-137}:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.3845340503596435 \cdot 10^{70}:\\
\;\;\;\;\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r82132 = b;
double r82133 = -r82132;
double r82134 = r82132 * r82132;
double r82135 = 4.0;
double r82136 = a;
double r82137 = c;
double r82138 = r82136 * r82137;
double r82139 = r82135 * r82138;
double r82140 = r82134 - r82139;
double r82141 = sqrt(r82140);
double r82142 = r82133 - r82141;
double r82143 = 2.0;
double r82144 = r82143 * r82136;
double r82145 = r82142 / r82144;
return r82145;
}
double f(double a, double b, double c) {
double r82146 = b;
double r82147 = -14858297.008745154;
bool r82148 = r82146 <= r82147;
double r82149 = -1.0;
double r82150 = c;
double r82151 = r82150 / r82146;
double r82152 = r82149 * r82151;
double r82153 = -1.461539579389551e-137;
bool r82154 = r82146 <= r82153;
double r82155 = 2.0;
double r82156 = pow(r82146, r82155);
double r82157 = r82156 - r82156;
double r82158 = 4.0;
double r82159 = a;
double r82160 = r82159 * r82150;
double r82161 = r82158 * r82160;
double r82162 = r82157 + r82161;
double r82163 = r82146 * r82146;
double r82164 = r82163 - r82161;
double r82165 = sqrt(r82164);
double r82166 = r82165 - r82146;
double r82167 = r82162 / r82166;
double r82168 = 2.0;
double r82169 = r82168 * r82159;
double r82170 = r82167 / r82169;
double r82171 = 1.3845340503596435e+70;
bool r82172 = r82146 <= r82171;
double r82173 = -r82146;
double r82174 = r82173 - r82165;
double r82175 = r82174 / r82168;
double r82176 = r82175 / r82159;
double r82177 = r82146 / r82159;
double r82178 = r82149 * r82177;
double r82179 = r82172 ? r82176 : r82178;
double r82180 = r82154 ? r82170 : r82179;
double r82181 = r82148 ? r82152 : r82180;
return r82181;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 20.8 |
| Herbie | 9.3 |
if b < -14858297.008745154Initial program 55.2
Taylor expanded around -inf 5.8
if -14858297.008745154 < b < -1.461539579389551e-137Initial program 35.4
rmApplied flip--35.5
Simplified18.0
Simplified18.0
if -1.461539579389551e-137 < b < 1.3845340503596435e+70Initial program 11.6
rmApplied associate-/r*11.6
if 1.3845340503596435e+70 < b Initial program 41.5
rmApplied associate-/r*41.5
rmApplied *-un-lft-identity41.5
Applied *-un-lft-identity41.5
Applied times-frac41.5
Applied associate-/l*41.6
Taylor expanded around 0 5.7
Final simplification9.3
herbie shell --seed 2020025
(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)))