\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 -2.2375225949334019 \cdot 10^{57}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 8.67970785211126629 \cdot 10^{-40}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r72272 = b;
double r72273 = -r72272;
double r72274 = r72272 * r72272;
double r72275 = 4.0;
double r72276 = a;
double r72277 = c;
double r72278 = r72276 * r72277;
double r72279 = r72275 * r72278;
double r72280 = r72274 - r72279;
double r72281 = sqrt(r72280);
double r72282 = r72273 + r72281;
double r72283 = 2.0;
double r72284 = r72283 * r72276;
double r72285 = r72282 / r72284;
return r72285;
}
double f(double a, double b, double c) {
double r72286 = b;
double r72287 = -2.237522594933402e+57;
bool r72288 = r72286 <= r72287;
double r72289 = 1.0;
double r72290 = c;
double r72291 = r72290 / r72286;
double r72292 = a;
double r72293 = r72286 / r72292;
double r72294 = r72291 - r72293;
double r72295 = r72289 * r72294;
double r72296 = 8.679707852111266e-40;
bool r72297 = r72286 <= r72296;
double r72298 = -r72286;
double r72299 = r72286 * r72286;
double r72300 = 4.0;
double r72301 = r72292 * r72290;
double r72302 = r72300 * r72301;
double r72303 = r72299 - r72302;
double r72304 = sqrt(r72303);
double r72305 = r72298 + r72304;
double r72306 = 2.0;
double r72307 = r72306 * r72292;
double r72308 = r72305 / r72307;
double r72309 = -1.0;
double r72310 = r72309 * r72291;
double r72311 = r72297 ? r72308 : r72310;
double r72312 = r72288 ? r72295 : r72311;
return r72312;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 20.9 |
| Herbie | 10.6 |
if b < -2.237522594933402e+57Initial program 38.1
Taylor expanded around -inf 5.5
Simplified5.5
if -2.237522594933402e+57 < b < 8.679707852111266e-40Initial program 15.3
if 8.679707852111266e-40 < b Initial program 55.1
Taylor expanded around inf 7.5
Final simplification10.6
herbie shell --seed 2020025
(FPCore (a b c)
:name "quadp (p42, positive)"
:precision binary64
:herbie-target
(if (< b 0.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)))