\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 2495.5039318207096:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)} \cdot \mathsf{fma}\left(c \cdot -4, a, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, \sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)}, b \cdot b + \mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r838544 = b;
double r838545 = -r838544;
double r838546 = r838544 * r838544;
double r838547 = 4.0;
double r838548 = a;
double r838549 = r838547 * r838548;
double r838550 = c;
double r838551 = r838549 * r838550;
double r838552 = r838546 - r838551;
double r838553 = sqrt(r838552);
double r838554 = r838545 + r838553;
double r838555 = 2.0;
double r838556 = r838555 * r838548;
double r838557 = r838554 / r838556;
return r838557;
}
double f(double a, double b, double c) {
double r838558 = b;
double r838559 = 2495.5039318207096;
bool r838560 = r838558 <= r838559;
double r838561 = c;
double r838562 = -4.0;
double r838563 = r838561 * r838562;
double r838564 = a;
double r838565 = r838558 * r838558;
double r838566 = fma(r838563, r838564, r838565);
double r838567 = sqrt(r838566);
double r838568 = r838567 * r838566;
double r838569 = r838565 * r838558;
double r838570 = r838568 - r838569;
double r838571 = r838565 + r838566;
double r838572 = fma(r838558, r838567, r838571);
double r838573 = r838570 / r838572;
double r838574 = r838573 / r838564;
double r838575 = 2.0;
double r838576 = r838574 / r838575;
double r838577 = -2.0;
double r838578 = r838561 / r838558;
double r838579 = r838577 * r838578;
double r838580 = r838579 / r838575;
double r838581 = r838560 ? r838576 : r838580;
return r838581;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2495.5039318207096Initial program 17.8
Simplified17.7
rmApplied flip3--17.8
Simplified17.2
Simplified17.2
if 2495.5039318207096 < b Initial program 37.3
Simplified37.2
Taylor expanded around inf 15.5
Final simplification16.2
herbie shell --seed 2019153 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))