\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 -5.53173257864094428 \cdot 10^{38}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -1.3119329296566595 \cdot 10^{-127}:\\
\;\;\;\;\frac{\frac{4}{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{a \cdot c}} \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{2 \cdot a}\\
\mathbf{elif}\;b \le 2.54629873571897363 \cdot 10^{71}:\\
\;\;\;\;\frac{\frac{1}{2 \cdot a} \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r63152 = b;
double r63153 = -r63152;
double r63154 = r63152 * r63152;
double r63155 = 4.0;
double r63156 = a;
double r63157 = c;
double r63158 = r63156 * r63157;
double r63159 = r63155 * r63158;
double r63160 = r63154 - r63159;
double r63161 = sqrt(r63160);
double r63162 = r63153 + r63161;
double r63163 = 2.0;
double r63164 = r63163 * r63156;
double r63165 = r63162 / r63164;
return r63165;
}
double f(double a, double b, double c) {
double r63166 = b;
double r63167 = -5.531732578640944e+38;
bool r63168 = r63166 <= r63167;
double r63169 = 1.0;
double r63170 = c;
double r63171 = r63170 / r63166;
double r63172 = a;
double r63173 = r63166 / r63172;
double r63174 = r63171 - r63173;
double r63175 = r63169 * r63174;
double r63176 = -1.3119329296566595e-127;
bool r63177 = r63166 <= r63176;
double r63178 = 4.0;
double r63179 = 2.0;
double r63180 = pow(r63166, r63179);
double r63181 = r63180 - r63180;
double r63182 = r63172 * r63170;
double r63183 = r63178 * r63182;
double r63184 = r63181 + r63183;
double r63185 = r63184 / r63182;
double r63186 = r63178 / r63185;
double r63187 = -r63166;
double r63188 = r63166 * r63166;
double r63189 = r63188 - r63183;
double r63190 = sqrt(r63189);
double r63191 = r63187 + r63190;
double r63192 = r63186 * r63191;
double r63193 = 2.0;
double r63194 = r63193 * r63172;
double r63195 = r63192 / r63194;
double r63196 = 2.5462987357189736e+71;
bool r63197 = r63166 <= r63196;
double r63198 = 1.0;
double r63199 = r63198 / r63194;
double r63200 = r63199 * r63184;
double r63201 = r63187 - r63190;
double r63202 = r63200 / r63201;
double r63203 = -1.0;
double r63204 = r63203 * r63171;
double r63205 = r63197 ? r63202 : r63204;
double r63206 = r63177 ? r63195 : r63205;
double r63207 = r63168 ? r63175 : r63206;
return r63207;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.8 |
|---|---|
| Target | 21.2 |
| Herbie | 11.1 |
if b < -5.531732578640944e+38Initial program 36.8
Taylor expanded around -inf 6.6
Simplified6.6
if -5.531732578640944e+38 < b < -1.3119329296566595e-127Initial program 6.5
rmApplied flip-+38.9
Simplified38.9
rmApplied flip--38.9
Applied associate-/r/38.9
Simplified16.6
if -1.3119329296566595e-127 < b < 2.5462987357189736e+71Initial program 27.1
rmApplied div-inv27.1
rmApplied flip-+28.1
Applied associate-*l/28.1
Simplified17.4
if 2.5462987357189736e+71 < b Initial program 58.6
Taylor expanded around inf 2.7
Final simplification11.1
herbie shell --seed 2020039
(FPCore (a b c)
:name "quadp (p42, positive)"
:precision binary64
:herbie-target
(if (< b 0.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)))