\frac{x \cdot \frac{\sin y}{y}}{z}\left(x \cdot \frac{\sqrt[3]{\frac{\sin y}{y}} \cdot \sqrt[3]{\frac{\sin y}{y}}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right) \cdot \frac{\sqrt[3]{\frac{\sin y}{y}}}{\sqrt[3]{z}}double f(double x, double y, double z) {
double r307608 = x;
double r307609 = y;
double r307610 = sin(r307609);
double r307611 = r307610 / r307609;
double r307612 = r307608 * r307611;
double r307613 = z;
double r307614 = r307612 / r307613;
return r307614;
}
double f(double x, double y, double z) {
double r307615 = x;
double r307616 = y;
double r307617 = sin(r307616);
double r307618 = r307617 / r307616;
double r307619 = cbrt(r307618);
double r307620 = r307619 * r307619;
double r307621 = z;
double r307622 = cbrt(r307621);
double r307623 = r307622 * r307622;
double r307624 = r307620 / r307623;
double r307625 = r307615 * r307624;
double r307626 = r307619 / r307622;
double r307627 = r307625 * r307626;
return r307627;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.6 |
|---|---|
| Target | 0.2 |
| Herbie | 1.5 |
Initial program 2.6
rmApplied *-un-lft-identity2.6
Applied times-frac2.7
Simplified2.7
rmApplied add-cube-cbrt3.5
Applied add-cube-cbrt3.6
Applied times-frac3.6
Applied associate-*r*1.5
Final simplification1.5
herbie shell --seed 2019305
(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))