\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.4767676629755074 \cdot 10^{150}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le -9.7864508816148999 \cdot 10^{-248}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}\\
\mathbf{elif}\;b \le 8.29347910705948456 \cdot 10^{98}:\\
\;\;\;\;\frac{-b}{2 \cdot a} - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r101164 = b;
double r101165 = -r101164;
double r101166 = r101164 * r101164;
double r101167 = 4.0;
double r101168 = a;
double r101169 = c;
double r101170 = r101168 * r101169;
double r101171 = r101167 * r101170;
double r101172 = r101166 - r101171;
double r101173 = sqrt(r101172);
double r101174 = r101165 - r101173;
double r101175 = 2.0;
double r101176 = r101175 * r101168;
double r101177 = r101174 / r101176;
return r101177;
}
double f(double a, double b, double c) {
double r101178 = b;
double r101179 = -4.4767676629755074e+150;
bool r101180 = r101178 <= r101179;
double r101181 = -1.0;
double r101182 = c;
double r101183 = r101182 / r101178;
double r101184 = r101181 * r101183;
double r101185 = -9.7864508816149e-248;
bool r101186 = r101178 <= r101185;
double r101187 = 1.0;
double r101188 = 2.0;
double r101189 = r101187 / r101188;
double r101190 = 4.0;
double r101191 = r101190 * r101182;
double r101192 = r101178 * r101178;
double r101193 = a;
double r101194 = r101193 * r101182;
double r101195 = r101190 * r101194;
double r101196 = r101192 - r101195;
double r101197 = sqrt(r101196);
double r101198 = r101197 - r101178;
double r101199 = r101191 / r101198;
double r101200 = r101189 * r101199;
double r101201 = 8.293479107059485e+98;
bool r101202 = r101178 <= r101201;
double r101203 = -r101178;
double r101204 = r101188 * r101193;
double r101205 = r101203 / r101204;
double r101206 = r101197 / r101204;
double r101207 = r101205 - r101206;
double r101208 = 1.0;
double r101209 = r101178 / r101193;
double r101210 = r101183 - r101209;
double r101211 = r101208 * r101210;
double r101212 = r101202 ? r101207 : r101211;
double r101213 = r101186 ? r101200 : r101212;
double r101214 = r101180 ? r101184 : r101213;
return r101214;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 21.5 |
| Herbie | 6.6 |
if b < -4.4767676629755074e+150Initial program 63.7
Taylor expanded around -inf 1.4
if -4.4767676629755074e+150 < b < -9.7864508816149e-248Initial program 36.5
rmApplied flip--36.5
Simplified16.2
Simplified16.2
rmApplied *-un-lft-identity16.2
Applied *-un-lft-identity16.2
Applied times-frac16.2
Applied times-frac16.2
Simplified16.2
Simplified14.2
rmApplied *-un-lft-identity14.2
Applied times-frac14.2
Simplified14.2
Simplified7.3
if -9.7864508816149e-248 < b < 8.293479107059485e+98Initial program 10.0
rmApplied div-sub10.0
if 8.293479107059485e+98 < b Initial program 46.8
Taylor expanded around inf 3.8
Simplified3.8
Final simplification6.6
herbie shell --seed 2020060
(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)))