\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 -1.8774910265390396 \cdot 10^{-73}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le 2.5703497435733685 \cdot 10^{+102}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{a} \cdot \frac{1}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r1519362 = b;
double r1519363 = -r1519362;
double r1519364 = r1519362 * r1519362;
double r1519365 = 4.0;
double r1519366 = a;
double r1519367 = c;
double r1519368 = r1519366 * r1519367;
double r1519369 = r1519365 * r1519368;
double r1519370 = r1519364 - r1519369;
double r1519371 = sqrt(r1519370);
double r1519372 = r1519363 - r1519371;
double r1519373 = 2.0;
double r1519374 = r1519373 * r1519366;
double r1519375 = r1519372 / r1519374;
return r1519375;
}
double f(double a, double b, double c) {
double r1519376 = b;
double r1519377 = -1.8774910265390396e-73;
bool r1519378 = r1519376 <= r1519377;
double r1519379 = c;
double r1519380 = r1519379 / r1519376;
double r1519381 = -r1519380;
double r1519382 = 2.5703497435733685e+102;
bool r1519383 = r1519376 <= r1519382;
double r1519384 = -r1519376;
double r1519385 = r1519376 * r1519376;
double r1519386 = 4.0;
double r1519387 = a;
double r1519388 = r1519387 * r1519379;
double r1519389 = r1519386 * r1519388;
double r1519390 = r1519385 - r1519389;
double r1519391 = sqrt(r1519390);
double r1519392 = r1519384 - r1519391;
double r1519393 = r1519392 / r1519387;
double r1519394 = 0.5;
double r1519395 = r1519393 * r1519394;
double r1519396 = r1519376 / r1519387;
double r1519397 = r1519380 - r1519396;
double r1519398 = r1519383 ? r1519395 : r1519397;
double r1519399 = r1519378 ? r1519381 : r1519398;
return r1519399;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.2 |
|---|---|
| Target | 20.4 |
| Herbie | 9.8 |
if b < -1.8774910265390396e-73Initial program 52.5
Taylor expanded around 0 52.5
Simplified52.5
rmApplied div-inv52.5
Simplified52.5
Taylor expanded around -inf 8.6
Simplified8.6
if -1.8774910265390396e-73 < b < 2.5703497435733685e+102Initial program 13.1
rmApplied *-un-lft-identity13.1
Applied *-un-lft-identity13.1
Applied distribute-lft-out--13.1
Applied associate-/l*13.2
rmApplied *-un-lft-identity13.2
Applied *-un-lft-identity13.2
Applied distribute-lft-out--13.2
Applied times-frac13.2
Applied add-sqr-sqrt13.2
Applied times-frac13.2
Simplified13.2
Simplified13.1
if 2.5703497435733685e+102 < b Initial program 43.9
Taylor expanded around 0 43.9
Simplified43.9
Taylor expanded around inf 2.9
Final simplification9.8
herbie shell --seed 2019153
(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)))