33 #include "scalar/vector.h" 
   36 # include "avx/vector.h" 
   37 #elif defined(Vc_IMPL_SSE) 
   38 # include "sse/vector.h" 
   41 #if defined(Vc_IMPL_MIC) 
   42 # include "mic/vector.h" 
   45 namespace Vc_VERSIONED_NAMESPACE
 
  153 #if defined INT64_MAX && defined UINT64_MAX 
  159 #if defined INT32_MAX && defined UINT32_MAX 
  165 #if defined INT16_MAX && defined UINT16_MAX 
  171 #if defined INT8_MAX && defined UINT8_MAX 
  179     static_assert(double_v::Size == 
Vc_DOUBLE_V_SIZE, 
"Vc_DOUBLE_V_SIZE macro defined to an incorrect value");
 
  180     static_assert(float_v::Size  == 
Vc_FLOAT_V_SIZE , 
"Vc_FLOAT_V_SIZE macro defined to an incorrect value ");
 
  181     static_assert(int_v::Size    == 
Vc_INT_V_SIZE   , 
"Vc_INT_V_SIZE macro defined to an incorrect value   ");
 
  182     static_assert(uint_v::Size   == 
Vc_UINT_V_SIZE  , 
"Vc_UINT_V_SIZE macro defined to an incorrect value  ");
 
  183     static_assert(short_v::Size  == 
Vc_SHORT_V_SIZE , 
"Vc_SHORT_V_SIZE macro defined to an incorrect value ");
 
  184     static_assert(ushort_v::Size == 
Vc_USHORT_V_SIZE, 
"Vc_USHORT_V_SIZE macro defined to an incorrect value");
 
  190 #include "common/operators.h" 
  192 #include "common/simdarray.h" 
  196 #include "common/alignedbase.h" 
  197 namespace Vc_VERSIONED_NAMESPACE {
 
  222 #define Vc_VECTOR_DECLARED_ 1 
  224 #include "scalar/helperimpl.h" 
  225 #include "scalar/math.h" 
  226 #include "scalar/simd_cast_caller.tcc" 
  227 #if defined(Vc_IMPL_SSE) 
  228 # include "sse/helperimpl.h" 
  229 # include "sse/math.h" 
  230 # include "sse/simd_cast_caller.tcc" 
  232 #if defined(Vc_IMPL_AVX) 
  233 # include "avx/helperimpl.h" 
  234 # include "avx/math.h" 
  235 # include "avx/simd_cast_caller.tcc" 
  237 #if defined(Vc_IMPL_MIC) 
  238 # include "mic/helperimpl.h" 
  239 # include "mic/math.h" 
  240 # include "mic/simd_cast_caller.tcc" 
  243 #include "common/math.h" 
  252 #include "common/vectortuple.h" 
  253 #include "common/algorithms.h" 
  254 #include "common/where.h" 
  255 #include "common/iif.h" 
  257 #ifndef Vc_NO_STD_FUNCTIONS 
  287 #endif // VC_VECTOR_H_ 
Vc::Vector< T > frexp(const Vc::Vector< T > &x, Vc::SimdArray< int, size()> *e)
Convert floating-point number to fractional and integral components. 
 
Vc::Vector< T > log2(const Vc::Vector< T > &v)
 
Vc::Vector< T > exp(const Vc::Vector< T > &v)
 
The main vector class for expressing data parallelism. 
 
Vc::Vector< T > sin(const Vc::Vector< T > &v)
 
Vc::Vector< T > cos(const Vc::Vector< T > &v)
 
#define Vc_UINT_V_SIZE
An integer (for use with the preprocessor) that gives the number of entries in a uint_v. 
 
Vc::Vector< T > min(const Vc::Vector< T > &x, const Vc::Vector< T > &y)
 
Vc::Vector< T > ldexp(Vc::Vector< T > x, Vc::SimdArray< int, size()> e)
Multiply floating-point number by integral power of 2. 
 
constexpr std::size_t VectorAlignment
Specifies the most conservative memory alignment necessary for Vector objects with default VectorA...
 
#define Vc_SHORT_V_SIZE
An integer (for use with the preprocessor) that gives the number of entries in a short_v. 
 
Vc::Vector< T > abs(const Vc::Vector< T > &v)
Returns the absolute value of v. 
 
Vc::Vector< T > max(const Vc::Vector< T > &x, const Vc::Vector< T > &y)
 
Vc::Vector< T > log(const Vc::Vector< T > &v)
 
AlignedBase< Detail::max(alignof(Vector< float >), alignof(Vector< double >), alignof(Vector< ullong >), alignof(Vector< llong >), alignof(Vector< ulong >), alignof(Vector< long >), alignof(Vector< uint >), alignof(Vector< int >), alignof(Vector< ushort >), alignof(Vector< short >), alignof(Vector< uchar >), alignof(Vector< schar >))> VectorAlignedBase
Helper type to ensure suitable alignment for any Vc::Vector type (using the default VectorAbi)...
 
Vc::Vector< T > fma(Vc::Vector< T > a, Vc::Vector< T > b, Vc::Vector< T > c)
Multiplies a with b and then adds c, without rounding between the multiplication and the addition...
 
Vc::Vector< T > round(const Vc::Vector< T > &v)
Returns the closest integer to v; 0.5 is rounded to even. 
 
#define Vc_USHORT_V_SIZE
An integer (for use with the preprocessor) that gives the number of entries in a ushort_v. 
 
Vc::Vector< T > log10(const Vc::Vector< T > &v)
 
Vector< double > double_v
vector of double precision 
 
#define Vc_DOUBLE_V_SIZE
An integer (for use with the preprocessor) that gives the number of entries in a double_v. 
 
#define Vc_FLOAT_V_SIZE
An integer (for use with the preprocessor) that gives the number of entries in a float_v. 
 
Vc::Vector< T > atan2(const Vc::Vector< T > &y, const Vc::Vector< T > &x)
Calculates the angle given the lengths of the opposite and adjacent legs in a right triangle...
 
Vc::Vector< T > atan(const Vc::Vector< T > &v)
 
Vc::Vector< T > asin(const Vc::Vector< T > &v)
 
Vc::Mask< T > isfinite(const Vc::Vector< T > &x)
 
The main SIMD mask class. 
 
Vc::Mask< T > isnan(const Vc::Vector< T > &x)
 
#define Vc_INT_V_SIZE
An integer (for use with the preprocessor) that gives the number of entries in a int_v. 
 
constexpr std::size_t MemoryAlignment
Specifies the most conservative memory alignment necessary for aligned loads and stores of Vector typ...
 
Vc::Vector< T > sqrt(const Vc::Vector< T > &v)
Returns the square root of v. 
 
AlignedBase< Detail::max(Vector< float >::MemoryAlignment, Vector< double >::MemoryAlignment, Vector< ullong >::MemoryAlignment, Vector< llong >::MemoryAlignment, Vector< ulong >::MemoryAlignment, Vector< long >::MemoryAlignment, Vector< uint >::MemoryAlignment, Vector< int >::MemoryAlignment, Vector< ushort >::MemoryAlignment, Vector< short >::MemoryAlignment, Vector< uchar >::MemoryAlignment, Vector< schar >::MemoryAlignment)> MemoryAlignedBase
Helper class to ensure suitable alignment for arrays of scalar objects for any Vc::Vector type (us...