\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.550162015746626746000974336574470460524 \cdot 10^{150}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 1.61145084478121505718169973575148582501 \cdot 10^{-34}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r69066 = b;
double r69067 = -r69066;
double r69068 = r69066 * r69066;
double r69069 = 4.0;
double r69070 = a;
double r69071 = c;
double r69072 = r69070 * r69071;
double r69073 = r69069 * r69072;
double r69074 = r69068 - r69073;
double r69075 = sqrt(r69074);
double r69076 = r69067 + r69075;
double r69077 = 2.0;
double r69078 = r69077 * r69070;
double r69079 = r69076 / r69078;
return r69079;
}
double f(double a, double b, double c) {
double r69080 = b;
double r69081 = -1.5501620157466267e+150;
bool r69082 = r69080 <= r69081;
double r69083 = 1.0;
double r69084 = c;
double r69085 = r69084 / r69080;
double r69086 = a;
double r69087 = r69080 / r69086;
double r69088 = r69085 - r69087;
double r69089 = r69083 * r69088;
double r69090 = 1.611450844781215e-34;
bool r69091 = r69080 <= r69090;
double r69092 = 1.0;
double r69093 = 2.0;
double r69094 = r69093 * r69086;
double r69095 = r69080 * r69080;
double r69096 = 4.0;
double r69097 = r69086 * r69084;
double r69098 = r69096 * r69097;
double r69099 = r69095 - r69098;
double r69100 = sqrt(r69099);
double r69101 = r69100 - r69080;
double r69102 = r69094 / r69101;
double r69103 = r69092 / r69102;
double r69104 = -1.0;
double r69105 = r69104 * r69085;
double r69106 = r69091 ? r69103 : r69105;
double r69107 = r69082 ? r69089 : r69106;
return r69107;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.1 |
|---|---|
| Target | 21.2 |
| Herbie | 9.9 |
if b < -1.5501620157466267e+150Initial program 62.9
Taylor expanded around -inf 1.7
Simplified1.7
if -1.5501620157466267e+150 < b < 1.611450844781215e-34Initial program 13.6
rmApplied clear-num13.7
Simplified13.7
if 1.611450844781215e-34 < b Initial program 55.0
Taylor expanded around inf 7.0
Final simplification9.9
herbie shell --seed 2019325
(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)))