\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 -1.260961702089070630848300788408824469286 \cdot 10^{118}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 5.818433225743210113099557178165353186607 \cdot 10^{-115}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r38536 = b;
double r38537 = -r38536;
double r38538 = r38536 * r38536;
double r38539 = 4.0;
double r38540 = a;
double r38541 = c;
double r38542 = r38540 * r38541;
double r38543 = r38539 * r38542;
double r38544 = r38538 - r38543;
double r38545 = sqrt(r38544);
double r38546 = r38537 + r38545;
double r38547 = 2.0;
double r38548 = r38547 * r38540;
double r38549 = r38546 / r38548;
return r38549;
}
double f(double a, double b, double c) {
double r38550 = b;
double r38551 = -1.2609617020890706e+118;
bool r38552 = r38550 <= r38551;
double r38553 = 1.0;
double r38554 = c;
double r38555 = r38554 / r38550;
double r38556 = a;
double r38557 = r38550 / r38556;
double r38558 = r38555 - r38557;
double r38559 = r38553 * r38558;
double r38560 = 5.81843322574321e-115;
bool r38561 = r38550 <= r38560;
double r38562 = -r38550;
double r38563 = r38550 * r38550;
double r38564 = 4.0;
double r38565 = r38556 * r38554;
double r38566 = r38564 * r38565;
double r38567 = r38563 - r38566;
double r38568 = sqrt(r38567);
double r38569 = r38562 + r38568;
double r38570 = 2.0;
double r38571 = r38570 * r38556;
double r38572 = r38569 / r38571;
double r38573 = -1.0;
double r38574 = r38573 * r38555;
double r38575 = r38561 ? r38572 : r38574;
double r38576 = r38552 ? r38559 : r38575;
return r38576;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.6 |
|---|---|
| Target | 20.5 |
| Herbie | 10.2 |
if b < -1.2609617020890706e+118Initial program 51.6
Taylor expanded around -inf 2.7
Simplified2.7
if -1.2609617020890706e+118 < b < 5.81843322574321e-115Initial program 11.5
if 5.81843322574321e-115 < b Initial program 51.3
Taylor expanded around inf 11.3
Final simplification10.2
herbie shell --seed 2019298
(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)))