\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.178432289663324 \cdot 10^{+129}:\\
\;\;\;\;\frac{\frac{\left(\frac{c}{\frac{b}{a}} - b\right) \cdot 2}{a}}{2}\\
\mathbf{elif}\;b \le 2.2927953806734678 \cdot 10^{-60}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b + \left(-4 \cdot a\right) \cdot c} - b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{c \cdot a}{b} \cdot -2}{a}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1334214 = b;
double r1334215 = -r1334214;
double r1334216 = r1334214 * r1334214;
double r1334217 = 4.0;
double r1334218 = a;
double r1334219 = c;
double r1334220 = r1334218 * r1334219;
double r1334221 = r1334217 * r1334220;
double r1334222 = r1334216 - r1334221;
double r1334223 = sqrt(r1334222);
double r1334224 = r1334215 + r1334223;
double r1334225 = 2.0;
double r1334226 = r1334225 * r1334218;
double r1334227 = r1334224 / r1334226;
return r1334227;
}
double f(double a, double b, double c) {
double r1334228 = b;
double r1334229 = -1.178432289663324e+129;
bool r1334230 = r1334228 <= r1334229;
double r1334231 = c;
double r1334232 = a;
double r1334233 = r1334228 / r1334232;
double r1334234 = r1334231 / r1334233;
double r1334235 = r1334234 - r1334228;
double r1334236 = 2.0;
double r1334237 = r1334235 * r1334236;
double r1334238 = r1334237 / r1334232;
double r1334239 = r1334238 / r1334236;
double r1334240 = 2.2927953806734678e-60;
bool r1334241 = r1334228 <= r1334240;
double r1334242 = r1334228 * r1334228;
double r1334243 = -4.0;
double r1334244 = r1334243 * r1334232;
double r1334245 = r1334244 * r1334231;
double r1334246 = r1334242 + r1334245;
double r1334247 = sqrt(r1334246);
double r1334248 = r1334247 - r1334228;
double r1334249 = r1334248 / r1334232;
double r1334250 = r1334249 / r1334236;
double r1334251 = r1334231 * r1334232;
double r1334252 = r1334251 / r1334228;
double r1334253 = -2.0;
double r1334254 = r1334252 * r1334253;
double r1334255 = r1334254 / r1334232;
double r1334256 = r1334255 / r1334236;
double r1334257 = r1334241 ? r1334250 : r1334256;
double r1334258 = r1334230 ? r1334239 : r1334257;
return r1334258;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.4 |
|---|---|
| Target | 20.6 |
| Herbie | 14.0 |
if b < -1.178432289663324e+129Initial program 52.3
Simplified52.3
Taylor expanded around -inf 9.6
Simplified2.7
if -1.178432289663324e+129 < b < 2.2927953806734678e-60Initial program 13.2
Simplified13.2
Taylor expanded around 0 13.2
Simplified13.2
if 2.2927953806734678e-60 < b Initial program 52.8
Simplified52.8
Taylor expanded around inf 19.0
Final simplification14.0
herbie shell --seed 2019146
(FPCore (a b c)
:name "quadp (p42, positive)"
: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)))