\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 -6.615151909502748 \cdot 10^{-87}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 3.5387363548079373 \cdot 10^{+99}:\\
\;\;\;\;\left(-\frac{b}{2 \cdot a}\right) - \frac{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{a}\\
\end{array}double f(double a, double b, double c) {
double r3018016 = b;
double r3018017 = -r3018016;
double r3018018 = r3018016 * r3018016;
double r3018019 = 4.0;
double r3018020 = a;
double r3018021 = c;
double r3018022 = r3018020 * r3018021;
double r3018023 = r3018019 * r3018022;
double r3018024 = r3018018 - r3018023;
double r3018025 = sqrt(r3018024);
double r3018026 = r3018017 - r3018025;
double r3018027 = 2.0;
double r3018028 = r3018027 * r3018020;
double r3018029 = r3018026 / r3018028;
return r3018029;
}
double f(double a, double b, double c) {
double r3018030 = b;
double r3018031 = -6.615151909502748e-87;
bool r3018032 = r3018030 <= r3018031;
double r3018033 = c;
double r3018034 = r3018033 / r3018030;
double r3018035 = -r3018034;
double r3018036 = 3.5387363548079373e+99;
bool r3018037 = r3018030 <= r3018036;
double r3018038 = 2.0;
double r3018039 = a;
double r3018040 = r3018038 * r3018039;
double r3018041 = r3018030 / r3018040;
double r3018042 = -r3018041;
double r3018043 = r3018030 * r3018030;
double r3018044 = r3018039 * r3018033;
double r3018045 = 4.0;
double r3018046 = r3018044 * r3018045;
double r3018047 = r3018043 - r3018046;
double r3018048 = sqrt(r3018047);
double r3018049 = r3018048 / r3018040;
double r3018050 = r3018042 - r3018049;
double r3018051 = -r3018030;
double r3018052 = r3018051 / r3018039;
double r3018053 = r3018037 ? r3018050 : r3018052;
double r3018054 = r3018032 ? r3018035 : r3018053;
return r3018054;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.0 |
|---|---|
| Target | 20.1 |
| Herbie | 10.4 |
if b < -6.615151909502748e-87Initial program 51.9
rmApplied div-sub52.5
Taylor expanded around -inf 10.0
Simplified10.0
if -6.615151909502748e-87 < b < 3.5387363548079373e+99Initial program 12.8
rmApplied div-sub12.8
if 3.5387363548079373e+99 < b Initial program 44.4
rmApplied *-un-lft-identity44.4
Applied associate-/l*44.5
Taylor expanded around 0 3.9
Simplified3.9
Final simplification10.4
herbie shell --seed 2019133
(FPCore (a b c)
:name "The quadratic formula (r2)"
: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)))