\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.836476522143192884813309842834615858794 \cdot 10^{134}:\\
\;\;\;\;\frac{\left(2 \cdot \frac{c}{b} - \frac{b}{a}\right) - \frac{b}{a}}{2}\\
\mathbf{elif}\;b \le 8.272706925888016273629504343982488312855 \cdot 10^{-43}:\\
\;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\
\end{array}double f(double a, double b, double c) {
double r4166439 = b;
double r4166440 = -r4166439;
double r4166441 = r4166439 * r4166439;
double r4166442 = 4.0;
double r4166443 = a;
double r4166444 = c;
double r4166445 = r4166443 * r4166444;
double r4166446 = r4166442 * r4166445;
double r4166447 = r4166441 - r4166446;
double r4166448 = sqrt(r4166447);
double r4166449 = r4166440 + r4166448;
double r4166450 = 2.0;
double r4166451 = r4166450 * r4166443;
double r4166452 = r4166449 / r4166451;
return r4166452;
}
double f(double a, double b, double c) {
double r4166453 = b;
double r4166454 = -5.836476522143193e+134;
bool r4166455 = r4166453 <= r4166454;
double r4166456 = 2.0;
double r4166457 = c;
double r4166458 = r4166457 / r4166453;
double r4166459 = r4166456 * r4166458;
double r4166460 = a;
double r4166461 = r4166453 / r4166460;
double r4166462 = r4166459 - r4166461;
double r4166463 = r4166462 - r4166461;
double r4166464 = r4166463 / r4166456;
double r4166465 = 8.272706925888016e-43;
bool r4166466 = r4166453 <= r4166465;
double r4166467 = 1.0;
double r4166468 = r4166467 / r4166460;
double r4166469 = r4166453 * r4166453;
double r4166470 = 4.0;
double r4166471 = r4166470 * r4166460;
double r4166472 = r4166471 * r4166457;
double r4166473 = r4166469 - r4166472;
double r4166474 = sqrt(r4166473);
double r4166475 = r4166474 - r4166453;
double r4166476 = r4166468 * r4166475;
double r4166477 = r4166476 / r4166456;
double r4166478 = -2.0;
double r4166479 = r4166458 * r4166478;
double r4166480 = r4166479 / r4166456;
double r4166481 = r4166466 ? r4166477 : r4166480;
double r4166482 = r4166455 ? r4166464 : r4166481;
return r4166482;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.0 |
|---|---|
| Target | 21.1 |
| Herbie | 10.2 |
if b < -5.836476522143193e+134Initial program 56.2
Simplified56.2
rmApplied div-sub56.2
Taylor expanded around -inf 2.4
if -5.836476522143193e+134 < b < 8.272706925888016e-43Initial program 14.0
Simplified14.0
rmApplied div-inv14.1
if 8.272706925888016e-43 < b Initial program 54.4
Simplified54.4
Taylor expanded around inf 7.5
Final simplification10.2
herbie shell --seed 2019169
(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)))