\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 -9.44750035307145 \cdot 10^{+99}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le -9.715316061514381 \cdot 10^{-195}:\\
\;\;\;\;-\frac{\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a}}{\left(-b\right) + \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}\\
\mathbf{elif}\;b \le 4.716596953029048 \cdot 10^{+90}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r11582161 = b;
double r11582162 = -r11582161;
double r11582163 = r11582161 * r11582161;
double r11582164 = 4.0;
double r11582165 = a;
double r11582166 = c;
double r11582167 = r11582165 * r11582166;
double r11582168 = r11582164 * r11582167;
double r11582169 = r11582163 - r11582168;
double r11582170 = sqrt(r11582169);
double r11582171 = r11582162 - r11582170;
double r11582172 = 2.0;
double r11582173 = r11582172 * r11582165;
double r11582174 = r11582171 / r11582173;
return r11582174;
}
double f(double a, double b, double c) {
double r11582175 = b;
double r11582176 = -9.44750035307145e+99;
bool r11582177 = r11582175 <= r11582176;
double r11582178 = c;
double r11582179 = r11582178 / r11582175;
double r11582180 = -r11582179;
double r11582181 = -9.715316061514381e-195;
bool r11582182 = r11582175 <= r11582181;
double r11582183 = a;
double r11582184 = r11582183 * r11582178;
double r11582185 = -0.5;
double r11582186 = r11582184 / r11582185;
double r11582187 = r11582186 / r11582183;
double r11582188 = -r11582175;
double r11582189 = r11582175 * r11582175;
double r11582190 = 4.0;
double r11582191 = r11582184 * r11582190;
double r11582192 = r11582189 - r11582191;
double r11582193 = sqrt(r11582192);
double r11582194 = r11582188 + r11582193;
double r11582195 = r11582187 / r11582194;
double r11582196 = -r11582195;
double r11582197 = 4.716596953029048e+90;
bool r11582198 = r11582175 <= r11582197;
double r11582199 = r11582188 - r11582193;
double r11582200 = 2.0;
double r11582201 = r11582183 * r11582200;
double r11582202 = r11582199 / r11582201;
double r11582203 = r11582175 / r11582183;
double r11582204 = r11582179 - r11582203;
double r11582205 = r11582198 ? r11582202 : r11582204;
double r11582206 = r11582182 ? r11582196 : r11582205;
double r11582207 = r11582177 ? r11582180 : r11582206;
return r11582207;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.2 |
|---|---|
| Target | 20.1 |
| Herbie | 8.9 |
if b < -9.44750035307145e+99Initial program 58.3
rmApplied div-inv58.3
rmApplied un-div-inv58.3
Taylor expanded around -inf 2.1
Simplified2.1
if -9.44750035307145e+99 < b < -9.715316061514381e-195Initial program 37.2
rmApplied div-inv37.3
rmApplied flip--37.4
Applied associate-*l/37.4
Simplified15.3
if -9.715316061514381e-195 < b < 4.716596953029048e+90Initial program 11.0
rmApplied div-inv11.2
rmApplied un-div-inv11.0
if 4.716596953029048e+90 < b Initial program 42.2
rmApplied div-inv42.3
rmApplied un-div-inv42.2
Taylor expanded around inf 3.8
Final simplification8.9
herbie shell --seed 2019112 +o rules:numerics
(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)))