\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 r321424 = x;
double r321425 = y;
double r321426 = sin(r321425);
double r321427 = r321426 / r321425;
double r321428 = r321424 * r321427;
double r321429 = z;
double r321430 = r321428 / r321429;
return r321430;
}
double f(double x, double y, double z) {
double r321431 = x;
double r321432 = y;
double r321433 = sin(r321432);
double r321434 = r321433 / r321432;
double r321435 = cbrt(r321434);
double r321436 = r321435 * r321435;
double r321437 = z;
double r321438 = cbrt(r321437);
double r321439 = r321438 * r321438;
double r321440 = r321436 / r321439;
double r321441 = r321431 * r321440;
double r321442 = r321435 / r321438;
double r321443 = r321441 * r321442;
return r321443;
}




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 +o rules:numerics
(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))