llvm-project/libclc/generic/lib/math/tan.inc

18 lines
420 B
C++

/*
* 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