\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 -63362873442066488610789523456:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\
\mathbf{elif}\;b \le 6.484072051994263737451444554171174935457 \cdot 10^{-107}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot -1\\
\end{array}double f(double a, double b, double c) {
double r3832423 = b;
double r3832424 = -r3832423;
double r3832425 = r3832423 * r3832423;
double r3832426 = 4.0;
double r3832427 = a;
double r3832428 = c;
double r3832429 = r3832427 * r3832428;
double r3832430 = r3832426 * r3832429;
double r3832431 = r3832425 - r3832430;
double r3832432 = sqrt(r3832431);
double r3832433 = r3832424 + r3832432;
double r3832434 = 2.0;
double r3832435 = r3832434 * r3832427;
double r3832436 = r3832433 / r3832435;
return r3832436;
}
double f(double a, double b, double c) {
double r3832437 = b;
double r3832438 = -6.336287344206649e+28;
bool r3832439 = r3832437 <= r3832438;
double r3832440 = c;
double r3832441 = r3832440 / r3832437;
double r3832442 = a;
double r3832443 = r3832437 / r3832442;
double r3832444 = r3832441 - r3832443;
double r3832445 = 1.0;
double r3832446 = r3832444 * r3832445;
double r3832447 = 6.484072051994264e-107;
bool r3832448 = r3832437 <= r3832447;
double r3832449 = r3832437 * r3832437;
double r3832450 = 4.0;
double r3832451 = r3832442 * r3832450;
double r3832452 = r3832451 * r3832440;
double r3832453 = r3832449 - r3832452;
double r3832454 = sqrt(r3832453);
double r3832455 = r3832454 - r3832437;
double r3832456 = 2.0;
double r3832457 = r3832455 / r3832456;
double r3832458 = r3832457 / r3832442;
double r3832459 = -1.0;
double r3832460 = r3832441 * r3832459;
double r3832461 = r3832448 ? r3832458 : r3832460;
double r3832462 = r3832439 ? r3832446 : r3832461;
return r3832462;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.5 |
|---|---|
| Target | 21.0 |
| Herbie | 10.3 |
if b < -6.336287344206649e+28Initial program 34.8
Simplified34.8
Taylor expanded around -inf 7.0
Simplified7.0
if -6.336287344206649e+28 < b < 6.484072051994264e-107Initial program 12.9
Simplified12.9
if 6.484072051994264e-107 < b Initial program 52.5
Simplified52.5
Taylor expanded around inf 9.7
Final simplification10.3
herbie shell --seed 2019192
(FPCore (a b c)
:name "quadp (p42, positive)"
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))