\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}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{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 r87223 = b;
double r87224 = -r87223;
double r87225 = r87223 * r87223;
double r87226 = 4.0;
double r87227 = a;
double r87228 = c;
double r87229 = r87227 * r87228;
double r87230 = r87226 * r87229;
double r87231 = r87225 - r87230;
double r87232 = sqrt(r87231);
double r87233 = r87224 - r87232;
double r87234 = 2.0;
double r87235 = r87234 * r87227;
double r87236 = r87233 / r87235;
return r87236;
}
double f(double a, double b, double c) {
double r87237 = b;
double r87238 = -4.706781135059312e-92;
bool r87239 = r87237 <= r87238;
double r87240 = -1.0;
double r87241 = c;
double r87242 = r87241 / r87237;
double r87243 = r87240 * r87242;
double r87244 = 5.722235152988638e+98;
bool r87245 = r87237 <= r87244;
double r87246 = -r87237;
double r87247 = r87237 * r87237;
double r87248 = 4.0;
double r87249 = a;
double r87250 = r87249 * r87241;
double r87251 = r87248 * r87250;
double r87252 = r87247 - r87251;
double r87253 = sqrt(r87252);
double r87254 = r87246 - r87253;
double r87255 = 2.0;
double r87256 = r87255 * r87249;
double r87257 = r87254 / r87256;
double r87258 = 1.0;
double r87259 = r87237 / r87249;
double r87260 = r87242 - r87259;
double r87261 = r87258 * r87260;
double r87262 = r87245 ? r87257 : r87261;
double r87263 = r87239 ? r87243 : r87262;
return r87263;
}




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
rmApplied un-div-inv12.7
if 5.722235152988638e+98 < b Initial program 47.2
Taylor expanded around inf 3.6
Simplified3.6
Final simplification10.2
herbie shell --seed 2019353 +o rules:numerics
(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)))