\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 r558373 = x;
double r558374 = y;
double r558375 = sin(r558374);
double r558376 = r558375 / r558374;
double r558377 = r558373 * r558376;
double r558378 = z;
double r558379 = r558377 / r558378;
return r558379;
}
double f(double x, double y, double z) {
double r558380 = x;
double r558381 = y;
double r558382 = sin(r558381);
double r558383 = r558382 / r558381;
double r558384 = cbrt(r558383);
double r558385 = r558384 * r558384;
double r558386 = z;
double r558387 = cbrt(r558386);
double r558388 = r558387 * r558387;
double r558389 = r558385 / r558388;
double r558390 = r558380 * r558389;
double r558391 = r558384 / r558387;
double r558392 = r558390 * r558391;
return r558392;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.6 |
|---|---|
| Target | 0.3 |
| Herbie | 1.5 |
Initial program 2.6
rmApplied *-un-lft-identity2.6
Applied times-frac2.8
Simplified2.8
rmApplied add-cube-cbrt3.6
Applied add-cube-cbrt3.6
Applied times-frac3.7
Applied associate-*r*1.5
Final simplification1.5
herbie shell --seed 2020024 +o rules:numerics
(FPCore (x y z)
:name "Linear.Quaternion:$ctanh from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< z -4.2173720203427147e-29) (/ (* x (/ 1 (/ y (sin y)))) z) (if (< z 4.446702369113811e+64) (/ x (* z (/ y (sin y)))) (/ (* x (/ 1 (/ y (sin y)))) z)))
(/ (* x (/ (sin y) y)) z))