\frac{x \cdot \frac{\sin y}{y}}{z}\frac{\frac{1}{\frac{y}{\sin y}}}{z} \cdot xdouble f(double x, double y, double z) {
double r386218 = x;
double r386219 = y;
double r386220 = sin(r386219);
double r386221 = r386220 / r386219;
double r386222 = r386218 * r386221;
double r386223 = z;
double r386224 = r386222 / r386223;
return r386224;
}
double f(double x, double y, double z) {
double r386225 = 1.0;
double r386226 = y;
double r386227 = sin(r386226);
double r386228 = r386226 / r386227;
double r386229 = r386225 / r386228;
double r386230 = z;
double r386231 = r386229 / r386230;
double r386232 = x;
double r386233 = r386231 * r386232;
return r386233;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.6 |
|---|---|
| Target | 0.3 |
| Herbie | 2.7 |
Initial program 2.6
Simplified2.6
rmApplied clear-num2.7
Final simplification2.7
herbie shell --seed 2019194
(FPCore (x y z)
:name "Linear.Quaternion:$ctanh from linear-1.19.1.3"
:herbie-target
(if (< z -4.2173720203427147e-29) (/ (* x (/ 1.0 (/ y (sin y)))) z) (if (< z 4.446702369113811e+64) (/ x (* z (/ y (sin y)))) (/ (* x (/ 1.0 (/ y (sin y)))) z)))
(/ (* x (/ (sin y) y)) z))