\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 r46275 = 1.0;
double r46276 = x;
double r46277 = cos(r46276);
double r46278 = r46275 - r46277;
double r46279 = sin(r46276);
double r46280 = r46278 / r46279;
return r46280;
}
double f(double x) {
double r46281 = x;
double r46282 = -0.024087893247376972;
bool r46283 = r46281 <= r46282;
double r46284 = 1.0;
double r46285 = sin(r46281);
double r46286 = 1.0;
double r46287 = cos(r46281);
double r46288 = r46286 - r46287;
double r46289 = r46285 / r46288;
double r46290 = r46284 / r46289;
double r46291 = 0.020706483323998073;
bool r46292 = r46281 <= r46291;
double r46293 = 0.041666666666666664;
double r46294 = 3.0;
double r46295 = pow(r46281, r46294);
double r46296 = r46293 * r46295;
double r46297 = 0.004166666666666667;
double r46298 = 5.0;
double r46299 = pow(r46281, r46298);
double r46300 = r46297 * r46299;
double r46301 = 0.5;
double r46302 = r46301 * r46281;
double r46303 = r46300 + r46302;
double r46304 = r46296 + r46303;
double r46305 = pow(r46286, r46294);
double r46306 = pow(r46287, r46294);
double r46307 = pow(r46306, r46294);
double r46308 = cbrt(r46307);
double r46309 = r46305 - r46308;
double r46310 = r46286 + r46287;
double r46311 = r46287 * r46310;
double r46312 = r46286 * r46286;
double r46313 = r46311 + r46312;
double r46314 = r46285 * r46313;
double r46315 = r46309 / r46314;
double r46316 = r46292 ? r46304 : r46315;
double r46317 = r46283 ? r46290 : r46316;
return r46317;
}




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