20 #ifndef VC_COMMON_TRIGONOMETRIC_H
21 #define VC_COMMON_TRIGONOMETRIC_H
23 #ifndef VC__USE_NAMESPACE
24 #error "Do not include Vc/common/trigonometric.h outside of Vc itself"
33 using Vc::VC__USE_NAMESPACE::Vector;
41 #if defined(VC_IMPL_XOP) && defined(VC_IMPL_FMA4)
50 template<
typename T>
static Vector<T>
sin(
const Vector<T> &_x);
51 template<
typename T>
static Vector<T>
cos(
const Vector<T> &_x);
52 template<
typename T>
static void sincos(
const Vector<T> &_x, Vector<T> *_sin, Vector<T> *_cos);
53 template<
typename T>
static Vector<T>
asin (
const Vector<T> &_x);
54 template<
typename T>
static Vector<T>
atan (
const Vector<T> &_x);
55 template<
typename T>
static Vector<T>
atan2(
const Vector<T> &
y,
const Vector<T> &
x);
83 #endif // VC_COMMON_TRIGONOMETRIC_H
Support for XOP instructions.
x86 SSE + SSE2 + SSE3 + SSSE3 + SSE4.1 + SSE4.2
static Vc_ALWAYS_INLINE Vc_PURE Vector< T > atan2(const Vector< T > &y, const Vector< T > &x)
Support for FMA4 instructions.
static Vector< T > cos(const Vector< T > &_x)
static Vc_ALWAYS_INLINE Vc_PURE Vector< T > asin(const Vector< T > &_x)
ImplementationT< MapImpl< VC_IMPL >::Value > TrigonometricImplementation
static Vector< T > asin(const Vector< T > &_x)
static Vector< T > atan(const Vector< T > &_x)
static Vc_ALWAYS_INLINE void sincos(const Vector< T > &_x, Vector< T > *_sin, Vector< T > *_cos)
static void sincos(const Vector< T > &_x, Vector< T > *_sin, Vector< T > *_cos)
static Vc_ALWAYS_INLINE Vc_PURE Vector< T > cos(const Vector< T > &_x)
static Vector< T > atan2(const Vector< T > &y, const Vector< T > &x)
static Vc_ALWAYS_INLINE Vc_PURE Vector< T > sin(const Vector< T > &_x)
static Vc_ALWAYS_INLINE Vc_PURE Vector< T > atan(const Vector< T > &_x)
#define VC__USE_NAMESPACE
static Vector< T > sin(const Vector< T > &_x)