\frac{1 - \cos x}{\sin x}\begin{array}{l}
\mathbf{if}\;x \le -0.02408789324737697218337117988085083197802:\\
\;\;\;\;\frac{1}{\frac{\sin x}{1 - \cos x}}\\
\mathbf{elif}\;x \le 0.02070648332399807264869728840039897477254:\\
\;\;\;\;\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{240} \cdot {x}^{5} + \frac{1}{2} \cdot x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{{1}^{3} - \sqrt[3]{{\left({\left(\cos x\right)}^{3}\right)}^{3}}}{\sin x \cdot \left(\cos x \cdot \left(1 + \cos x\right) + 1 \cdot 1\right)}\\
\end{array}double f(double x) {
double r60125 = 1.0;
double r60126 = x;
double r60127 = cos(r60126);
double r60128 = r60125 - r60127;
double r60129 = sin(r60126);
double r60130 = r60128 / r60129;
return r60130;
}
double f(double x) {
double r60131 = x;
double r60132 = -0.024087893247376972;
bool r60133 = r60131 <= r60132;
double r60134 = 1.0;
double r60135 = sin(r60131);
double r60136 = 1.0;
double r60137 = cos(r60131);
double r60138 = r60136 - r60137;
double r60139 = r60135 / r60138;
double r60140 = r60134 / r60139;
double r60141 = 0.020706483323998073;
bool r60142 = r60131 <= r60141;
double r60143 = 0.041666666666666664;
double r60144 = 3.0;
double r60145 = pow(r60131, r60144);
double r60146 = r60143 * r60145;
double r60147 = 0.004166666666666667;
double r60148 = 5.0;
double r60149 = pow(r60131, r60148);
double r60150 = r60147 * r60149;
double r60151 = 0.5;
double r60152 = r60151 * r60131;
double r60153 = r60150 + r60152;
double r60154 = r60146 + r60153;
double r60155 = pow(r60136, r60144);
double r60156 = pow(r60137, r60144);
double r60157 = pow(r60156, r60144);
double r60158 = cbrt(r60157);
double r60159 = r60155 - r60158;
double r60160 = r60136 + r60137;
double r60161 = r60137 * r60160;
double r60162 = r60136 * r60136;
double r60163 = r60161 + r60162;
double r60164 = r60135 * r60163;
double r60165 = r60159 / r60164;
double r60166 = r60142 ? r60154 : r60165;
double r60167 = r60133 ? r60140 : r60166;
return r60167;
}




Bits error versus x
Results
| Original | 29.9 |
|---|---|
| Target | 0.0 |
| Herbie | 0.5 |
if x < -0.024087893247376972Initial program 0.9
rmApplied clear-num1.0
if -0.024087893247376972 < x < 0.020706483323998073Initial program 59.8
Taylor expanded around 0 0.0
if 0.020706483323998073 < x Initial program 0.9
rmApplied flip3--1.0
Applied associate-/l/1.0
Simplified1.0
rmApplied add-cbrt-cube1.1
Simplified1.1
Final simplification0.5
herbie shell --seed 2019323
(FPCore (x)
:name "tanhf (example 3.4)"
:precision binary64
:herbie-expected 2
:herbie-target
(tan (/ x 2))
(/ (- 1 (cos x)) (sin x)))