\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 -4.825330629057740564739189793323147405328 \cdot 10^{-58}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 1.295909507922486729244255700447297235864 \cdot 10^{107}:\\
\;\;\;\;{\left(\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\right)}^{1}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r100049 = b;
double r100050 = -r100049;
double r100051 = r100049 * r100049;
double r100052 = 4.0;
double r100053 = a;
double r100054 = c;
double r100055 = r100053 * r100054;
double r100056 = r100052 * r100055;
double r100057 = r100051 - r100056;
double r100058 = sqrt(r100057);
double r100059 = r100050 - r100058;
double r100060 = 2.0;
double r100061 = r100060 * r100053;
double r100062 = r100059 / r100061;
return r100062;
}
double f(double a, double b, double c) {
double r100063 = b;
double r100064 = -4.8253306290577406e-58;
bool r100065 = r100063 <= r100064;
double r100066 = -1.0;
double r100067 = c;
double r100068 = r100067 / r100063;
double r100069 = r100066 * r100068;
double r100070 = 1.2959095079224867e+107;
bool r100071 = r100063 <= r100070;
double r100072 = -r100063;
double r100073 = r100063 * r100063;
double r100074 = 4.0;
double r100075 = a;
double r100076 = r100075 * r100067;
double r100077 = r100074 * r100076;
double r100078 = r100073 - r100077;
double r100079 = sqrt(r100078);
double r100080 = r100072 - r100079;
double r100081 = 2.0;
double r100082 = r100081 * r100075;
double r100083 = r100080 / r100082;
double r100084 = 1.0;
double r100085 = pow(r100083, r100084);
double r100086 = 1.0;
double r100087 = r100063 / r100075;
double r100088 = r100068 - r100087;
double r100089 = r100086 * r100088;
double r100090 = r100071 ? r100085 : r100089;
double r100091 = r100065 ? r100069 : r100090;
return r100091;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.9 |
|---|---|
| Target | 20.9 |
| Herbie | 10.1 |
if b < -4.8253306290577406e-58Initial program 53.0
Taylor expanded around -inf 8.6
if -4.8253306290577406e-58 < b < 1.2959095079224867e+107Initial program 13.5
rmApplied div-inv13.7
rmApplied pow113.7
Applied pow113.7
Applied pow-prod-down13.7
Simplified13.5
if 1.2959095079224867e+107 < b Initial program 47.9
Taylor expanded around inf 3.6
Simplified3.6
Final simplification10.1
herbie shell --seed 2019352 +o rules:numerics
(FPCore (a b c)
:name "quadm (p42, negative)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))