\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 r1546447 = b;
double r1546448 = -r1546447;
double r1546449 = r1546447 * r1546447;
double r1546450 = 4.0;
double r1546451 = a;
double r1546452 = c;
double r1546453 = r1546451 * r1546452;
double r1546454 = r1546450 * r1546453;
double r1546455 = r1546449 - r1546454;
double r1546456 = sqrt(r1546455);
double r1546457 = r1546448 + r1546456;
double r1546458 = 2.0;
double r1546459 = r1546458 * r1546451;
double r1546460 = r1546457 / r1546459;
return r1546460;
}
double f(double a, double b, double c) {
double r1546461 = b;
double r1546462 = -9.088000531423294e+152;
bool r1546463 = r1546461 <= r1546462;
double r1546464 = c;
double r1546465 = r1546464 / r1546461;
double r1546466 = a;
double r1546467 = r1546461 / r1546466;
double r1546468 = r1546465 - r1546467;
double r1546469 = 9.354082991670835e-125;
bool r1546470 = r1546461 <= r1546469;
double r1546471 = r1546461 * r1546461;
double r1546472 = 4.0;
double r1546473 = r1546466 * r1546472;
double r1546474 = r1546473 * r1546464;
double r1546475 = r1546471 - r1546474;
double r1546476 = sqrt(r1546475);
double r1546477 = r1546476 / r1546466;
double r1546478 = 2.0;
double r1546479 = r1546477 / r1546478;
double r1546480 = r1546467 / r1546478;
double r1546481 = r1546479 - r1546480;
double r1546482 = -r1546465;
double r1546483 = r1546470 ? r1546481 : r1546482;
double r1546484 = r1546463 ? r1546468 : r1546483;
return r1546484;
}




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
rmApplied *-un-lft-identity60.4
Applied div-inv60.4
Applied times-frac60.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
rmApplied *-un-lft-identity49.8
Applied div-inv49.8
Applied times-frac49.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)))