\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 -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(a \cdot 4\right) \cdot c}}{a}}{2} - \frac{\frac{b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1309299 = b;
double r1309300 = -r1309299;
double r1309301 = r1309299 * r1309299;
double r1309302 = 4.0;
double r1309303 = a;
double r1309304 = c;
double r1309305 = r1309303 * r1309304;
double r1309306 = r1309302 * r1309305;
double r1309307 = r1309301 - r1309306;
double r1309308 = sqrt(r1309307);
double r1309309 = r1309300 + r1309308;
double r1309310 = 2.0;
double r1309311 = r1309310 * r1309303;
double r1309312 = r1309309 / r1309311;
return r1309312;
}
double f(double a, double b, double c) {
double r1309313 = b;
double r1309314 = -9.088000531423294e+152;
bool r1309315 = r1309313 <= r1309314;
double r1309316 = c;
double r1309317 = r1309316 / r1309313;
double r1309318 = a;
double r1309319 = r1309313 / r1309318;
double r1309320 = r1309317 - r1309319;
double r1309321 = 9.354082991670835e-125;
bool r1309322 = r1309313 <= r1309321;
double r1309323 = r1309313 * r1309313;
double r1309324 = 4.0;
double r1309325 = r1309318 * r1309324;
double r1309326 = r1309325 * r1309316;
double r1309327 = r1309323 - r1309326;
double r1309328 = sqrt(r1309327);
double r1309329 = r1309328 / r1309318;
double r1309330 = 2.0;
double r1309331 = r1309329 / r1309330;
double r1309332 = r1309319 / r1309330;
double r1309333 = r1309331 - r1309332;
double r1309334 = -r1309317;
double r1309335 = r1309322 ? r1309333 : r1309334;
double r1309336 = r1309315 ? r1309320 : r1309335;
return r1309336;
}




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 "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)))