\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 -1.8719024022082672 \cdot 10^{+146}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\
\mathbf{elif}\;b \le 3.0396083187725924 \cdot 10^{-273}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}\\
\mathbf{elif}\;b \le 5.724613295007455 \cdot 10^{+79}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r10202146 = b;
double r10202147 = -r10202146;
double r10202148 = r10202146 * r10202146;
double r10202149 = 4.0;
double r10202150 = a;
double r10202151 = c;
double r10202152 = r10202150 * r10202151;
double r10202153 = r10202149 * r10202152;
double r10202154 = r10202148 - r10202153;
double r10202155 = sqrt(r10202154);
double r10202156 = r10202147 - r10202155;
double r10202157 = 2.0;
double r10202158 = r10202157 * r10202150;
double r10202159 = r10202156 / r10202158;
return r10202159;
}
double f(double a, double b, double c) {
double r10202160 = b;
double r10202161 = -1.8719024022082672e+146;
bool r10202162 = r10202160 <= r10202161;
double r10202163 = 0.5;
double r10202164 = 4.0;
double r10202165 = c;
double r10202166 = r10202164 * r10202165;
double r10202167 = a;
double r10202168 = r10202165 / r10202160;
double r10202169 = r10202167 * r10202168;
double r10202170 = r10202169 - r10202160;
double r10202171 = 2.0;
double r10202172 = r10202170 * r10202171;
double r10202173 = r10202166 / r10202172;
double r10202174 = r10202163 * r10202173;
double r10202175 = 3.0396083187725924e-273;
bool r10202176 = r10202160 <= r10202175;
double r10202177 = r10202160 * r10202160;
double r10202178 = r10202167 * r10202166;
double r10202179 = r10202177 - r10202178;
double r10202180 = sqrt(r10202179);
double r10202181 = r10202180 - r10202160;
double r10202182 = r10202166 / r10202181;
double r10202183 = r10202163 * r10202182;
double r10202184 = 5.724613295007455e+79;
bool r10202185 = r10202160 <= r10202184;
double r10202186 = 1.0;
double r10202187 = r10202171 * r10202167;
double r10202188 = -r10202160;
double r10202189 = r10202167 * r10202165;
double r10202190 = r10202189 * r10202164;
double r10202191 = r10202177 - r10202190;
double r10202192 = sqrt(r10202191);
double r10202193 = r10202188 - r10202192;
double r10202194 = r10202187 / r10202193;
double r10202195 = r10202186 / r10202194;
double r10202196 = r10202160 / r10202167;
double r10202197 = r10202168 - r10202196;
double r10202198 = r10202185 ? r10202195 : r10202197;
double r10202199 = r10202176 ? r10202183 : r10202198;
double r10202200 = r10202162 ? r10202174 : r10202199;
return r10202200;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.1 |
|---|---|
| Target | 20.4 |
| Herbie | 6.7 |
if b < -1.8719024022082672e+146Initial program 62.0
rmApplied flip--62.0
Simplified36.8
rmApplied *-un-lft-identity36.8
Applied times-frac36.8
Simplified36.8
Simplified36.6
Taylor expanded around -inf 7.4
Simplified1.6
if -1.8719024022082672e+146 < b < 3.0396083187725924e-273Initial program 33.1
rmApplied flip--33.2
Simplified15.9
rmApplied *-un-lft-identity15.9
Applied times-frac15.9
Simplified15.9
Simplified8.8
if 3.0396083187725924e-273 < b < 5.724613295007455e+79Initial program 8.5
rmApplied *-un-lft-identity8.5
Applied *-un-lft-identity8.5
Applied distribute-lft-out--8.5
Applied associate-/l*8.6
if 5.724613295007455e+79 < b Initial program 40.6
Taylor expanded around inf 4.7
Final simplification6.7
herbie shell --seed 2019125
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 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)))