\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 -2.2415082771065304 \cdot 10^{-131}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 2.559678284282607 \cdot 10^{+69}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\left(-4 \cdot a\right) \cdot c + b \cdot b}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r903526 = b;
double r903527 = -r903526;
double r903528 = r903526 * r903526;
double r903529 = 4.0;
double r903530 = a;
double r903531 = c;
double r903532 = r903530 * r903531;
double r903533 = r903529 * r903532;
double r903534 = r903528 - r903533;
double r903535 = sqrt(r903534);
double r903536 = r903527 - r903535;
double r903537 = 2.0;
double r903538 = r903537 * r903530;
double r903539 = r903536 / r903538;
return r903539;
}
double f(double a, double b, double c) {
double r903540 = b;
double r903541 = -2.2415082771065304e-131;
bool r903542 = r903540 <= r903541;
double r903543 = c;
double r903544 = r903543 / r903540;
double r903545 = -r903544;
double r903546 = 2.559678284282607e+69;
bool r903547 = r903540 <= r903546;
double r903548 = -r903540;
double r903549 = -4.0;
double r903550 = a;
double r903551 = r903549 * r903550;
double r903552 = r903551 * r903543;
double r903553 = r903540 * r903540;
double r903554 = r903552 + r903553;
double r903555 = sqrt(r903554);
double r903556 = r903548 - r903555;
double r903557 = 2.0;
double r903558 = r903550 * r903557;
double r903559 = r903556 / r903558;
double r903560 = r903540 / r903550;
double r903561 = r903544 - r903560;
double r903562 = r903547 ? r903559 : r903561;
double r903563 = r903542 ? r903545 : r903562;
return r903563;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.2 |
|---|---|
| Target | 19.9 |
| Herbie | 10.7 |
if b < -2.2415082771065304e-131Initial program 49.6
rmApplied div-inv49.6
Simplified49.6
Taylor expanded around -inf 12.4
Simplified12.4
if -2.2415082771065304e-131 < b < 2.559678284282607e+69Initial program 11.4
Taylor expanded around -inf 11.4
Simplified11.4
if 2.559678284282607e+69 < b Initial program 38.9
Taylor expanded around -inf 38.9
Simplified39.0
Taylor expanded around inf 4.8
Final simplification10.7
herbie shell --seed 2019152
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 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)))