\frac{1 - \cos x}{\sin x}\begin{array}{l}
\mathbf{if}\;\frac{1 - \cos x}{\sin x} \le -0.0128247688256291088:\\
\;\;\;\;\frac{e^{\sqrt[3]{{\left(\log \left({1}^{3} - {\left(\cos x\right)}^{3}\right)\right)}^{3}} - \log \left(1 \cdot 1 + \left(\cos x \cdot \cos x + 1 \cdot \cos x\right)\right)}}{\sin x}\\
\mathbf{elif}\;\frac{1 - \cos x}{\sin x} \le -0.0:\\
\;\;\;\;\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{240} \cdot {x}^{5} + \frac{1}{2} \cdot x\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\frac{1 - \cos x}{\sin x}}\right)\\
\end{array}double code(double x) {
return ((1.0 - cos(x)) / sin(x));
}
double code(double x) {
double VAR;
if ((((1.0 - cos(x)) / sin(x)) <= -0.012824768825629109)) {
VAR = (exp((cbrt(pow(log((pow(1.0, 3.0) - pow(cos(x), 3.0))), 3.0)) - log(((1.0 * 1.0) + ((cos(x) * cos(x)) + (1.0 * cos(x))))))) / sin(x));
} else {
double VAR_1;
if ((((1.0 - cos(x)) / sin(x)) <= -0.0)) {
VAR_1 = ((0.041666666666666664 * pow(x, 3.0)) + ((0.004166666666666667 * pow(x, 5.0)) + (0.5 * x)));
} else {
VAR_1 = log(exp(((1.0 - cos(x)) / sin(x))));
}
VAR = VAR_1;
}
return VAR;
}




Bits error versus x
Results
| Original | 30.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.7 |
if (/ (- 1.0 (cos x)) (sin x)) < -0.012824768825629109Initial program 0.8
rmApplied add-exp-log0.8
rmApplied flip3--0.9
Applied log-div0.9
rmApplied add-cbrt-cube1.0
Simplified1.0
if -0.012824768825629109 < (/ (- 1.0 (cos x)) (sin x)) < -0.0Initial program 60.1
Taylor expanded around 0 0.1
if -0.0 < (/ (- 1.0 (cos x)) (sin x)) Initial program 1.4
rmApplied add-log-exp1.5
Final simplification0.7
herbie shell --seed 2020103
(FPCore (x)
:name "tanhf (example 3.4)"
:precision binary64
:herbie-expected 2
:herbie-target
(tan (/ x 2))
(/ (- 1 (cos x)) (sin x)))