\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 -6.9315373378557038 \cdot 10^{-23}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 1.77017414835012383 \cdot 10^{70}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r74201 = b;
double r74202 = -r74201;
double r74203 = r74201 * r74201;
double r74204 = 4.0;
double r74205 = a;
double r74206 = c;
double r74207 = r74205 * r74206;
double r74208 = r74204 * r74207;
double r74209 = r74203 - r74208;
double r74210 = sqrt(r74209);
double r74211 = r74202 - r74210;
double r74212 = 2.0;
double r74213 = r74212 * r74205;
double r74214 = r74211 / r74213;
return r74214;
}
double f(double a, double b, double c) {
double r74215 = b;
double r74216 = -6.931537337855704e-23;
bool r74217 = r74215 <= r74216;
double r74218 = -1.0;
double r74219 = c;
double r74220 = r74219 / r74215;
double r74221 = r74218 * r74220;
double r74222 = 1.7701741483501238e+70;
bool r74223 = r74215 <= r74222;
double r74224 = -r74215;
double r74225 = r74215 * r74215;
double r74226 = 4.0;
double r74227 = a;
double r74228 = r74227 * r74219;
double r74229 = r74226 * r74228;
double r74230 = r74225 - r74229;
double r74231 = sqrt(r74230);
double r74232 = r74224 - r74231;
double r74233 = 2.0;
double r74234 = r74233 * r74227;
double r74235 = r74232 / r74234;
double r74236 = r74215 / r74227;
double r74237 = r74218 * r74236;
double r74238 = r74223 ? r74235 : r74237;
double r74239 = r74217 ? r74221 : r74238;
return r74239;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 20.8 |
| Herbie | 10.8 |
if b < -6.931537337855704e-23Initial program 54.3
Taylor expanded around -inf 7.3
if -6.931537337855704e-23 < b < 1.7701741483501238e+70Initial program 15.5
rmApplied div-inv15.6
rmApplied un-div-inv15.5
if 1.7701741483501238e+70 < b Initial program 41.6
rmApplied clear-num41.7
Taylor expanded around 0 5.7
Final simplification10.8
herbie shell --seed 2020025 +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)))