\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 -2.6487898413435469 \cdot 10^{-64}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 1.43504028250552318 \cdot 10^{146}:\\
\;\;\;\;\frac{-b}{2 \cdot a} - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{2 \cdot a} - 0.5 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r87369 = b;
double r87370 = -r87369;
double r87371 = r87369 * r87369;
double r87372 = 4.0;
double r87373 = a;
double r87374 = c;
double r87375 = r87373 * r87374;
double r87376 = r87372 * r87375;
double r87377 = r87371 - r87376;
double r87378 = sqrt(r87377);
double r87379 = r87370 - r87378;
double r87380 = 2.0;
double r87381 = r87380 * r87373;
double r87382 = r87379 / r87381;
return r87382;
}
double f(double a, double b, double c) {
double r87383 = b;
double r87384 = -2.648789841343547e-64;
bool r87385 = r87383 <= r87384;
double r87386 = -1.0;
double r87387 = c;
double r87388 = r87387 / r87383;
double r87389 = r87386 * r87388;
double r87390 = 1.4350402825055232e+146;
bool r87391 = r87383 <= r87390;
double r87392 = -r87383;
double r87393 = 2.0;
double r87394 = a;
double r87395 = r87393 * r87394;
double r87396 = r87392 / r87395;
double r87397 = r87383 * r87383;
double r87398 = 4.0;
double r87399 = r87394 * r87387;
double r87400 = r87398 * r87399;
double r87401 = r87397 - r87400;
double r87402 = sqrt(r87401);
double r87403 = r87402 / r87395;
double r87404 = r87396 - r87403;
double r87405 = 0.5;
double r87406 = r87383 / r87394;
double r87407 = r87405 * r87406;
double r87408 = r87396 - r87407;
double r87409 = r87391 ? r87404 : r87408;
double r87410 = r87385 ? r87389 : r87409;
return r87410;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 20.7 |
| Herbie | 9.5 |
if b < -2.648789841343547e-64Initial program 53.8
Taylor expanded around -inf 7.9
if -2.648789841343547e-64 < b < 1.4350402825055232e+146Initial program 12.4
rmApplied div-sub12.4
if 1.4350402825055232e+146 < b Initial program 60.9
rmApplied div-sub60.9
rmApplied clear-num60.9
Taylor expanded around 0 2.8
Final simplification9.5
herbie shell --seed 2020049 +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)))