\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;\left(y \cdot 9\right) \cdot z \le -3.8672592931070556 \cdot 10^{204} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 1.4897412691355755 \cdot 10^{307}\right):\\
\;\;\;\;x \cdot 2 + \left(27 \cdot \left(a \cdot b\right) - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot 2 + \left(27 \cdot \left(a \cdot b\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r864160 = x;
double r864161 = 2.0;
double r864162 = r864160 * r864161;
double r864163 = y;
double r864164 = 9.0;
double r864165 = r864163 * r864164;
double r864166 = z;
double r864167 = r864165 * r864166;
double r864168 = t;
double r864169 = r864167 * r864168;
double r864170 = r864162 - r864169;
double r864171 = a;
double r864172 = 27.0;
double r864173 = r864171 * r864172;
double r864174 = b;
double r864175 = r864173 * r864174;
double r864176 = r864170 + r864175;
return r864176;
}
double f(double x, double y, double z, double t, double a, double b) {
double r864177 = y;
double r864178 = 9.0;
double r864179 = r864177 * r864178;
double r864180 = z;
double r864181 = r864179 * r864180;
double r864182 = -3.8672592931070556e+204;
bool r864183 = r864181 <= r864182;
double r864184 = 1.4897412691355755e+307;
bool r864185 = r864181 <= r864184;
double r864186 = !r864185;
bool r864187 = r864183 || r864186;
double r864188 = x;
double r864189 = 2.0;
double r864190 = r864188 * r864189;
double r864191 = 27.0;
double r864192 = a;
double r864193 = b;
double r864194 = r864192 * r864193;
double r864195 = r864191 * r864194;
double r864196 = t;
double r864197 = r864180 * r864196;
double r864198 = r864179 * r864197;
double r864199 = r864195 - r864198;
double r864200 = r864190 + r864199;
double r864201 = r864180 * r864177;
double r864202 = r864196 * r864201;
double r864203 = r864178 * r864202;
double r864204 = r864195 - r864203;
double r864205 = r864190 + r864204;
double r864206 = r864187 ? r864200 : r864205;
return r864206;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 3.4 |
|---|---|
| Target | 2.4 |
| Herbie | 0.4 |
if (* (* y 9.0) z) < -3.8672592931070556e+204 or 1.4897412691355755e+307 < (* (* y 9.0) z) Initial program 36.2
rmApplied sub-neg36.2
Applied associate-+l+36.2
Simplified36.0
rmApplied associate-*l*1.8
if -3.8672592931070556e+204 < (* (* y 9.0) z) < 1.4897412691355755e+307Initial program 0.4
rmApplied sub-neg0.4
Applied associate-+l+0.4
Simplified0.3
Taylor expanded around inf 0.3
Final simplification0.4
herbie shell --seed 2020065
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))
(+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))