\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 r68016 = 1.0;
double r68017 = x;
double r68018 = cos(r68017);
double r68019 = r68016 - r68018;
double r68020 = sin(r68017);
double r68021 = r68019 / r68020;
return r68021;
}
double f(double x) {
double r68022 = x;
double r68023 = -0.024087893247376972;
bool r68024 = r68022 <= r68023;
double r68025 = 1.0;
double r68026 = sin(r68022);
double r68027 = 1.0;
double r68028 = cos(r68022);
double r68029 = r68027 - r68028;
double r68030 = r68026 / r68029;
double r68031 = r68025 / r68030;
double r68032 = 0.020706483323998073;
bool r68033 = r68022 <= r68032;
double r68034 = 0.041666666666666664;
double r68035 = 3.0;
double r68036 = pow(r68022, r68035);
double r68037 = r68034 * r68036;
double r68038 = 0.004166666666666667;
double r68039 = 5.0;
double r68040 = pow(r68022, r68039);
double r68041 = r68038 * r68040;
double r68042 = 0.5;
double r68043 = r68042 * r68022;
double r68044 = r68041 + r68043;
double r68045 = r68037 + r68044;
double r68046 = pow(r68027, r68035);
double r68047 = pow(r68028, r68035);
double r68048 = pow(r68047, r68035);
double r68049 = cbrt(r68048);
double r68050 = r68046 - r68049;
double r68051 = r68027 + r68028;
double r68052 = r68028 * r68051;
double r68053 = r68027 * r68027;
double r68054 = r68052 + r68053;
double r68055 = r68026 * r68054;
double r68056 = r68050 / r68055;
double r68057 = r68033 ? r68045 : r68056;
double r68058 = r68024 ? r68031 : r68057;
return r68058;
}




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