\frac{x \cdot \frac{\sin y}{y}}{z}\frac{\frac{x \cdot \sin y}{y}}{z}double f(double x, double y, double z) {
double r365772 = x;
double r365773 = y;
double r365774 = sin(r365773);
double r365775 = r365774 / r365773;
double r365776 = r365772 * r365775;
double r365777 = z;
double r365778 = r365776 / r365777;
return r365778;
}
double f(double x, double y, double z) {
double r365779 = x;
double r365780 = y;
double r365781 = sin(r365780);
double r365782 = r365779 * r365781;
double r365783 = r365782 / r365780;
double r365784 = z;
double r365785 = r365783 / r365784;
return r365785;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.8 |
|---|---|
| Target | 0.4 |
| Herbie | 8.1 |
if x < -1.7143815842868617e+86Initial program 0.2
rmApplied associate-*r/0.3
if -1.7143815842868617e+86 < x < 5.988929035362862e-61Initial program 4.7
rmApplied associate-/l*0.4
if 5.988929035362862e-61 < x Initial program 0.3
rmApplied clear-num0.4
Final simplification8.1
herbie shell --seed 2019308
(FPCore (x y z)
:name "Linear.Quaternion:$ctanh from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< z -4.21737202034271466e-29) (/ (* x (/ 1 (/ y (sin y)))) z) (if (< z 4.44670236911381103e64) (/ x (* z (/ y (sin y)))) (/ (* x (/ 1 (/ y (sin y)))) z)))
(/ (* x (/ (sin y) y)) z))