\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -9.088000531423294 \cdot 10^{+152}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 9.354082991670835 \cdot 10^{-125}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}{a}}{2} - \frac{\frac{b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1466243 = b;
double r1466244 = -r1466243;
double r1466245 = r1466243 * r1466243;
double r1466246 = 4.0;
double r1466247 = a;
double r1466248 = r1466246 * r1466247;
double r1466249 = c;
double r1466250 = r1466248 * r1466249;
double r1466251 = r1466245 - r1466250;
double r1466252 = sqrt(r1466251);
double r1466253 = r1466244 + r1466252;
double r1466254 = 2.0;
double r1466255 = r1466254 * r1466247;
double r1466256 = r1466253 / r1466255;
return r1466256;
}
double f(double a, double b, double c) {
double r1466257 = b;
double r1466258 = -9.088000531423294e+152;
bool r1466259 = r1466257 <= r1466258;
double r1466260 = c;
double r1466261 = r1466260 / r1466257;
double r1466262 = a;
double r1466263 = r1466257 / r1466262;
double r1466264 = r1466261 - r1466263;
double r1466265 = 9.354082991670835e-125;
bool r1466266 = r1466257 <= r1466265;
double r1466267 = r1466257 * r1466257;
double r1466268 = r1466260 * r1466262;
double r1466269 = 4.0;
double r1466270 = r1466268 * r1466269;
double r1466271 = r1466267 - r1466270;
double r1466272 = sqrt(r1466271);
double r1466273 = r1466272 / r1466262;
double r1466274 = 2.0;
double r1466275 = r1466273 / r1466274;
double r1466276 = r1466263 / r1466274;
double r1466277 = r1466275 - r1466276;
double r1466278 = -r1466261;
double r1466279 = r1466266 ? r1466277 : r1466278;
double r1466280 = r1466259 ? r1466264 : r1466279;
return r1466280;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 32.9 |
|---|---|
| Target | 20.3 |
| Herbie | 10.3 |
if b < -9.088000531423294e+152Initial program 60.4
Simplified60.4
Taylor expanded around -inf 1.5
if -9.088000531423294e+152 < b < 9.354082991670835e-125Initial program 10.9
Simplified10.9
rmApplied div-sub10.9
Applied div-sub10.9
if 9.354082991670835e-125 < b Initial program 49.8
Simplified49.8
Taylor expanded around inf 11.9
Simplified11.9
Final simplification10.3
herbie shell --seed 2019153
(FPCore (a b c)
:name "The quadratic formula (r1)"
:herbie-target
(if (< b 0) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))