\frac{1 - \cos x}{\sin x}\begin{array}{l}
\mathbf{if}\;x \le -0.02234465016774620296780007322468009078875:\\
\;\;\;\;\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\sin x \cdot \left(\cos x \cdot \cos x + \left(1 + \cos x\right) \cdot 1\right)}\\
\mathbf{elif}\;x \le 0.02382325057837424500672973692871892126277:\\
\;\;\;\;{x}^{5} \cdot \frac{1}{240} + x \cdot \left(x \cdot \left(\frac{1}{24} \cdot x\right) + \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sin x} - \frac{\cos x}{\sin x}\\
\end{array}double f(double x) {
double r4216477 = 1.0;
double r4216478 = x;
double r4216479 = cos(r4216478);
double r4216480 = r4216477 - r4216479;
double r4216481 = sin(r4216478);
double r4216482 = r4216480 / r4216481;
return r4216482;
}
double f(double x) {
double r4216483 = x;
double r4216484 = -0.022344650167746203;
bool r4216485 = r4216483 <= r4216484;
double r4216486 = 1.0;
double r4216487 = 3.0;
double r4216488 = pow(r4216486, r4216487);
double r4216489 = cos(r4216483);
double r4216490 = pow(r4216489, r4216487);
double r4216491 = r4216488 - r4216490;
double r4216492 = sin(r4216483);
double r4216493 = r4216489 * r4216489;
double r4216494 = r4216486 + r4216489;
double r4216495 = r4216494 * r4216486;
double r4216496 = r4216493 + r4216495;
double r4216497 = r4216492 * r4216496;
double r4216498 = r4216491 / r4216497;
double r4216499 = 0.023823250578374245;
bool r4216500 = r4216483 <= r4216499;
double r4216501 = 5.0;
double r4216502 = pow(r4216483, r4216501);
double r4216503 = 0.004166666666666667;
double r4216504 = r4216502 * r4216503;
double r4216505 = 0.041666666666666664;
double r4216506 = r4216505 * r4216483;
double r4216507 = r4216483 * r4216506;
double r4216508 = 0.5;
double r4216509 = r4216507 + r4216508;
double r4216510 = r4216483 * r4216509;
double r4216511 = r4216504 + r4216510;
double r4216512 = r4216486 / r4216492;
double r4216513 = r4216489 / r4216492;
double r4216514 = r4216512 - r4216513;
double r4216515 = r4216500 ? r4216511 : r4216514;
double r4216516 = r4216485 ? r4216498 : r4216515;
return r4216516;
}




Bits error versus x
Results
| Original | 29.9 |
|---|---|
| Target | 0 |
| Herbie | 0.6 |
if x < -0.022344650167746203Initial program 0.9
rmApplied flip3--1.0
Applied associate-/l/1.0
Simplified1.0
if -0.022344650167746203 < x < 0.023823250578374245Initial program 59.8
Taylor expanded around 0 0.0
Simplified0.0
if 0.023823250578374245 < x Initial program 0.9
rmApplied div-sub1.2
Final simplification0.6
herbie shell --seed 2019200
(FPCore (x)
:name "tanhf (example 3.4)"
:herbie-expected 2
:herbie-target
(tan (/ x 2.0))
(/ (- 1.0 (cos x)) (sin x)))