\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 -4.463381827278506 \cdot 10^{+97}:\\
\;\;\;\;-\frac{c}{b}\\
\mathbf{elif}\;b \le -2.7394104193355045 \cdot 10^{-295}:\\
\;\;\;\;\frac{1}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b} \cdot \left(2 \cdot c\right)\\
\mathbf{elif}\;b \le 4.0392005370549217 \cdot 10^{+149}:\\
\;\;\;\;\frac{1}{\frac{a \cdot 2}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r3356491 = b;
double r3356492 = -r3356491;
double r3356493 = r3356491 * r3356491;
double r3356494 = 4.0;
double r3356495 = a;
double r3356496 = c;
double r3356497 = r3356495 * r3356496;
double r3356498 = r3356494 * r3356497;
double r3356499 = r3356493 - r3356498;
double r3356500 = sqrt(r3356499);
double r3356501 = r3356492 - r3356500;
double r3356502 = 2.0;
double r3356503 = r3356502 * r3356495;
double r3356504 = r3356501 / r3356503;
return r3356504;
}
double f(double a, double b, double c) {
double r3356505 = b;
double r3356506 = -4.463381827278506e+97;
bool r3356507 = r3356505 <= r3356506;
double r3356508 = c;
double r3356509 = r3356508 / r3356505;
double r3356510 = -r3356509;
double r3356511 = -2.7394104193355045e-295;
bool r3356512 = r3356505 <= r3356511;
double r3356513 = 1.0;
double r3356514 = r3356505 * r3356505;
double r3356515 = 4.0;
double r3356516 = a;
double r3356517 = r3356516 * r3356508;
double r3356518 = r3356515 * r3356517;
double r3356519 = r3356514 - r3356518;
double r3356520 = sqrt(r3356519);
double r3356521 = r3356520 - r3356505;
double r3356522 = r3356513 / r3356521;
double r3356523 = 2.0;
double r3356524 = r3356523 * r3356508;
double r3356525 = r3356522 * r3356524;
double r3356526 = 4.0392005370549217e+149;
bool r3356527 = r3356505 <= r3356526;
double r3356528 = r3356516 * r3356523;
double r3356529 = -r3356505;
double r3356530 = r3356529 - r3356520;
double r3356531 = r3356528 / r3356530;
double r3356532 = r3356513 / r3356531;
double r3356533 = r3356505 / r3356516;
double r3356534 = r3356509 - r3356533;
double r3356535 = r3356527 ? r3356532 : r3356534;
double r3356536 = r3356512 ? r3356525 : r3356535;
double r3356537 = r3356507 ? r3356510 : r3356536;
return r3356537;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 21.0 |
| Herbie | 6.7 |
if b < -4.463381827278506e+97Initial program 58.7
Taylor expanded around -inf 2.1
Simplified2.1
if -4.463381827278506e+97 < b < -2.7394104193355045e-295Initial program 32.9
rmApplied *-un-lft-identity32.9
Applied associate-/l*32.9
rmApplied flip--33.0
Applied associate-/r/33.1
Applied add-cube-cbrt33.1
Applied times-frac33.1
Simplified15.6
Simplified15.6
Taylor expanded around inf 8.7
if -2.7394104193355045e-295 < b < 4.0392005370549217e+149Initial program 9.4
rmApplied *-un-lft-identity9.4
Applied associate-/l*9.6
if 4.0392005370549217e+149 < b Initial program 59.1
Taylor expanded around inf 2.6
Final simplification6.7
herbie shell --seed 2019139
(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)))