\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 -4.020085128891057834325363211730480675064 \cdot 10^{108}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le \frac{4344526679424155}{1.161731959748268017810986326679609812603 \cdot 10^{282}}:\\
\;\;\;\;\frac{\frac{1}{2 \cdot a} \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{elif}\;b \le 1.715181108188238274259588142060201574853 \cdot 10^{78}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r80544 = b;
double r80545 = -r80544;
double r80546 = r80544 * r80544;
double r80547 = 4.0;
double r80548 = a;
double r80549 = c;
double r80550 = r80548 * r80549;
double r80551 = r80547 * r80550;
double r80552 = r80546 - r80551;
double r80553 = sqrt(r80552);
double r80554 = r80545 - r80553;
double r80555 = 2.0;
double r80556 = r80555 * r80548;
double r80557 = r80554 / r80556;
return r80557;
}
double f(double a, double b, double c) {
double r80558 = b;
double r80559 = -4.020085128891058e+108;
bool r80560 = r80558 <= r80559;
double r80561 = -1.0;
double r80562 = c;
double r80563 = r80562 / r80558;
double r80564 = r80561 * r80563;
double r80565 = 4344526679424155.0;
double r80566 = 1.161731959748268e+282;
double r80567 = r80565 / r80566;
bool r80568 = r80558 <= r80567;
double r80569 = 1.0;
double r80570 = 2.0;
double r80571 = a;
double r80572 = r80570 * r80571;
double r80573 = r80569 / r80572;
double r80574 = 2.0;
double r80575 = pow(r80558, r80574);
double r80576 = r80575 - r80575;
double r80577 = 4.0;
double r80578 = r80571 * r80562;
double r80579 = r80577 * r80578;
double r80580 = r80576 + r80579;
double r80581 = r80573 * r80580;
double r80582 = -r80558;
double r80583 = r80558 * r80558;
double r80584 = r80583 - r80579;
double r80585 = sqrt(r80584);
double r80586 = r80582 + r80585;
double r80587 = r80581 / r80586;
double r80588 = 1.7151811081882383e+78;
bool r80589 = r80558 <= r80588;
double r80590 = r80582 - r80585;
double r80591 = r80590 / r80572;
double r80592 = r80558 / r80571;
double r80593 = r80561 * r80592;
double r80594 = r80589 ? r80591 : r80593;
double r80595 = r80568 ? r80587 : r80594;
double r80596 = r80560 ? r80564 : r80595;
return r80596;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 21.0 |
| Herbie | 8.9 |
if b < -4.020085128891058e+108Initial program 59.6
Taylor expanded around -inf 2.7
if -4.020085128891058e+108 < b < 3.7396979939895573e-267Initial program 31.7
rmApplied div-inv31.8
rmApplied flip--31.8
Applied associate-*l/31.8
Simplified15.3
if 3.7396979939895573e-267 < b < 1.7151811081882383e+78Initial program 8.6
if 1.7151811081882383e+78 < b Initial program 43.0
rmApplied div-inv43.0
rmApplied flip--62.6
Applied frac-times63.1
Simplified62.4
Taylor expanded around 0 4.8
Final simplification8.9
herbie shell --seed 2019303
(FPCore (a b c)
:name "quadm (p42, negative)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))