\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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 4.825478720088060668779950456669858064189 \cdot 10^{107}:\\
\;\;\;\;\left(-\frac{b}{2 \cdot a}\right) - \frac{\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 r5940774 = b;
double r5940775 = -r5940774;
double r5940776 = r5940774 * r5940774;
double r5940777 = 4.0;
double r5940778 = a;
double r5940779 = c;
double r5940780 = r5940778 * r5940779;
double r5940781 = r5940777 * r5940780;
double r5940782 = r5940776 - r5940781;
double r5940783 = sqrt(r5940782);
double r5940784 = r5940775 - r5940783;
double r5940785 = 2.0;
double r5940786 = r5940785 * r5940778;
double r5940787 = r5940784 / r5940786;
return r5940787;
}
double f(double a, double b, double c) {
double r5940788 = b;
double r5940789 = -9.332433396832084e-58;
bool r5940790 = r5940788 <= r5940789;
double r5940791 = -1.0;
double r5940792 = c;
double r5940793 = r5940792 / r5940788;
double r5940794 = r5940791 * r5940793;
double r5940795 = 4.8254787200880607e+107;
bool r5940796 = r5940788 <= r5940795;
double r5940797 = 2.0;
double r5940798 = a;
double r5940799 = r5940797 * r5940798;
double r5940800 = r5940788 / r5940799;
double r5940801 = -r5940800;
double r5940802 = r5940788 * r5940788;
double r5940803 = 4.0;
double r5940804 = r5940798 * r5940792;
double r5940805 = r5940803 * r5940804;
double r5940806 = r5940802 - r5940805;
double r5940807 = sqrt(r5940806);
double r5940808 = r5940807 / r5940799;
double r5940809 = r5940801 - r5940808;
double r5940810 = r5940788 / r5940798;
double r5940811 = r5940791 * r5940810;
double r5940812 = r5940796 ? r5940809 : r5940811;
double r5940813 = r5940790 ? r5940794 : r5940812;
return r5940813;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 21.4 |
| Herbie | 10.5 |
if b < -9.332433396832084e-58Initial program 53.5
Taylor expanded around -inf 8.7
if -9.332433396832084e-58 < b < 4.8254787200880607e+107Initial program 14.1
rmApplied div-sub14.1
if 4.8254787200880607e+107 < b Initial program 49.2
rmApplied flip--63.2
Simplified62.3
Simplified62.3
Taylor expanded around 0 3.7
Final simplification10.5
herbie shell --seed 2019171
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))