\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 r461952 = x;
double r461953 = y;
double r461954 = sin(r461953);
double r461955 = r461954 / r461953;
double r461956 = r461952 * r461955;
double r461957 = z;
double r461958 = r461956 / r461957;
return r461958;
}
double f(double x, double y, double z) {
double r461959 = 1.0;
double r461960 = y;
double r461961 = sin(r461960);
double r461962 = r461960 / r461961;
double r461963 = r461959 / r461962;
double r461964 = z;
double r461965 = r461963 / r461964;
double r461966 = x;
double r461967 = r461965 * r461966;
return r461967;
}




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))