\left(\left(x \cdot y + z \cdot z\right) + z \cdot z\right) + z \cdot z
x \cdot y + z \cdot \left(z \cdot 3\right)
double f(double x, double y, double z) {
double r27335093 = x;
double r27335094 = y;
double r27335095 = r27335093 * r27335094;
double r27335096 = z;
double r27335097 = r27335096 * r27335096;
double r27335098 = r27335095 + r27335097;
double r27335099 = r27335098 + r27335097;
double r27335100 = r27335099 + r27335097;
return r27335100;
}
double f(double x, double y, double z) {
double r27335101 = x;
double r27335102 = y;
double r27335103 = r27335101 * r27335102;
double r27335104 = z;
double r27335105 = 3.0;
double r27335106 = r27335104 * r27335105;
double r27335107 = r27335104 * r27335106;
double r27335108 = r27335103 + r27335107;
return r27335108;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Simplified0.1
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019179
(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)))