\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 r296779 = x;
double r296780 = y;
double r296781 = sin(r296780);
double r296782 = r296781 / r296780;
double r296783 = r296779 * r296782;
double r296784 = z;
double r296785 = r296783 / r296784;
return r296785;
}
double f(double x, double y, double z) {
double r296786 = x;
double r296787 = 24.599386322894272;
bool r296788 = r296786 <= r296787;
double r296789 = z;
double r296790 = y;
double r296791 = sin(r296790);
double r296792 = r296791 / r296790;
double r296793 = r296789 / r296792;
double r296794 = r296786 / r296793;
double r296795 = r296786 * r296791;
double r296796 = r296795 / r296790;
double r296797 = r296796 / r296789;
double r296798 = r296788 ? r296794 : r296797;
return r296798;
}




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))