\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.90131991727783 \cdot 10^{-39}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 4.012768074517757 \cdot 10^{+87}:\\
\;\;\;\;\frac{\frac{\frac{1}{2}}{a}}{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-b}{a}\\
\end{array}double f(double a, double b, double c) {
double r1796228 = b;
double r1796229 = -r1796228;
double r1796230 = r1796228 * r1796228;
double r1796231 = 4.0;
double r1796232 = a;
double r1796233 = c;
double r1796234 = r1796232 * r1796233;
double r1796235 = r1796231 * r1796234;
double r1796236 = r1796230 - r1796235;
double r1796237 = sqrt(r1796236);
double r1796238 = r1796229 - r1796237;
double r1796239 = 2.0;
double r1796240 = r1796239 * r1796232;
double r1796241 = r1796238 / r1796240;
return r1796241;
}
double f(double a, double b, double c) {
double r1796242 = b;
double r1796243 = -6.90131991727783e-39;
bool r1796244 = r1796242 <= r1796243;
double r1796245 = c;
double r1796246 = r1796245 / r1796242;
double r1796247 = -r1796246;
double r1796248 = 4.012768074517757e+87;
bool r1796249 = r1796242 <= r1796248;
double r1796250 = 0.5;
double r1796251 = a;
double r1796252 = r1796250 / r1796251;
double r1796253 = 1.0;
double r1796254 = -r1796242;
double r1796255 = r1796242 * r1796242;
double r1796256 = r1796245 * r1796251;
double r1796257 = 4.0;
double r1796258 = r1796256 * r1796257;
double r1796259 = r1796255 - r1796258;
double r1796260 = sqrt(r1796259);
double r1796261 = r1796254 - r1796260;
double r1796262 = r1796253 / r1796261;
double r1796263 = r1796252 / r1796262;
double r1796264 = r1796254 / r1796251;
double r1796265 = r1796249 ? r1796263 : r1796264;
double r1796266 = r1796244 ? r1796247 : r1796265;
return r1796266;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 32.6 |
|---|---|
| Target | 20.0 |
| Herbie | 9.7 |
if b < -6.90131991727783e-39Initial program 53.0
Taylor expanded around -inf 7.9
Simplified7.9
if -6.90131991727783e-39 < b < 4.012768074517757e+87Initial program 13.2
rmApplied *-un-lft-identity13.2
Applied associate-/l*13.4
rmApplied div-inv13.4
Applied associate-/r*13.4
Simplified13.4
if 4.012768074517757e+87 < b Initial program 41.3
rmApplied *-un-lft-identity41.3
Applied associate-/l*41.3
rmApplied div-inv41.4
Applied associate-/r*41.4
Simplified41.4
Taylor expanded around 0 3.3
Simplified3.3
Final simplification9.7
herbie shell --seed 2019132
(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)))