\left(\left(x \cdot y + z \cdot z\right) + z \cdot z\right) + z \cdot z
\left(\left(\left(z \cdot {\left(\sqrt[3]{3}\right)}^{2}\right) \cdot z\right) \cdot \sqrt[3]{{\left(\sqrt[3]{3}\right)}^{2}}\right) \cdot \sqrt[3]{\sqrt[3]{3}} + x \cdot ydouble f(double x, double y, double z) {
double r464185 = x;
double r464186 = y;
double r464187 = r464185 * r464186;
double r464188 = z;
double r464189 = r464188 * r464188;
double r464190 = r464187 + r464189;
double r464191 = r464190 + r464189;
double r464192 = r464191 + r464189;
return r464192;
}
double f(double x, double y, double z) {
double r464193 = z;
double r464194 = 3.0;
double r464195 = cbrt(r464194);
double r464196 = 2.0;
double r464197 = pow(r464195, r464196);
double r464198 = r464193 * r464197;
double r464199 = r464198 * r464193;
double r464200 = cbrt(r464197);
double r464201 = r464199 * r464200;
double r464202 = cbrt(r464195);
double r464203 = r464201 * r464202;
double r464204 = x;
double r464205 = y;
double r464206 = r464204 * r464205;
double r464207 = r464203 + r464206;
return r464207;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
Initial program 0.1
Simplified0.1
rmApplied add-cube-cbrt0.1
Applied associate-*r*0.2
rmApplied add-cube-cbrt0.2
Applied cbrt-prod0.2
Applied associate-*r*0.2
Simplified0.2
rmApplied associate-*r*0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019174
(FPCore (x y z)
:name "Linear.Quaternion:$c/ from linear-1.19.1.3, A"
:herbie-target
(+ (* (* 3.0 z) z) (* y x))
(+ (+ (+ (* x y) (* z z)) (* z z)) (* z z)))