\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.9358923729233266 \cdot 10^{149}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 9.39036747108992214 \cdot 10^{-69}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r58369 = b;
double r58370 = -r58369;
double r58371 = r58369 * r58369;
double r58372 = 4.0;
double r58373 = a;
double r58374 = c;
double r58375 = r58373 * r58374;
double r58376 = r58372 * r58375;
double r58377 = r58371 - r58376;
double r58378 = sqrt(r58377);
double r58379 = r58370 + r58378;
double r58380 = 2.0;
double r58381 = r58380 * r58373;
double r58382 = r58379 / r58381;
return r58382;
}
double f(double a, double b, double c) {
double r58383 = b;
double r58384 = -2.9358923729233266e+149;
bool r58385 = r58383 <= r58384;
double r58386 = 1.0;
double r58387 = c;
double r58388 = r58387 / r58383;
double r58389 = a;
double r58390 = r58383 / r58389;
double r58391 = r58388 - r58390;
double r58392 = r58386 * r58391;
double r58393 = 9.390367471089922e-69;
bool r58394 = r58383 <= r58393;
double r58395 = r58383 * r58383;
double r58396 = 4.0;
double r58397 = r58389 * r58387;
double r58398 = r58396 * r58397;
double r58399 = r58395 - r58398;
double r58400 = sqrt(r58399);
double r58401 = r58400 - r58383;
double r58402 = 2.0;
double r58403 = r58402 * r58389;
double r58404 = r58401 / r58403;
double r58405 = -1.0;
double r58406 = r58405 * r58388;
double r58407 = r58394 ? r58404 : r58406;
double r58408 = r58385 ? r58392 : r58407;
return r58408;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 21.2 |
| Herbie | 9.8 |
if b < -2.9358923729233266e+149Initial program 62.1
Taylor expanded around -inf 1.7
Simplified1.7
if -2.9358923729233266e+149 < b < 9.390367471089922e-69Initial program 12.5
rmApplied div-inv12.7
rmApplied associate-*r/12.5
Simplified12.5
if 9.390367471089922e-69 < b Initial program 53.5
Taylor expanded around inf 8.7
Final simplification9.8
herbie shell --seed 2020018 +o rules:numerics
(FPCore (a b c)
:name "quadp (p42, positive)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))