\frac{x \cdot \frac{\sin y}{y}}{z}\begin{array}{l}
\mathbf{if}\;x \le 24.59938632289427218324817658867686986923:\\
\;\;\;\;\frac{x}{\frac{z}{\frac{\sin y}{y}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x \cdot \sin y}{y}}{z}\\
\end{array}double f(double x, double y, double z) {
double r314031 = x;
double r314032 = y;
double r314033 = sin(r314032);
double r314034 = r314033 / r314032;
double r314035 = r314031 * r314034;
double r314036 = z;
double r314037 = r314035 / r314036;
return r314037;
}
double f(double x, double y, double z) {
double r314038 = x;
double r314039 = 24.599386322894272;
bool r314040 = r314038 <= r314039;
double r314041 = z;
double r314042 = y;
double r314043 = sin(r314042);
double r314044 = r314043 / r314042;
double r314045 = r314041 / r314044;
double r314046 = r314038 / r314045;
double r314047 = r314038 * r314043;
double r314048 = r314047 / r314042;
double r314049 = r314048 / r314041;
double r314050 = r314040 ? r314046 : r314049;
return r314050;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.7 |
|---|---|
| Target | 0.3 |
| Herbie | 1.3 |
if x < 24.599386322894272Initial program 3.4
rmApplied clear-num3.9
rmApplied *-un-lft-identity3.9
Applied times-frac2.3
Applied associate-/r*1.7
Simplified1.6
if 24.599386322894272 < x Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied associate-/r*0.2
Simplified0.2
Final simplification1.3
herbie shell --seed 2019323
(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))