\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.569494919068124572690421335939486791404 \cdot 10^{-64}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 2.8653816703769607550753035783606354728 \cdot 10^{117}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r3637819 = b;
double r3637820 = -r3637819;
double r3637821 = r3637819 * r3637819;
double r3637822 = 4.0;
double r3637823 = a;
double r3637824 = c;
double r3637825 = r3637823 * r3637824;
double r3637826 = r3637822 * r3637825;
double r3637827 = r3637821 - r3637826;
double r3637828 = sqrt(r3637827);
double r3637829 = r3637820 - r3637828;
double r3637830 = 2.0;
double r3637831 = r3637830 * r3637823;
double r3637832 = r3637829 / r3637831;
return r3637832;
}
double f(double a, double b, double c) {
double r3637833 = b;
double r3637834 = -2.5694949190681246e-64;
bool r3637835 = r3637833 <= r3637834;
double r3637836 = -1.0;
double r3637837 = c;
double r3637838 = r3637837 / r3637833;
double r3637839 = r3637836 * r3637838;
double r3637840 = 2.865381670376961e+117;
bool r3637841 = r3637833 <= r3637840;
double r3637842 = -r3637833;
double r3637843 = r3637833 * r3637833;
double r3637844 = a;
double r3637845 = 4.0;
double r3637846 = r3637837 * r3637845;
double r3637847 = r3637844 * r3637846;
double r3637848 = r3637843 - r3637847;
double r3637849 = sqrt(r3637848);
double r3637850 = r3637842 - r3637849;
double r3637851 = 2.0;
double r3637852 = r3637844 * r3637851;
double r3637853 = r3637850 / r3637852;
double r3637854 = r3637833 / r3637844;
double r3637855 = r3637836 * r3637854;
double r3637856 = r3637841 ? r3637853 : r3637855;
double r3637857 = r3637835 ? r3637839 : r3637856;
return r3637857;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 20.9 |
| Herbie | 10.2 |
if b < -2.5694949190681246e-64Initial program 53.0
Taylor expanded around -inf 9.1
if -2.5694949190681246e-64 < b < 2.865381670376961e+117Initial program 13.1
rmApplied clear-num13.2
rmApplied *-un-lft-identity13.2
Applied add-cube-cbrt13.2
Applied times-frac13.2
Simplified13.2
Simplified13.1
if 2.865381670376961e+117 < b Initial program 52.1
rmApplied clear-num52.2
Taylor expanded around 0 3.1
Final simplification10.2
herbie shell --seed 2019169
(FPCore (a b c)
:name "The quadratic formula (r2)"
: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)))