\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.5961406266953245 \cdot 10^{-58}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 3.1115579814291686 \cdot 10^{+29}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{a}\\
\end{array}double f(double a, double b, double c) {
double r3420717 = b;
double r3420718 = -r3420717;
double r3420719 = r3420717 * r3420717;
double r3420720 = 4.0;
double r3420721 = a;
double r3420722 = c;
double r3420723 = r3420721 * r3420722;
double r3420724 = r3420720 * r3420723;
double r3420725 = r3420719 - r3420724;
double r3420726 = sqrt(r3420725);
double r3420727 = r3420718 - r3420726;
double r3420728 = 2.0;
double r3420729 = r3420728 * r3420721;
double r3420730 = r3420727 / r3420729;
return r3420730;
}
double f(double a, double b, double c) {
double r3420731 = b;
double r3420732 = -1.5961406266953245e-58;
bool r3420733 = r3420731 <= r3420732;
double r3420734 = c;
double r3420735 = r3420734 / r3420731;
double r3420736 = -r3420735;
double r3420737 = 3.1115579814291686e+29;
bool r3420738 = r3420731 <= r3420737;
double r3420739 = -r3420731;
double r3420740 = r3420731 * r3420731;
double r3420741 = a;
double r3420742 = r3420734 * r3420741;
double r3420743 = 4.0;
double r3420744 = r3420742 * r3420743;
double r3420745 = r3420740 - r3420744;
double r3420746 = sqrt(r3420745);
double r3420747 = r3420739 - r3420746;
double r3420748 = 2.0;
double r3420749 = r3420741 * r3420748;
double r3420750 = r3420747 / r3420749;
double r3420751 = r3420739 / r3420741;
double r3420752 = r3420738 ? r3420750 : r3420751;
double r3420753 = r3420733 ? r3420736 : r3420752;
return r3420753;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 20.6 |
| Herbie | 10.4 |
if b < -1.5961406266953245e-58Initial program 53.4
Taylor expanded around -inf 8.1
Simplified8.1
if -1.5961406266953245e-58 < b < 3.1115579814291686e+29Initial program 14.7
rmApplied *-un-lft-identity14.7
Applied *-un-lft-identity14.7
Applied distribute-lft-out--14.7
Applied associate-/l*14.9
rmApplied div-inv14.9
Applied *-un-lft-identity14.9
Applied times-frac14.9
Simplified14.8
rmApplied associate-*l/14.7
Simplified14.7
if 3.1115579814291686e+29 < b Initial program 34.4
rmApplied *-un-lft-identity34.4
Applied *-un-lft-identity34.4
Applied distribute-lft-out--34.4
Applied associate-/l*34.5
rmApplied div-inv34.6
Applied *-un-lft-identity34.6
Applied times-frac34.6
Simplified34.5
Taylor expanded around 0 6.5
Simplified6.5
Final simplification10.4
herbie shell --seed 2019134
(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)))