summaryrefslogtreecommitdiffstats
path: root/libclc/generic/lib/math/tan.inc
blob: b9ce33ef82313f41d8b2c0768c4f8fc890f96dd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
 * Note: tan(x) = sin(x)/cos(x) also, but the final assembly ends up being
 *       twice as long for R600 (maybe for others as well).
 */

#if __CLC_FPSIZE == 32
#define __CLC_CONST(x) x ## f
#else
#define __CLC_CONST(x) x
#endif

_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE tan(__CLC_GENTYPE x) {
  __CLC_GENTYPE sinx = sin(x);
  return sinx / sqrt( (__CLC_GENTYPE) __CLC_CONST(1.0) - (sinx*sinx) );
}

#undef __CLC_CONST
OpenPOWER on IntegriCloud