\frac{1 - \cos x}{\sin x}\begin{array}{l}
\mathbf{if}\;\frac{1 - \cos x}{\sin x} \le \frac{-3517324383654103}{72057594037927936}:\\
\;\;\;\;\frac{\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\cos x \cdot \left(\cos x + 1\right) + 1 \cdot 1}}{\sin x}\\
\mathbf{elif}\;\frac{1 - \cos x}{\sin x} \le \frac{4505605101079521}{590295810358705651712}:\\
\;\;\;\;\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{240} \cdot {x}^{5} + \frac{1}{2} \cdot x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sin x} \cdot \left(\sqrt[3]{1} \cdot \left(1 - \cos x\right)\right)\\
\end{array}double f(double x) {
double r47295 = 1.0;
double r47296 = x;
double r47297 = cos(r47296);
double r47298 = r47295 - r47297;
double r47299 = sin(r47296);
double r47300 = r47298 / r47299;
return r47300;
}
double f(double x) {
double r47301 = 1.0;
double r47302 = x;
double r47303 = cos(r47302);
double r47304 = r47301 - r47303;
double r47305 = sin(r47302);
double r47306 = r47304 / r47305;
double r47307 = -3517324383654103.0;
double r47308 = 7.205759403792794e+16;
double r47309 = r47307 / r47308;
bool r47310 = r47306 <= r47309;
double r47311 = 3.0;
double r47312 = pow(r47301, r47311);
double r47313 = pow(r47303, r47311);
double r47314 = r47312 - r47313;
double r47315 = r47303 + r47301;
double r47316 = r47303 * r47315;
double r47317 = r47301 * r47301;
double r47318 = r47316 + r47317;
double r47319 = r47314 / r47318;
double r47320 = r47319 / r47305;
double r47321 = 4505605101079521.0;
double r47322 = 5.902958103587057e+20;
double r47323 = r47321 / r47322;
bool r47324 = r47306 <= r47323;
double r47325 = 0.041666666666666664;
double r47326 = pow(r47302, r47311);
double r47327 = r47325 * r47326;
double r47328 = 0.004166666666666667;
double r47329 = 5.0;
double r47330 = pow(r47302, r47329);
double r47331 = r47328 * r47330;
double r47332 = 0.5;
double r47333 = r47332 * r47302;
double r47334 = r47331 + r47333;
double r47335 = r47327 + r47334;
double r47336 = 1.0;
double r47337 = cbrt(r47336);
double r47338 = r47337 * r47337;
double r47339 = r47338 / r47305;
double r47340 = r47337 * r47304;
double r47341 = r47339 * r47340;
double r47342 = r47324 ? r47335 : r47341;
double r47343 = r47310 ? r47320 : r47342;
return r47343;
}




Bits error versus x
Results
| Original | 30.0 |
|---|---|
| Target | 0 |
| Herbie | 0.9 |
if (/ (- 1.0 (cos x)) (sin x)) < -0.04881268144760341Initial program 0.7
rmApplied flip3--0.8
Simplified0.8
if -0.04881268144760341 < (/ (- 1.0 (cos x)) (sin x)) < 7.632791935862793e-06Initial program 59.3
Taylor expanded around 0 0.9
if 7.632791935862793e-06 < (/ (- 1.0 (cos x)) (sin x)) Initial program 1.1
rmApplied clear-num1.1
rmApplied div-inv1.2
Applied add-cube-cbrt1.2
Applied times-frac1.2
Simplified1.2
Final simplification0.9
herbie shell --seed 197574269
(FPCore (x)
:name "tanhf (example 3.4)"
:precision binary64
:herbie-expected 2
:herbie-target
(tan (/ x 2))
(/ (- 1 (cos x)) (sin x)))