\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 -5.791348048249166002460683130439961414293 \cdot 10^{138}:\\
\;\;\;\;\frac{\left(\frac{a}{\frac{b}{c}} - b\right) \cdot 1}{a}\\
\mathbf{elif}\;b \le 1.832703499755311344543445048213516250218 \cdot 10^{-46}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-1}{\frac{b}{a \cdot c}}}{a}\\
\end{array}double f(double a, double b, double c) {
double r70359 = b;
double r70360 = -r70359;
double r70361 = r70359 * r70359;
double r70362 = 4.0;
double r70363 = a;
double r70364 = c;
double r70365 = r70363 * r70364;
double r70366 = r70362 * r70365;
double r70367 = r70361 - r70366;
double r70368 = sqrt(r70367);
double r70369 = r70360 + r70368;
double r70370 = 2.0;
double r70371 = r70370 * r70363;
double r70372 = r70369 / r70371;
return r70372;
}
double f(double a, double b, double c) {
double r70373 = b;
double r70374 = -5.791348048249166e+138;
bool r70375 = r70373 <= r70374;
double r70376 = a;
double r70377 = c;
double r70378 = r70373 / r70377;
double r70379 = r70376 / r70378;
double r70380 = r70379 - r70373;
double r70381 = 1.0;
double r70382 = r70380 * r70381;
double r70383 = r70382 / r70376;
double r70384 = 1.8327034997553113e-46;
bool r70385 = r70373 <= r70384;
double r70386 = r70373 * r70373;
double r70387 = 4.0;
double r70388 = r70387 * r70376;
double r70389 = r70388 * r70377;
double r70390 = r70386 - r70389;
double r70391 = sqrt(r70390);
double r70392 = r70391 - r70373;
double r70393 = 2.0;
double r70394 = r70392 / r70393;
double r70395 = r70394 / r70376;
double r70396 = -1.0;
double r70397 = r70376 * r70377;
double r70398 = r70373 / r70397;
double r70399 = r70396 / r70398;
double r70400 = r70399 / r70376;
double r70401 = r70385 ? r70395 : r70400;
double r70402 = r70375 ? r70383 : r70401;
return r70402;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 21.0 |
| Herbie | 13.9 |
if b < -5.791348048249166e+138Initial program 58.5
Simplified58.5
Taylor expanded around -inf 9.2
Simplified2.0
if -5.791348048249166e+138 < b < 1.8327034997553113e-46Initial program 13.0
Simplified13.0
if 1.8327034997553113e-46 < b Initial program 54.2
Simplified54.2
Taylor expanded around inf 18.5
Simplified18.9
Final simplification13.9
herbie shell --seed 2019174
(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)))